GNU/Linux >> Linux の 問題 >  >> Debian

ISPConfig3.1を使用したDebian8.4JessieへのWeb、Eメール、およびMySQLデータベースクラスターのインストール

このチュートリアルでは、ISPConfig3コントロールパネルを使用したDebian8での冗長性、高可用性、および負荷分散に使用されるクラスター化されたWeb、電子メール、データベース、およびDNSサーバーのインストールについて説明します。 MySQLマスター/マスターレプリケーションはサーバー間でMySQLクライアントデータベースをレプリケートするために使用され、Unisonは/ var / www(Webサイト)を同期するために使用され、メールはDovecotと同期されます。

1一般的な注意

このセットアップでは、1つのマスターサーバー(ISPConfigコントロールパネルインターフェイスを実行)と、Web(Apache)、Eメール(PostfixおよびDovecot)、DN(バインド)、およびデータベース(MySQLまたはMariaDB)サービスをミラーリングする1つのスレーブサーバーがあります。マスターサーバーの。

クラスタ化されたセットアップをインストールするには、Debian8.4の最小インストールと同じISPConfigバージョンを備えた2台のサーバーが必要です。

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

マスターサーバー

ホスト名:server1.example.tld
IPアドレス:192.168.0.105
IPv6-アドレス:2001:db8 ::1

スレーブサーバー

ホスト名:server2.example.tld
IPアドレス:192.168.0.106
IPv6-アドレス:2001:db8 ::2

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

すべてのコマンドはrootユーザーとして実行する必要があります。 MySQLを変更する必要がある場合は、MySQLのrootパスワードを使用してMySQLにログインします。

 mysql -u root -p 

2マスターサーバーをインストールします

まず、マスターサーバーにISPConfigをインストールする必要があります。このサーバーにISPConfigを既にインストールしている場合は、インストールをスキップできます(既存のインストールが最新であることを確認してください)。

パーフェクトサーバー-Debian8.4Jessie(Apache2、BIND、Dovecot、ISPConfig 3.1)に従って、マスターサーバーにISPConfigをインストールします。

スレーブサーバーを/etc/hostsファイルに追加します

 vi / etc / hosts 

したがって、次のようになります:

 127.0.0.1 localhost192.168.0.105 server1.example.tld server1 
2001:db8 ::1 server1.example.tld server1192.168.0.106 server2.example.tld
2001:db8: :2 server2.example.tld#IPv6対応ホストには次の行が望ましいです::1 localhost ip6-localhost ip6-loopbackfe00 ::0 ip6-localnetff00 ::0 ip6-mcastprefixff02 ::1 ip6-allnodesff02 ::2 ip6- allroutersff02 ::3 ip6-allhosts

3スレーブサーバーを準備します

パーフェクトサーバー-Debian8.4Jessie(Apache2、BIND、Dovecot、ISPConfig 3.1)からステップ1〜19を実行します。

server2にISPConfigをまだインストールしないでください。

マスターサーバーを/etc/hostsファイルに追加します

 vi / etc / hosts 

したがって、次のようになります:

 127.0.0.1 localhost192.168.0.105 server1.example.tld 
2001:db8 ::1 server1.example.tld192.168.0.106 server2.example.tld server2
2001:db8 ::2 server2.example.tld server2#IPv6対応ホストには次の行が望ましいです::1 localhost ip6-localhost ip6-loopbackfe00 ::0 ip6-localnetff00 ::0 ip6-mcastprefixff02 ::1 ip6-allnodesff02 ::2 ip6- allroutersff02 ::3 ip6-allhosts

4サーバー1からサーバー2へのキーレスログイン

server2の場合:

パスワードを使用してserver2へのrootログインを一時的に許可します。 / etc / sshd_configを開きます:

 vi / etc / ssh / sshd_config 

と変更

パスワードなしのPermitRootLogin

PermitRootLoginはい

その後、ssh-daemonを再起動します:

 service ssh restart 

サーバー1:

秘密鍵と公開鍵のペアを作成します:

 ssh-keygen 
パブリック/プライベートrsaキーペアの生成。
キーを保存するファイルを入力してください(/root/.ssh/id_rsa): <-ENTER
作成されたディレクトリ'/root/.ssh'。
パスフレーズを入力(パスフレーズがない場合は空): <-ENTER
同じパスフレーズをもう一度入力してください: <-ENTER
IDは/root/.ssh/id_rsaに保存されています。
公開鍵は/root/.ssh/id_rsa.pubに保存されています。
鍵の指紋は次のとおりです。
f3:d0:62:a7:24:6f:f0:1e:d1:64:a9:9f:12:6c:98:5a[メール保護]
キーのランダムアート画像は次のとおりです。
+ --- [RSA 2048] ---- +
| |
| 。 |
| + |
| + * |
| E S + |
| oO@。 |
| 。 B + |
| o o |
| 。 |
+ ----------------- +

パスフレーズを入力しないことが重要です。入力しないと、人間の操作なしではミラーリングが機能しないため、Enterキーを押すだけです。

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

 ssh-copy-id -i/root/.ssh/id_rsa.pub[メール保護]
ホスト「192.168.0.106(192.168.0.106)」の信頼性を確立できません。
ECDSAキーのフィンガープリントは25:d8:7a:ee:c2:4b:1d:92:a7:3dです。 :16:26:95:56:62:4e。
接続を続行してもよろしいですか(はい/いいえ)? <-はい (これは、server2に初めて接続する場合にのみ表示されます)
/ usr / bin / ssh-copy-id:INFO:新しいキーでログインしようとしています。すでにインストールされている
/usr / bin / ssh-copy-id:情報:1つのキーがまだインストールされていません-プロンプトが表示されたら、新しいキーをインストールします
 [メール保護]のパスワード:<-server2からrootパスワードを入力 

次に、マシンにログインしてみます:

ssh[メール保護]

また、/root/.ssh/authorized_keysをチェックして、予期しないキーが追加されていないことを確認してください。

 cat /root/.ssh/authorized_keys 
 SSH-DSS AAAAB3NzaC1kc3MAAACBAPhiAexgEBexnw0rFG8lXwAuIsca / V + lhmv5lhF3BqUfAbL7e2sWlQlGhxZ8I2UnzZK8Ypffq6Ks + lp46yOs7MMXLqb7JBP9gkgqxyEWqOoUSt5hTE9ghupcCvE7rRMhefY5shLUnRkVH6hnCWe6yXSnH + Z8lHbcfp864GHkLDK1AAAAFQDddQckbfRG4C6LOQXTzRBpIiXzoQAAAIEAleevPHwi + a3fTDM2 + Vm6EVqR5DkSLwDM7KVVNtFSkAY4GVCfhLFREsfuMkcBD9Bv2DrKF2Ay3OOh39269Z1rgYVk + / MFC6sYgB6apirMlHj3l4RR1g09LaM1OpRz7pc / GqIGsDt74D1ES2j0zrq5kslnX8wEWSHapPR0tziin6UAAACBAJHxgr + GKxAdWpxV5MkF + FTaKcxA2tWHJegjGFrYGU8BpzZ4VDFMiObuzBjZ + LrUs57BiwTGB / MQl9FKQEyEV4J + AgZCBxvg6n57YlVn6OEA0ukeJa29aFOcc0inEFfNhw2jAXt5LRyvuHD / C2gG78lwb6CxV02Z3sbTBdc43J6y [メール保護

パスワードを使用したrootログインを禁止します。 / etc / sshd_configを開きます:

 vi / etc / ssh / sshd_config 

と変更

PermitRootLoginはい

パスワードなしのPermitRootLogin

その後、ssh-daemonを再起動します:

 service ssh restart 

server2からのログアウト:

終了
ログアウト
192.168.0.106への接続が閉じられました。

server1に戻りました。

5。 MySQLマスター-マスターレプリケーション

5.1サーバー1の準備

MySQLにログインし、MySQLでのレプリケーション専用のアカウントを作成します。他のアカウントへの侵害の可能性を最小限に抑えるために、複製には別のユーザーを使用します(ユーザー名とパスワードは、マスター情報リポジトリのファイルまたはテーブルにプレーンテキストで保存されます):

 CREATE USER'slaveuser2' @'server2.example.tld' IDENTIFIED BY'slave_user_password'; 
CREATE USER'slaveuser2' @ '192.168.0.106' IDENTIFIED BY'slave_user_password';
CREATE USER ' slaveuser2'@' 2001:db8 ::2'IDENTIFIED BY' slave_user_password';

REPLICATION SLAVE特権を付与します:

 GRANT REPLICATION SLAVEON*。*TO'slaveuser2'@'server2.example.tld'; 
GRANT REPLICATION SLAVEON*。*TO'slaveuser2'@ '192.168.0.106';
GRANT REPLICATION SLAVEON*。*TO'slaveuser2'@ '2001:db8 ::2';
QUIT;

MySQL-Configへのレプリケーションにいくつかの変更を加えます:

 vi /etc/mysql/my.cnf 

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

 [...] 
[mysqld]
server-id =1
reply-same-server-id =0
auto-increment-increment =2
auto-increment-offset =1
log_bin =mysql-bin.log
expire_logs_days =10
max_binlog_size =100M
binlog_format =mixed
sync_binlog =1
relay-log =slave-relay.log
relay-log-index =slave-relay-log.index
slave_skip_errors =1007,1008,1050、1396
bind-address =: :

その後、MySQLを再起動します:

 service mysql restart 

いくつかのスレーブエラーをスキップします。これについてはブログで説明しました:

  • 1007=データベースを作成できません'%s';データベースが存在します
  • 1008=データベースを削除できません'%s';データベースが存在しません
  • 1050=テーブル'%s'は既に存在します
  • 1396 =操作%sが%sで失敗しました-ユーザーを作成できません

MySQLエラーコードのリストはここにあります:サーバーエラーコードとメッセージ

5.2Server2の準備

MySQL-Configへのレプリケーションにいくつかの変更を加えます:

 vi /etc/mysql/my.cnf 

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

 [...] 
[mysqld]
server-id =2
log_bin =mysql-bin.log
expire_logs_days =10
max_binlog_size =100M
binlog_format =mixed
sync_binlog =1
slave_skip_errors =1007,1008,1050、1396

5.3サーバー1に既存のデータベースのスナップショットを作成する

server1にデータベースをダンプします MySQLルートパスワードを入力します:

 mysqldump -p --all-databases --allow-keywords --master-data --events --single-transaction> /root/mysqldump.sql 

ダンプをserver2にコピーします:

 scp /root/mysqldump.sql [メール保護]:/ root 

5.4サーバー2にダンプをインポートする

 mysql -u root -p  

server2でmysqlをシャットダウンします :

 service mysql stop 

MySQLのdefaults-fileをserver1からserver2にコピーします。 server1に切り替えます 実行

 scp /etc/mysql/debian.cnf [メール保護]:/etc/mysql/debian.cnf 

server2でMySQLを起動します :

 service mysql start 

MySQLにログインして、次のコマンドでマスターサーバーを設定します。

MASTERをMASTER_HOST="server1.example.tld"、MASTER_USER ="slaveuser2"、MASTER_PASSWORD ="slave_user_password";
に変更します

スレーブを開始します:

 START SLAVE; 

でスレーブステータスを確認します

スレーブステータスを表示\G

結果は次のようになります

***************************1.行***************** ********** 
Slave_IO_State:マスターがイベントを送信するのを待っています
Master_Host:server1.example.tld
br /> 306 / Port 3 <> Connect_Retry:60
MASTER_LOG_FILE:MySQLの-bin.000001
Read_Master_Log_Pos:109989
RELAY_LOG_FILE:mysqldをリレー-bin.000002
RELAY_LOG_POS:110276
のRelay_Master_Log_File:はmysql- bin.000001
Slave_IO_Running:はい
Slave_SQL_Running:はい
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno:0
Last_Error:
Exec /> Skip_Counter:0
Relay_Log_Space:110574
Until_Condition:なし
Until_Log_File:
Until_Log_Pos:0
Master_SSL_Allowed:いいえ
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:0
Master_SSL_Verify_Server_Cert:なし
Last_IO_Errno:0
Last_IO_Error:
Last_SQL_Errno。 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id:1
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid:なし
Gtid_IO_Pos

「マスターの後ろの秒数」が0でない場合は、スレーブがマスターからすべてのデータを読み取るまで待ちます(コマンドを繰り返して現在の値を取得します)。 server2が正しいマスターログとログ位置を使用していることを確認してください。

server1 MySQLで実行:

 SHOW MASTER STATUS \ G 
***************************1.行***************** ********** 
ファイル:mysql-bin.000991
位置:69185362
Binlog_Do_DB:
Binlog_Ignore_DB:
1行セット(0.00秒)

そして、レプリケーションマスターのバイナリログ座標を比較します。

MySQL Master-Slave-Replicationを実行しています。ここで、server1はマスターで、server2はスレーブです。

5.5 MySQL Master-Master-Replication

レプリケーション用のMySQLユーザーを作成し、MySQLで特権を付与します:

 CREATE USER'slaveuser1' @'server1.example.tld' IDENTIFIED BY'slave_user_password'; 
CREATE USER'slaveuser1' @ '192.168.0.105' IDENTIFIED BY'slave_user_password';
CREATE USER ' slaveuser1'@' 2001:db8 ::1'IDENTIFIED BY' slave_user_password';
GRANT REPLICATION SLAVEON*。*TO'slaveuser1'@' server1.example.tld';
GRANT REPLICATION SLAVEON*。*TO'slaveuser1'@ '192.168.0.105';
GRANT REPLICATION SLAVEON*。*TO'slaveuser1'@ '2001:db8 ::1';
終了;

server2上のMySQL-Configへのレプリケーションにいくつかの変更を加えます :

 vi /etc/mysql/my.cnf 

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

 [...] 
[mysqld]
[...]
reply-same-server-id =0
auto-increment-increment =2
auto-increment-offset =2
relay-log =slave-relay.log
relay-log-index =slave-relay-log.inde

MySQLを再起動します:

 service mysql restart 

MySQLにログインして、マスターバイナリログ座標を取得します:

 SHOW MASTER STATUS \ G 
***************************1.行***************** ********** 
ファイル:mysql-bin.000002
位置:326
Binlog_Do_DB:
Binlog_Ignore_DB:
1行セット(0.00秒)

server1でMySQLにログインします マスターサーバーを

で設定します
MASTERをMASTER_HOST="server2.example.tld"、MASTER_USER ="slaveuser1"、MASTER_PASSWORD ="slave_user_password"、MASTER_LOG_FILE ='mysql-bin.000002'、MASTER_LOG_POS=326に変更します;

スレーブを開始します:

 START SLAVE; 

でスレーブステータスを確認します

スレーブステータスを表示\G

スレーブが実行されていることを確認してください:

Slave_IO_Running:はい
Slave_SQL_Running:はい

レプリケーションが機能しなくなった場合は、次の場所で追加情報を確認できます:

  • MySQLレプリケーションで特定のエラーをスキップする方法
  • mysqlマスター-マスターレプリケーションを再開します
  • mysql-replication –リレーログイベントエントリを解析できませんでした

6スレーブサーバーにISPConfigをインストールします

MySQLにログインし、server2のrootユーザーを作成します:

 CREATE USER'root' @ '192.168.0.106' IDENTIFIED BY'myrootpassword'; 
GRANT ALL PRIVILEGESON*。 * TO'root' @ '192.168.0.106' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE USER'root' @'server2.example.tld' IDENTIFIED BY'myrootpassword';
*にすべての特権を付与します。 * TO'root' @'server2.example.tld' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE USER'root' @ '2a01:dddd ::2'IDENTIFIED BY'myrootpassword'; br/>すべての特権を*に付与します。 * TO'root' @ '2001:db8 ::2'WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
QUIT;

レプリケーションはすべてのデータベースを対象としています。 PHPMyAdminとroundcubeのdb-configsをserver1からserver2にコピーします。

server1

 scp /etc/dbconfig-common/phpmyadmin.conf [メール保護]:/ etc / dbconfig-common / phpmyadmin.conf 
scp /etc/phpmyadmin/config-db.php [メール保護]:/ etc / phpmyadmin / config-db.php
scp /etc/dbconfig-common/roundcube.conf [メール保護]:/ etc / dbconfig-common / roundcube.conf
scp / etc / roundcube / debian -db.php [メール保護]:/ etc / roundcube / debian-db.php

server2

ISPConfig 3.1のダウンロード:

 cd / tmp 
wget -O ISPConfig-3.1-beta.tar.gz https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=stable-3.1
tar xfvz xfz ISPConfig-3.1-beta.tar.gz
cd ispconfig3-stable-3.1 *
cd install

でインストーラーを起動します
 php -q install.php 
 ----------------------------------------------- --------------------------------- 
_____ ___________ _____ __ _ ____
| _ _ / ___ | ___ \ / __ \ / _(_)/ __ \
| | \`-。| | _ / / | / \ / ___ _ __ | | _ _ __ _ _ / /
| | `-。 \ __ / | | / _ \ | '_ \ | _ | | / _` | | _ |
_ | | _ / \ __ / / | | \ __ / \(_)| | | | | | | (_ | | ___ \ \
\ ___ / \ ____ / \ _ | \ ____ / \ ___ / | _ | | _ | _ | | _ | \ __、| \ ____ /
_ |
| ___ /
-------------------------------------- ------------------------------------------


>>初期構成

オペレーティングシステム:Debian 8.0(Jessie)または互換性

以下は、プライマリ構成に関するいくつかの質問ですので、注意してください。
デフォルト値は[括弧]内にあり、で受け入れることができます。
「終了」(引用符なし)をタップしてインストーラーを停止します。


言語を選択します(en、de)[en]:<-Enterキーを押します

インストールモード(標準、エキスパート)[標準]:エキスパート<-エキスパート

サーバーの完全修飾ホスト名(FQDN)、例:server1.domain.tld [server2.example.tld]:<-Enterキーを押します

MySQLサーバーのホスト名[localhost]:<-Enterキーを押します

MySQLサーバーポート[3306]:<-Enterキーを押します

MySQL rootユーザー名[root]:<-Enterキーを押します

MySQLルートパスワード[]:<-MySQLルートパスワードを入力してください

[dbispconfig]を作成するMySQLデータベース: <-dbispconfig2(両方のサーバーが同じデータベースを共有するため、マスターとスレーブのローカルispconfigデータベース名は異なる必要があります)

MySQL文字セット[utf8]:<-Enterキーを押します

次の2つの質問は、内部ISPConfigデータベースのユーザーとパスワードに関するものです。
デフォルトの「ispconfig」をユーザー名とランダムなパスワードとして受け入れることをお勧めします。
もし別のパスワードを使用し、パスワードには数字と文字のみを使用してください。

ISPConfig mysqlデータベースのユーザー名[ispconfig]: <-ispconfig2

ISPConfigmysqlデータベースのパスワード[06d434604a3371a706a100f9786aec9b]:<-Enterキーを押します

このサーバーは、既存のISPConfigマルチサーバーセットアップに参加しますか(y、n)[n]: <-y

MySQLマスターサーバーのホスト名[]: <-server1.example.tld

MySQLマスターサーバーポート[]:<-Enterキーを押します

MySQLマスターサーバーのルートユーザー名[ルート]:<-Enterキーを押します

MySQLマスターサーバーのルートパスワード[]:<-ここにマスターサーバーのルートパスワードを入力します

MySQLマスターサーバーデータベース名[dbispconfig]:<-Enterキーを押します

ISPConfigサーバーレコードをデータベースに追加します。

メールの構成(y、n)[y]:<-Enterキーを押します

Postgreyの構成
Postfixの構成
4096ビットのRSA秘密鍵の生成
................... .................................................。 ... ++
.................... ++
新しい秘密鍵を「smtpd.key」に書き込む
- ----
証明書リクエストに組み込まれる情報を入力するように求められます。
入力しようとしているのは、いわゆる識別名またはDNです。 。
かなりの数のフィールドがありますが、空白のままにすることができます
一部のフィールドにはデフォルト値があります。
「。」と入力すると、フィールドは空白のままになります。
-----
国名(2文字の国コード)[AU]:<-2文字の国コードを入力
州または州の名前(フルネーム)[一部の州]:<-州の名前を入力してください
地域名(例:都市)[]:<-都市を入力してください
組織名(例:会社)[Internet Widgits Pty Ltd]: <-会社名を入力するか、Enterキーを押します
組織単位名(例:セクション)[]:<-Enterキーを押します
共通名(例:サーバーFQDNまたはあなたの名前)[]:<-サーバーのホスト名を入力します。私の場合はserver2.example.com
メールアドレス[]:<-Enterキーを押します
Mailmanの構成
Dovecotの構成
Spamassassinの構成
Amavisdの構成
Getmailの構成
Jailkitの構成
Pureftpdの構成
DNSサーバーの構成( y、n)[y]:<-Enterキーを押します

BINDの構成
Webサーバーの構成(y、n)[y]:<-Enterキーを押します

Apacheの構成
vloggerの構成
[警告]OpenVZの自動検出に失敗しました
OpenVZの構成を強制します(y、n)[n]:<-ヒット入力

OpenVZをスキップする

ファイアウォールサーバーを構成する(y、n)[y]:<-Enterキーを押します

Ubuntuファイアウォールの構成
MetronomeXMPPサーバーの構成
新しい秘密鍵を「localhost.key」に書き込む
-----
国名(2文字コード)[AU]:<-2文字の国コードを入力
地域名(例:都市)[]:<-都市を入力
組織名(例:会社)[Internet Widgits Pty Ltd]: <-会社名を入力するか、Enterキーを押します
組織単位名(例:セクション)[]:<-Enterキーを押します
共通名(例:サーバーFQDNまたはあなたの名前)[server2.example.tld]:<-サーバーのホスト名を入力します。私の場合はserver2.example.tld
メールアドレス[]:<-Enterキーを押します

ISPConfig Webインターフェイスのインストール(y、n)[n]:<-Enterキーを押します



DBServerの構成
ISPConfigcrontabのインストール
IPアドレスの検出
インストールが完了しました。

>

server1のISPConfigにログインし、システムに移動します /サーバーサービス server2.example.tldを選択し、サーバーのミラーを設定します。 server1.example.tldへ:

サーバー構成に移動 、[タブウェブ]を選択します 両方のサーバーの権限を設定します:

 

server1ですでにデータ(Webサイト、メールなど)を実行している場合は、ツールに移動します。 /再同期 完全な再同期を開始します(すべてのチェックボックスを有効にします)。

7ユニゾンをインストールする

次に、ユニゾンをインストールします。 Unisonは、server1とserver2の間で/ var/wwwディレクトリを同期するために使用されます。

server1にユニゾンをインストールします およびserver2

 apt-get install unison 

次に、 server1にユニゾン構成ファイルをインストールします。 :

新しいファイル/root/.unison/webを作成します:

 mkdir /root/.unison 
vi /root/.unison/web.prf

...そして次のコンテンツを追加します:

#同期のルート=/ var / wwwroot =ssh://192.168.0.106 // var / www#同期するパス#path =www#path =vmail#無視する名前とパスを指定する一部のregexps#ignore =パス統計##は/var/ www / stats#ignore=パス統計/*##を無視します/var / www / stats / *#ignore=パス*/stats##は/var/ www / somedir/statsを無視しますが無視します/ var / www / a / b / c / stats#ignore =Name *stats##「stats」で終わるすべてのファイル/ディレクトリを無視します#ignore=Name stats*##「stats」で始まるすべてのファイル/ディレクトリを無視します#ignore=名前*.tmp##拡張子が.tmpignore=のすべてのファイルを無視します。 webalizer.conf 
#trueに設定すると、このフラグにより​​、ユーザーインターフェイスはスキップされ、#競合しない変更の確認を求められます。 (より正確には、ユーザーインターフェイスが1つのエントリの伝播方向の設定を完了し、次のエントリに移動しようとすると、競合しないすべてのエントリをスキップして、次の競合に直接移動します。)auto =true#これがtrueに設定されている場合、ユーザーインターフェイスは#質問をまったくしません。競合しない変更は伝播されます;#競合はスキップされます。batch=true#!これがtrueに設定されている場合、ユニゾンは、変更を伝播する前に、レプリカ全体が削除されたように見える場合、追加の確認を要求します。バッチフラグも#設定されている場合、同期は中止されます。 path#プリファレンスが使用される場合、同じ確認が#トップレベルパスに対して要求されます。 (現時点では、このフラグはテキストユーザーインターフェイスにのみ影響します。)mountpointpreference.confirmbigdel =trueも参照してください。#この設定がtrueに設定されている場合、Unisonはファイルの#変更時間と長さを`pseudoとして使用します。すべてのファイルの完全な内容を読み取る代わりに、更新のためにレプリカをスキャンするときのinode#number'。 Windowsでは、これにより、ファイルの変更時間と長さが更新によって変更されていない場合、ユニゾンが更新の伝播を見逃す可能性があります。ただし、ユニゾンは、他のレプリカからの変更でそのような更新を上書きすることはありません。変更を伝播する直前に、常に安全な#更新のチェックを行います。したがって、#ほとんどの場合Windowsでこのスイッチを使用し、#Fastcheckをfalseに設定してUnisonを1回実行するのが合理的です。#Unisonが更新を見落としている可能性がある場合は、#設定のデフォルト値はautoです。 、これにより、#UnisonはUnixレプリカ(安全な場合)#で高速チェックを使用し、Windowsレプリカで低速チェックを使用します。下位互換性のために、true、false、およびautoの代わりにyes、no、およびdefaultを使用できます。詳細については、「高速チェック」のセクションを参照してください。fastcheck=true#このフラグがtrueに設定されている場合、#ファイルのグループ属性が同期されます。グループ名またはグループ#識別子が同期されるかどうかは、プリファレンスnumerids.group =trueに依存します。#このフラグがtrueに設定されている場合、#ファイルの所有者属性が同期されます。所有者名または所有者識別子が同期されるかどうかは、preference#extttnumerids.owner =trueに依存します。#preference -prefer rootを含めると、Unisonは、ユーザーに#ガイダンスを求めるのではなく、常に#rootを優先して競合を解決します。 (rootの構文は、ルート設定の場合と同じですが、新しい値と古い値が追加されます。)#この設定は、preferpartial設定によって上書きされます。#この設定は、自分が何を知っているかが確実な場合にのみ使用してください。 are doing!prefer =newer#この設定がtrueに設定されている場合、テキストのユーザーインターフェイス#はエラーの場合を除いて何も出力しません。#silentをtrueに設定すると、バッチ設定#が自動的にtrueに設定されます。silent=true #このフラグがtrueに設定されている場合、ファイルの変更時刻(ただし、ディレクトリmodtimesは転送されません)が伝播されます。times=false

#このフラグが設定されている場合、Unisonはファイルシステムへのすべての変更をログに記録します。ファイル。
log=false

#このフラグがtrueに設定されている場合、グループとユーザーは名前ではなく数値で同期されます。
#特別なuid0と特別なuid0グループ0は使用によってマップされることはありませんこの
#プリファレンスが設定されていない場合でもr/group名。
numericids=true

同期を自動化したいので、小さなスクリプトを作成し、 server1でcronジョブを作成します :

 mkdir / root / scripts 
vi /root/scripts/unison.sh

次のコンテンツを追加します:

#!/ bin / sh 
lockdir =/ tmp
UNISON =/ usr / bin / unison
LOGGER =/ usr / bin / logger

if [! -f / $ lockdir / unison];次に
touch$ lockdir / unison

$ UNISON -testserver web
rc =$?
if [[$ rc!=0]];次に
echo"error"
$ LOGGER -d -t unison "web-error connecting remote"
else
/>
$ UNISON web
rm $ lockdir / unison
else
$ LOGGER -d -tunison"ユニゾンはすでに実行中です"
fi

スクリプトを実行可能にします:

 chmod 700 /root/scripts/unison.sh 

そして、最初の同期を実行します。同期中に出力を取得するには、/ root / .unsion/web.prfでsilent=falseを設定します。その後、ユニゾンを開始します:

 /root/scripts/unison.sh 

最後に、cronjobを作成します:

 crontab -e 
#unison 
* * * * * /root/scripts/unison.sh> / dev / null

8 メールをDovecotと同期する

Dovecot 2以降、Dovectのdsyncを使用してメインベースの同期を維持することが可能です。すでにserver1にメールがある場合は、それ以上の操作なしでserver2に複製されます。

同じポートを使用する必要があります( 4711 )と同じパスワード( Replication_password )両方のサーバーで。

server1:

/etc/dovecot/dovecot-sql.confを開きます

 vi /etc/dovecot/dovecot-sql.conf 

iterate_queryを有効にします:

古い:

 #iterate_query =SELECT email as user FROM mail_user 

新規:

 iterate_query =SELECT email as user FROM mail_user 

/etc/dovecot/dovecot.confを開きます

 vi /etc/dovecot/dovecot.conf 

次のコンテンツを追加します:

#レプリケーションプラグインをグローバルに有効にする
mail_plugins =$mail_pluginsはレプリケーションクォータを通知します

#クライアントとサーバーの両方が共有シークレットを持っている必要があります
doveadm_password =Replication_password

#並列で実行できるdsyncの数を構成します(デフォルトでは10)
Replication_max_conns =10

service aggregator {
fifo_listener Replication-notify-fifo {
user =vmail
モード=0666
}



unix_listenerレプリケーション-通知{
0/> v 0 }
}

service replicator {
        unix_listener replicator-doveadm {
                mode =0666
        }
}

service doveadm {
        user =vmail
        inet_listener {
                port =4711
        }
}

service config {
        unix_listener config {
                user =vmail
        }
}

# use tcp:ip as the dsync target
plugin {
        replication_full_sync_interval =1 hours
        mail_replica =tcp:192.168.0.106:4711
}

protocol imap {
mail_plugins =quota imap_quota notify replication
}

restart Dovecot:

service dovecot restart

server2:

Open /etc/dovecot/dovecot-sql.conf

vi /etc/dovecot/dovecot-sql.conf

and enable the iterate_query:

old:

#iterate_query =SELECT email as user FROM mail_user

new:

iterate_query =SELECT email as user FROM mail_user

Open /etc/dovecot/dovecot.conf

vi /etc/dovecot/dovecot.conf

and add the following content:

# Enable the replication plugin globally
mail_plugins =$mail_plugins notify replication quota

# Both the client and the server need to have a shared secret
doveadm_password =replication_password

# configure how many dsyncs can be run in parallel (10 by default)
replication_max_conns =10

service aggregator {
        fifo_listener replication-notify-fifo {
                user =vmail
                mode =0666
        }

        unix_listener replication-notify {
                user =vmail
                mode =0666
        }
}

service replicator {
        unix_listener replicator-doveadm {
                mode =0666
        }
}

service doveadm {
        user =vmail
        inet_listener {
                port =4711
        }
}

service config {
        unix_listener config {
                user =vmail
        }
}

# use tcp:ip as the dsync target
plugin {
        replication_full_sync_interval =1 hours
        mail_replica =tcp:192.168.0.105:4711
}

protocol imap {
mail_plugins =quota imap_quota notify replication
}

restart Dovecot:

service dovecot restart

You can check the replication on each server:

doveadm replicator status '*'
username                                                                                priority fast sync full sync failed
[email protected]                                                                     none     00:16:34  00:16:40  -

9 Additional Notes

When you want to activate a firewall on the master or slave server, ensure that you open port 3306 for MySQL, 22 for SSH and 4711 for Dovecot on both servers.

  • ISPConfig Website:http://www.ispconfig.org/
  • ISPConfig Forum:https://www.howtoforge.com/forums/
  • ISPConfig Bugtracker:http://bugtracker.ispconfig.org/

Debian
  1. Debian 8でMySQLを使用してマスターマスターレプリケーションを設定する(Jessie)

  2. Debianにリモートデータベースを使用してWordPressをインストールする

  3. Apache 2.2、MySQL 5.0、およびPHP5を使用したFreeBSD6.0へのWebサーバーのインストール–パート5

  1. Apache 2.2、MySQL 5.0、およびPHP5を使用したFreeBSD6.0へのWebサーバーのインストール–パート4

  2. Apache 2.2、MySQL 5.0、およびPHP5を使用したFreeBSD6.0へのWebサーバーのインストール–パート3

  3. Apache 2.2、MySQL 5.0、およびPHP5を使用したFreeBSD6.0へのWebサーバーのインストール–パート2

  1. Debian10にISPConfigを使用してEメールサーバーをインストールする方法

  2. PHP5とMySQLをサポートするLighttpdをDebianEtchにインストールする

  3. Easy vsFTPD – Debian8Jessie上の仮想ユーザーを備えたFTPサーバー