サーバー設定 · 5 min read · Sep 26, 2025

Debian 5.0 に ISPConfig 3 を使用して Web、Email、および MySQL データベースクラスター (ミラー) をインストールする

Debian 5.0 に ISPConfig 3 を使用して Web、Email、および MySQL データベースクラスター (ミラー) をインストールする

バージョン 1.0
著者: Till Brehm

このチュートリアルでは、冗長性、高可用性、および負荷分散のために使用されるクラスタ化された Web、Email、データベース、および DNS サーバーのインストールについて説明します。ISPConfig 3 コントロールパネルを使用して、Debian 5 での設定を行います。GlusterFS を使用してサーバー間でデータをミラーリングし、ISPConfig を使用して設定ファイルをミラーリングします。ここではデモンストレーションのために 2 台のサーバーのセットアップを使用しますが、GlusterFS の設定ファイルをわずかに変更するだけで、より多くのサーバーにスケールできます。

現在、MySQL クラスターのセットアップには 1 つの制限があります。2 番目のサーバーが起動するときに、MySQL デーモンは初期の innodb チェック中にロックの問題を抱えています。ここで私が使用している現在の回避策は、myisam のみで MySQL を起動することです。GlusterFS 上で innodb を使用して正常に動作している MySQL サーバーの報告がいくつかあるため、GlusterFS および / または MySQL 設定ファイルの微調整を行うことで innodb を使用することが可能であるはずです。ロックの問題の解決策を見つけて、このチュートリアルを更新しようと思います。GlusterFS 上での innodb の解決策を知っている方は、ぜひご連絡ください。2 番目のサーバーをホットスタンバイシステムとしてのみ使用する場合は、最初のサーバーが切断されているときにのみ 2 番目のサーバーで MySQL を起動すれば、innodb を使用できるはずです。

これは現在、概念実証のセットアップであるため、このセットアップが本番システムでどのようにスケールするかについての経験はまだありません。問題を引き起こす可能性がある唯一の部分は、共有 MySQL データディレクトリです。複数のサーバーから同時に MySQL データベースにアクセスするための別のソリューションは、MySQL クラスターセットアップ (http://www.mysql.com/products/database/cluster/) または MySQL マスター / マスター レプリケーション (https://www.howtoforge.com/mysql_master_master_replication) を使用することです。

ISPConfig 3 の使い方を学ぶために、ISPConfig 3 マニュアルをダウンロードすることを強くお勧めします。

300 ページ近くにわたり、ISPConfig の背後にある概念 (管理者、リセラー、クライアント) をカバーし、ISPConfig 3 のインストールと更新方法を説明し、ISPConfig のすべてのフォームとフォームフィールドのリファレンスを有効な入力の例とともに含み、ISPConfig 3 での最も一般的なタスクのチュートリアルを提供します。また、サーバーをより安全にする方法を説明し、最後にトラブルシューティングセクションが付いています。

1 2 つの基本システムの設定

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

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

https://www.howtoforge.com/perfect-server-debian-lenny-ispconfig3

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

私の例では、次のホスト名と 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 

… そして、次の 2 行が含まれていることを確認します。最初の行は ClamAV アンチウイルスソフトウェアと SpamAssassin の更新パッケージを取得するための debian volatile リポジトリ用で、2 番目の行は現在の GlusterFS パッケージを含む backports リポジトリ用です。

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb http://www.backports.org/debian/ lenny-backports main contrib non-free

実行します…

apt-get install debian-backports-keyring
apt-get update

… backports リポジトリキーをインストールし、apt パッケージデータベースを更新します。その後、実行します…

apt-get upgrade

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

システムクロックをインターネット上の NTP ( n etwork t ime p rotocol) サーバーと同期させることは良いアイデアです。単に実行します…

apt-get -y install ntp ntpdate

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

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 のパスワードを求められたら入力し、次の質問には以下のように答えます:

Web ベースの管理用のディレクトリを作成しますか? <– いいえ
一般的な構成の種類は? <– インターネットサイト
メール名は? <– server1.mydomain.tld
SSL 証明書が必要ですか? <– はい

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

amavisd-new、SpamAssassin、および ClamAV をインストールするには、次のコマンドを実行します:

apt-get -y install amavisd-new spamassassin clamav   clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract   apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon   libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip   libnet-dns-perl 

次に、Apache2、PHP5、phpMyAdmin、FCGI、suExec、Pear、および mcrypt を次のようにインストールします:

apt-get -y install apache2 apache2.2-common apache2-doc   apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5   php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli   php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth   php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby sudo 

次の質問が表示されます:

自動的に再構成する Web サーバー: <– apache2

次に、次のコマンドを実行して Apache モジュール suexec、rewrite、ssl、actions、および include を有効にします:

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest

PureFTPd と quota は次のコマンドでインストールできます:

apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool

/etc/fstab を編集します。私のは次のようになっています (マウントポイント / のパーティションに usrquota、grpquota を追加しました):

vi /etc/fstab
# /etc/fstab: 静的ファイルシステム情報。  
#  
# <ファイルシステム> <マウントポイント>   <タイプ>  <オプション>       <ダンプ>  <パス>  
proc            /proc           proc    defaults        0       0  
/dev/sda1       /               ext3    errors=remount-ro,usrquota,grpquota 0       1  
/dev/sda5       none            swap    sw              0       0  /dev/hda        
/media/cdrom0   udf,iso9660 user,noauto     0       0  
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

クォータを有効にするには、次のコマンドを実行します:

touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /

quotacheck -avugm
quotaon -avug

BIND DNS サーバーをインストールします:

apt-get -y install bind9 dnsutils

vlogger、webalizer、および awstats をインストールします:

apt-get -y install vlogger webalizer awstats 

Jailkit をインストールします: Jailkit は SSH ユーザーを chroot したい場合にのみ必要です。次のようにインストールできます (重要: Jailkit は ISPConfig の前にインストールする必要があります - 後からインストールすることはできません!):

apt-get -y install build-essential autoconf automake1.9 libtool flex bison

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz
tar xvfz jailkit-2.11.tar.gz
cd jailkit-2.11
./configure
make
make install
cd ..
rm -rf jailkit-2.11*

fail2ban をインストールします: これはオプションですが推奨されます。なぜなら ISPConfig モニターはログを表示しようとするからです:

apt-get install fail2ban

GlusterFS と Fuse をインストールします:

apt-get -y –force-yes -t lenny-backports install fuse-utils
apt-get -y –force-yes install glusterfs-server glusterfs-client

GlusterFS の例の設定ファイルを削除します:

rm -f /etc/glusterfs/*.vol 

GlusterFS ボリュームのデータディレクトリを作成します:

mkdir /data/
mkdir /data/export-mysql
mkdir /data/export-mysql-ns
mkdir /data/export-vmail
mkdir /data/export-vmail-ns
mkdir /data/export-www
mkdir /data/export-www-ns

GlusterFS サーバー設定ファイルを作成します:

vi /etc/glusterfs/glusterfsd.vol
# MySQL サーバーボリュームの設定
volume posix-mysql
  type storage/posix
  option directory /data/export-mysql
  option background-unlink yes
end-volume
volume locks-mysql
  type features/locks
  option mandatory-locks on
  subvolumes posix-mysql
end-volume
volume brick-mysql
  type performance/io-threads
  option thread-count 8
  subvolumes locks-mysql
end-volume
# vmail サーバーボリュームの設定
volume posix-vmail
  type storage/posix
  option directory /data/export-vmail
end-volume
volume locks-vmail
  type features/locks
  subvolumes posix-vmail
end-volume
volume brick-vmail
  type performance/io-threads
  option thread-count 8
  subvolumes locks-vmail
end-volume
# www サーバーボリュームの設定
volume posix-www
  type storage/posix
  option directory /data/export-www
end-volume
volume locks-www
  type features/locks
  subvolumes posix-www
end-volume
volume brick-www
  type performance/io-threads
  option thread-count 8
  subvolumes locks-www
end-volume
# すべてのボリュームをエクスポート
volume server
  type protocol/server
  option transport-type tcp
  subvolumes brick-mysql brick-vmail brick-www
  
  # MySQL ボリュームの認証オプション
  option auth.addr.brick-mysql.allow 192.168.0.105,192.168.0.106
  option auth.login.brick-mysql.allow user-mysql
  option auth.login.user-mysql.password 7wQav7ExkFg6eW
  
  # vmail ボリュームの認証オプション
  option auth.addr.brick-vmail.allow 192.168.0.105,192.168.0.106
  option auth.login.brick-vmail.allow user-vmail
  option auth.login.user-vmail.password 7wQav7ExkFg6eW
  
  # www の認証オプション
  option auth.addr.brick-www.allow 192.168.0.105,192.168.0.106
  option auth.login.brick-www.allow user-www
  option auth.login.user-www.password 7wQav7ExkFg6eW
  
end-volume

サーバーの IP アドレスを使用して IP を置き換え、パスワード 7wQav7ExkFg6eW をお好みのパスワードに置き換えます。

GlusterFS サーバーを起動します:

/etc/init.d/glusterfs-server start 

次に、GlusterFS ファイルシステムをマウントするために必要な 3 つのクライアントボリュームファイルを作成します。

vi /etc/glusterfs/glusterfs-mysql.vol
volume remote1-mysql
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.105
  option remote-subvolume brick-mysql
  option username user-mysql
  option password 7wQav7ExkFg6eW
end-volume
volume remote2-mysql
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.106
  option remote-subvolume brick-mysql
  option username user-mysql
  option password 7wQav7ExkFg6eW
end-volume
volume replicate-mysql
  type cluster/replicate
  subvolumes remote1-mysql remote2-mysql
end-volume
volume cache-mysql
  type performance/io-cache
  option cache-size 25MB
  subvolumes replicate-mysql
end-volume
vi /etc/glusterfs/glusterfs-vmail.vol
volume remote1-vmail
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.105
  option remote-subvolume brick-vmail
  option username user-vmail
  option password 7wQav7ExkFg6eW
end-volume
volume remote2-vmail
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.106
  option remote-subvolume brick-vmail
  option username user-vmail
  option password 7wQav7ExkFg6eW
end-volume
volume replicate-vmail
  type cluster/replicate
  subvolumes remote1-vmail remote2-vmail
end-volume
volume writebehind-vmail
  type performance/write-behind
  option window-size 1MB
  subvolumes replicate-vmail
end-volume
volume cache-vmail
  type performance/io-cache
  option cache-size 256MB
  subvolumes writebehind-vmail
end-volume
vi /etc/glusterfs/glusterfs-www.vol
volume remote1-www
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.105
  option remote-subvolume brick-www
  option username user-www
  option password 7wQav7ExkFg6eW
end-volume
volume remote2-www
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.106
  option remote-subvolume brick-www
  option username user-www
  option password 7wQav7ExkFg6eW
end-volume
volume replicate-www
  type cluster/replicate
  subvolumes remote1-www remote2-www
end-volume
volume writebehind-www
  type performance/write-behind
  option window-size 1MB
  subvolumes replicate-www
end-volume
volume cache-www
  type performance/io-cache
  option cache-size 256MB
  subvolumes writebehind-www
end-volume

ボリュームをディレクトリにマウントする前に、いくつかのサービスを停止し、現在のデータをバックアップする必要があります:

/etc/init.d/mysql stop
/etc/init.d/apache2 stop
/etc/init.d/postfix stop
/etc/init.d/dovecot stop

mv /var/lib/mysql /var/lib/mysql_bak
mv /var/www /var/www_bak

mkdir /var/lib/mysql
mkdir /var/www
mkdir /var/vmail

vi /etc/fstab

行を追加します:

/etc/glusterfs/glusterfs-mysql.vol  /var/lib/mysql  glusterfs  defaults  0  0
/etc/glusterfs/glusterfs-vmail.vol  /var/vmail  glusterfs  defaults  0  0
/etc/glusterfs/glusterfs-www.vol  /var/www  glusterfs  defaults  0  0

次に、次のコマンドを実行してドライブをマウントします:

mount -a

mysql ディレクトリの所有権をユーザーとグループ mysql に変更します:

chown mysql:mysql /var/lib/mysql

mysql と www データを戻します。

cp -prf /var/lib/mysql_bak/ /var/lib/mysql/
cp -prf /var/www_bak/
/var/www/

データを戻します (マスターサーバーでのみ!スレーブではこのステップをスキップします)。

innodb をオフにします。これは MySQL が起動するときにロックの問題を引き起こします。

vi /etc/mysql/my.cnf

行を変更します:

#skip-innodb

を:

skip-innodb   

と、my.cnf ファイルの [mysqld] セクションに次の行を追加します:

innodb_file_per_table  

スレーブサーバーを設定するときは、MySQL を再起動する前にマスターサーバーから /etc/mysql/debian.cnf ファイルをスレーブサーバーにコピーしてください!

再度サービスを起動します:

/etc/init.d/mysql start
/etc/init.d/apache2 start
/etc/init.d/postfix start
/etc/init.d/dovecot start

GlusterFS の起動順序を変更して、GlusterFS サーバーが常に MySQL よりも前に起動するようにします。

mv /etc/rc2.d/S20glusterfs-server /etc/rc2.d/S19glusterfs-server
mv /etc/rc3.d/S20glusterfs-server /etc/rc3.d/S16glusterfs-server
mv /etc/rc4.d/S20glusterfs-server /etc/rc4.d/S16glusterfs-server
mv /etc/rc5.d/S20glusterfs-server /etc/rc5.d/S16glusterfs-server

Share: X/Twitter LinkedIn

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

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