サーバー設定 · 3 min read · Sep 28, 2025

Debian 6.0 に ISPConfig 3 を使用して Web、メール、MySQL データベースクラスタをインストールする

Debian 6.0 に ISPConfig 3 を使用して Web、メール、MySQL データベースクラスタをインストールする

バージョン 1.0
著者: Till Brehm

このチュートリアルでは、冗長性、高可用性、負荷分散のために使用されるクラスタ化された Web、メール、データベース、DNS サーバーのインストールについて説明します。Debian 6 と ISPConfig 3 コントロールパネルを使用します。MySQL マスター/マスター複製を使用して、サーバー間で MySQL クライアントデータベースを複製し、Unison を使用して /var/www (ウェブサイト) と /var/vmail (メールアカウントデータ) フォルダーを同期します。

1 2 つのベースシステムの設定

このセットアップでは、ISPConfig コントロールパネルインターフェースを実行するマスターサーバーと、マスターサーバーの Web (apache)、メール (postfix と dovecot)、データベース (MySQL) サービスをミラーリングするスレーブサーバーが 1 台ずつあります。

クラスタ化されたセットアップをインストールするには、Debian 6.0 の最小インストールを持つ 2 台のサーバーが必要です。基本セットアップは、次のチュートリアルのステップ 1 - 8 に記載されています:

https://www.howtoforge.com/perfect-server-debian-squeeze-with-bind-and-dovecot-ispconfig-3

完璧なサーバーチュートリアルのステップ 1 - 8 のみをインストールし、クラスタ化されたセットアップには異なる他のステップはインストールしないでください!

私の例では、次のホスト名と IP アドレスを 2 台のサーバーに使用します:

マスターサーバー

ホスト名: server1.example.tld
IP アドレス: 192.168.0.105

スレーブサーバー

ホスト名: server2.example.tld
IP アドレス: 192.168.0.106

次のインストール手順でこれらのホスト名または IP アドレスが発生する場合は、サーバーの IP とホスト名に合わせて変更する必要があります。

2 2 台のサーバーのインストール

次の手順は、マスターサーバーとスレーブサーバーの両方で実行する必要があります。特定のステップがマスターまたはスレーブ専用の場合は、説明に赤で注記を追加しました。

vi /etc/hosts
127.0.0.1       localhost
192.168.0.105   server1.example.tld
192.168.0.106   server2.example.tld

# IPv6 対応ホストにとっては次の行が望ましい
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

サーバーのホスト名を設定します:

echo server1.example.tld > /etc/hostname
/etc/init.d/hostname.sh start

最初のサーバーでは server1.example.tld を、2 番目のサーバーでは server2.example.tld を使用します。

sources.list ファイルを編集します…

vi /etc/apt/sources.list 

… そして、/etc/apt/sources.list に squeeze-updates リポジトリが含まれていることを確認します (これにより、ClamAV ウイルススキャナーの最新の更新を常に受け取ることができます - このプロジェクトは非常に頻繁にリリースを公開し、時には古いバージョンが動作しなくなることがあります)。

[...]  
deb http://ftp.de.debian.org/debian/ squeeze-updates main  
[...]  

次のコマンドを実行します:

apt-get update
apt-get upgrade

最新の更新をインストールします (あれば)。

NTP ( n etwork t ime p rotocol) サーバーとシステムクロックを同期することは良いアイデアです。単に次のコマンドを実行します:

apt-get -y install ntp ntpdate

これで、システム時間は常に同期されます。

サーバー 1 で:

次に、server1.example.tld でプライベート/パブリックキーのペアを作成します:

ssh-keygen -t dsa

root@server1:~# ssh-keygen -t dsa
公開/秘密の dsa キーペアを生成しています。
キーを保存するファイルを入力してください (/root/.ssh/id_dsa): <– ENTER
ディレクトリ ‘/root/.ssh’ が作成されました。
パスフレーズを入力してください (パスフレーズなしの場合は空のままにします): <– ENTER
同じパスフレーズを再度入力してください: <– ENTER
あなたの識別情報は /root/.ssh/id_dsa に保存されました。
あなたの公開鍵は /root/.ssh/id_dsa.pub に保存されました。
キーのフィンガープリントは:
1b:95:bc:4a:f4:9f:d8:ea:24:31:0f:c9:72:d5:a7:80 [email protected]
キーのランダムアート画像は:
+–[ DSA 1024]—-+
| |
| o o |
| E * . . |
| o = o o |
| . S o . |
| + O + . |
| + + + |
| o . |
| .o |
+—————–+
root@server1:~#

パスフレーズを入力しないことが重要です。そうしないと、ミラーリングは人間の介入なしでは機能しませんので、単に ENTER を押してください!

次に、公開鍵を server2.example.tld にコピーします:

ssh-copy-id -i $HOME/.ssh/id_dsa.pub [email protected]

root@server1:~# ssh-copy-id -i $HOME/.ssh/id_dsa.pub [email protected]
ホスト ‘192.168.0.101 (192.168.0.101)’ の信頼性を確立できません。
RSA キーフィンガープリントは 25:d8:7a:ee:c2:4b:1d:92:a7:3d:16:26:95:56:62:4e です。
接続を続行してもよろしいですか (yes/no)? <– yes (これは初めて server2 に接続する場合のみ表示されます)
警告: ‘192.168.0.101’ (RSA) を既知のホストのリストに永続的に追加しました。
[email protected] のパスワード: <– server2 の root パスワード
次に、”ssh ‘[email protected]’” でマシンにログインして、次のコマンドを確認します:

 .ssh/authorized_keys
追加のキーが予期しないものでないことを確認してください。

次に、server2 で server1 の公開鍵が正しく転送されているか確認します:

server2:

cat $HOME/.ssh/authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAPhiAexgEBexnw0rFG8lXwAuIsca/V+lhmv5lhF3BqUfAbL7e2sWlQlGhxZ8I2UnzZK8Ypffq6Ks+lp46yOs7MMXLqb7JBP9gkgqxyEWqOoUSt5hTE9ghupcCvE7rRMhefY5shLUnRkVH6hnCWe6yXSnH+Z8lHbcfp864GHkLDK1AAAAFQDddQckbfRG4C6LOQXTzRBpIiXzoQAAAIEAleevPHwi+a3fTDM2+Vm6EVqR5DkSLwDM7KVVNtFSkAY4GVCfhLFREsfuMkcBD9Bv2DrKF2Ay3OOh39269Z1rgYVk+/MFC6sYgB6apirMlHj3l4RR1g09LaM1OpRz7pc/GqIGsDt74D1ES2j0zrq5kslnX8wEWSHapPR0tziin6UAAACBAJHxgr+GKxAdWpxV5MkF+FTaKcxA2tWHJegjGFrYGU8BpzZ4VDFMiObuzBjZ+LrUs57BiwTGB/MQl9FKQEyEV4J+AgZCBxvg6n57YlVn6OEA0ukeJa29aFOcc0inEFfNhw2jAXt5LRyvuHD/C2gG78lwb6CxV02Z3sbTBdc43J6y [email protected]

postfix、dovecot、mysql を 1 つのコマンドでインストールします:

apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d sudo

インストーラーから要求されたときに MySQL root ユーザーの新しいパスワードを入力します。両方のサーバーに同じパスワードを選択する必要があります。次に、次の質問に次のように回答します:

一般的な構成の種類は? <– インターネットサイト
メール名は? <– server1.mydomain.tld
SSL 証明書が必要 <– OK

最初のサーバーでは server1.example.tld を、2 番目のサーバーでは server2.example.tld を使用します。

MySQL が localhost だけでなくすべてのインターフェースでリッスンするようにしたいため、/etc/mysql/my.cnf を編集し、bind-address = 127.0.0.1 の行をコメントアウトします:

vi /etc/mysql/my.cnf
[...]  
# skip-networking の代わりに、デフォルトは現在 localhost のみをリッスンすることです。これはより互換性があり、セキュリティが低下することはありません。  
#bind-address           = 127.0.0.1  
[...]  

次に MySQL を再起動します:

/etc/init.d/mysql restart

次に、MySQL サーバーを mysql マスター/マスター複製のために準備します。

サーバー 1 で:

シェルで MySQL にログインします…

 mysql -u root -p

… そして、MySQL シェルで次のコマンドを実行します:

GRANT REPLICATION SLAVE ON . TO ‘slaveuser’@’%’ IDENTIFIED BY ‘slave_user_password’;
FLUSH PRIVILEGES;
quit;

‘slave_user_password’ を、スレーブがマスターサーバーに接続するために使用したい安全なパスワードに置き換えます。このプレースホルダーは、次の手順でプレースホルダーが発生するたびに選択したパスワードに置き換えます。

次に、2 つの MySQL ノードを構成します:

サーバー 1 で:

vi /etc/mysql/my.cnf

[mysqld] で始まるセクションを検索し、次のオプションを追加します (すべての既存の競合するオプションをコメントアウトします):

[...]  
[mysqld]  
server-id = 1  
replicate-same-server-id = 0  
auto-increment-increment = 2  
auto-increment-offset = 1  
 
master-host = 192.168.0.106  
master-user = slaveuser  
master-password = slave_user_password  
master-connect-retry = 60   
 
expire_logs_days        = 10  
max_binlog_size         = 500M  
log_bin                        = /var/log/mysql/mysql-bin.log  
[...]  

次に MySQL を停止します:

/etc/init.d/mysql stop

次に、server2 でほぼ同じことを行います…

サーバー 2 で:

vi /etc/mysql/my.cnf

[mysqld] で始まるセクションを検索し、次のオプションを追加します (すべての既存の競合するオプションをコメントアウトします):

[...]  
[mysqld]  
server-id = 2  
replicate-same-server-id = 0  
auto-increment-increment = 2  
auto-increment-offset = 2  
   
master-host = 192.168.0.105  
master-user = slaveuser  
master-password = slave_user_password  
master-connect-retry = 60  
 
expire_logs_days        = 10  
max_binlog_size         = 500M  
log_bin                        = /var/log/mysql/mysql-bin.log  
[...]  

次に MySQL を停止します:

/etc/init.d/mysql stop

次に、2 つの mysql サーバーを同期する必要があります。これは、マスターからスレーブに mysql データディレクトリをコピーし、debian-sys-maint ユーザーを含む debian 設定ファイルもコピーすることで行います。これは、両方のサーバーで mysql を停止したため、実行できます。

サーバー 1 で:

scp -pr /var/lib/mysql/* [email protected]:/var/lib/mysql/
scp -pr /etc/mysql/debian.cnf [email protected]:/etc/mysql/debian.cnf

次に、マスターサーバーで MySQL を再起動します:

/etc/init.d/mysql start

root ユーザーとして MySQL シェルにログインします…

mysql -u root -p

… そして、MySQL シェルで次のコマンドを実行します…

 SHOW MASTER STATUS; 

… MySQL マスターのステータスを取得します:

mysql> SHOW MASTER STATUS;
+——————+———-+————–+——————+
| ファイル | ポジション | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000002 | 106 | | |
+——————+———-+————–+——————+
1 行がセットされました (0.00 秒)

次のステップに必要な情報は、binlog ファイル mysql-bin.000002 と binlog ポジション 106 です。後で server2 に対しても同様の詳細が必要です。

次に、マスターで次のコマンドを実行してスレーブに接続します:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST=’192.168.0.106’, MASTER_USER=’slaveuser’, MASTER_PASSWORD=’slave_user_password’, MASTER_LOG_FILE=’mysql-bin.000002’, MASTER_LOG_POS=106;
START SLAVE;

次に、スレーブのステータスを確認します:

SHOW SLAVE STATUS \G

出力の両方の Slave_IO_Running と Slave_SQL_Running が Yes の値を持っていることが重要です。

サーバー 2 で:

root ユーザーとして MySQL シェルにログインします…

mysql -u root -p

… そして、MySQL シェルで次のコマンドを実行します:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST=’192.168.0.105’, MASTER_USER=’slaveuser’, MASTER_PASSWORD=’slave_user_password’, MASTER_LOG_FILE=’mysql-bin.000002’, MASTER_LOG_POS=106;
START SLAVE;

次に、スレーブのステータスを確認します:

SHOW SLAVE STATUS \G

出力の両方の Slave_IO_Running と Slave_SQL_Running が Yes の値を持っていることが重要です。

これで mysql マスター/マスター複製の構成が完了し、他のソフトウェアパッケージのインストールに進みます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。