BitrixVMの例を使用してクラスタリングを実行します:シンプルで明確

耐障害性を提供​​することは、継続的な運用の鍵であり、一般に、ユーザーと管理者の両方の完全な満足度です。 本日の記事では、シンプルで手頃な価格の手段を使用してBitrixVMクラスタリングを実行し、誰もが幸せで静かな作業を妨げないようにする方法について説明します。



そのため、BitrixVMとBitrix24システムが展開された2つのサーバーがあります。 最初に行うことは、両方のノードでデータの同期を維持し、データベース間とbitrixファイル間の両方を同期することです。



Bitrix1-172.16.10.1

Bitrix2-172.16.10.2



必ず両方のマシンのhostsファイルに行を書いてください:



172.16.10.1 bitrix1 172.16.10.2 bitrix2
      
      





データベースにはマスターとマスターのデータ複製を使用します。 これを行うには、 / etc / my.cnfファイルの設定を調整する必要があります



独自の設定を上書きするには、Bitrixは/etc/mysql/conf.d/z_bx_custom.cnfファイルを作成することをお勧めします。このファイルで変更を行う必要があります。



 [root@bitrix1 /]# cat /etc/my.cnf # # Basic mysql configuration. Use bvat for advanced settings. # Parameters set by bvat are stored in /etc/mysql/conf.d/bvat.cnf # If you want to change any parameter, you'll have to redefine it in #/etc/mysql/conf.d/z_bx_custom.cnf #
      
      





推奨事項に従ってファイルを作成します。



 touch /etc/mysql/conf.d/z_bx_custom.cnf [root@bitrix1 /]# nano /etc/mysql/conf.d/z_bx_custom.cnf [mysqld]
      
      





レプリケーション参加者間の一意のサーバー識別子:



 server-id = 1
      
      





変更されたバイナリデータのロギングが実行されます。 このオプションを指定しないと、ログとbitrixポータル自体に入るときにエラーが発生する場合があります。



 Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is #READ #COMMITTED or READ UNCOMMITTED. binlog_format=row
      
      





エラーログ:



 log=/var/log/mysqld.log log_error = /var/log/mysqld.log
      
      





サーバートランザクションログへのパス(ウィザードが保持するバイナリログ):



 log-bin = /var/lib/mysql/server-mysql-bin log-bin-index = /var/lib/mysql/server-mysql-bin.index
      
      





スレーブリレーログへのパス(ウィザードからダウンロードされたバイナリログ):



 relay-log = /var/lib/mysql/slave-mysql-relay-bin relay-log-index = /var/lib/mysql/slave-mysql-relay-bin.index
      
      





複製が必要または不要なデータベース(標準のbitrixデータベース-sitemanager0の複製のみを実行します):



 replicate-do-db = sitemanager0 replicate-ignore-db=test replicate-ignore-db=information_schema replicate-ignore-db=mysql replicate-ignore-db=performance_schema
      
      





データベースのbinlogをログに記録しないでください:



 binlog-ignore-db = information_schema binlog-ignore-db = mysql binlog-ignore-db = performance_schema
      
      





自動インクリメントの競合を回避するために、3番目から開始し、それぞれ10を追加してidが生成されるようにサーバーに通知します。 13、23、33、43以降:



 auto_increment_increment = 10 auto_increment_offset = 3
      
      





ウィザードからログをビンログに保存して、スレーブに渡します。



 log-slave-updates
      
      





その後、mysqlを再起動します。



 [root@bitrix1 /]# /etc/init.d/mysqld restart
      
      





次に-2番目のBitrixVMに切り替える必要があります。 bitrix2、およびmysqlに対して同様の設定を実行します。以前は/etc/mysql/conf.d/にz_bx_custom.cnfファイルも作成し、 server-idおよびauto_increment_offsetを変更しました



 [root@bitrix2 ~]# cat /etc/mysql/conf.d/z_bx_custom.cnf [mysqld] server-id = 2 binlog_format=row log=/var/log/mysqld.log log_error = /var/log/mysqld.log log-bin = /var/lib/mysql/server-mysql-bin log-bin-index = /var/lib/mysql/server-mysql-bin.index relay-log = /var/lib/mysql/slave-mysql-relay-bin relay-log-index = /var/lib/mysql/slave-mysql-relay-bin.index replicate-do-db = sitemanager0 replicate-ignore-db=test replicate-ignore-db=information_schema replicate-ignore-db=mysql replicate-ignore-db=performance_schema binlog-ignore-db = information_schema binlog-ignore-db = mysql binlog-ignore-db = performance_schema auto_increment_increment = 10 auto_increment_offset = 4 log-slave-updates
      
      





2番目のマシンでmysqlを再起動します。



 [root@bitrix2 ~]# /etc/init.d/mysqld restart
      
      





レプリケーションの場合、両方のマシンでレプリケーターユーザーを作成します。



 root@bitrix1 /]# mysql -u root -p Enter password: mysql> create user 'replicator'@'%' identified by 'aGiV4uac'; mysql> grant replication slave on *.* to 'replicator'@'%'; root@bitrix2 /]# mysql -u root -p Enter password: mysql> create user 'replicator'@'%' identified by 'aGiV4uac'; mysql> grant replication slave on *.* to 'replicator'@'%';
      
      





繰り返しますが、最初のマシンに移動してレプリケーションを開始します。 これを行うには、 2番目のマシンbitrix2の名前master_logおよびmaster_log_positionを知る必要があります。



 [root@bitrix2 /]# mysql -u root -p -e 'show master status;' +-----------------------+--------+------------+-------------------------------------------+ | File |Position|Binlog_Do_DB| Binlog_Ignore_DB | +-----------------------+--------+------------+-------------------------------------------+ |server-mysql-bin.000029| 819 | |information_schema,mysql,performance_schema| +-----------------------+--------+------------+-------------------------------------------+
      
      





結果のリストから、 MASTER_LOG_FILE = server-mysql-bin.000029 、およびMASTER_LOG_POS = 819



このデータを使用して、最初のマシンでレプリケーションを構成します。



 [root@bitrix1 /]# root -p -e "CHANGE MASTER TO MASTER_HOST = '172.16.10.2', MASTER_USER = 'replicator', MASTER_PASSWORD = 'aGiV4uac', MASTER_LOG_FILE = 'server-mysql-bin.000029', MASTER_LOG_POS = 819;"
      
      





スレーブを実行します:



 [root@bitrix1 /]# mysql -u root -p -e 'start slave;'
      
      





ステータスを確認します。



 [root@bitrix1 /]# mysql -u root -p -e 'show slave status \G;' *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.16.10.2 Master_User: replicator Master_Port: 3306 Connect_Retry: 60 Master_Log_File: server-mysql-bin.000029 Read_Master_Log_Pos: 819 Relay_Log_File: slave-mysql-relay-bin.000002 Relay_Log_Pos: 72951 Relay_Master_Log_File: server-mysql-bin.000029 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: sitemanager0 Replicate_Ignore_DB: test,information_schema,mysql,performance_schema Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 819 Relay_Log_Space: 73113 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No 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: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 2
      
      





パラメーターSeconds_Behind_Master (マスターからのレプリカの時間遅延)はゼロでなければなりません:

Slave_IO_Stateは、 「マスターが偶数を送信するのを待機しています」と報告するはずです

Slave_IO_Running =はい

Slave_SQL_Running =はい



Slave_IO_State行に値がなく、 Seconds_Behind_MasterNULLの場合、レプリケーションは開始されていません。



最初のマシンbitrix1のmaster_logおよびmaster_log_positionを学習します。



 [root@bitrix1 /]# mysql -u root -p -e 'show master status;' +-----------------------+--------+------------+-------------------------------------------+ | File |Position|Binlog_Do_DB| Binlog_Ignore_DB | +-----------------------+--------+------------+-------------------------------------------+ |server-mysql-bin.000026| 2930 | |information_schema,mysql,performance_schema| +-----------------------+--------+------------+-------------------------------------------+
      
      





2番目のbitrix2マシンで、レプリケーションを構成します。



 [root@bitrix2 ~]# mysql -u root -p -e "CHANGE MASTER TO MASTER_HOST = '172.16.10.1', MASTER_USER = 'replicator', MASTER_PASSWORD = 'aGiV4uac', MASTER_LOG_FILE = 'server-mysql-bin.000026', MASTER_LOG_POS = 2930;" [root@bitrix2 ~]# mysql -u root -p -e 'stop slave;' [root@bitrix2 ~]# mysql -u root -p -e 'show slave status \G;'
      
      





次のパラメーターを表示する必要があります: Seconds_Behind_MasterSlave_IO_StateSlave_IO_RunningSlave_SQL_Runningは、マシンbitrix1でレプリケーションをセットアップする場合と同様のパラメーターです。



次に-Bitrix24間でデータ自体を同期する必要があります。 csync2を介してファイルを同期します。



csyncのインストールは、両方のマシンで実行する必要があります。



 [root@bitrix1 /]# yum install csync2 [root@bitrix2 /]# yum install csync2
      
      





両方のマシンの電源を入れます。



 chkconfig xinetd on chkconfig csync2 on
      
      





最初のマシンbitrix1で証明書を生成します:



 [root@bitrix1 /]# openssl genrsa -out /etc/csync2/csync2_ssl_key.pem 1024 [root@bitrix1 /]# openssl req -new -key /etc/csync2/csync2_ssl_key.pem -out /etc/csync2/csync2_ssl_cert.csr [root@bitrix1 /]# openssl x509 -req -days 600 -in /etc/csync2/csync2_ssl_cert.csr -signkey /etc/csync2/csync2_ssl_key.pem -out /etc/csync2/csync2_ssl_cert.pem
      
      





csync2キーを生成します。



 csync2 -k /etc/csync2/csync2.cluster.key
      
      





かなり長い生成プロセスの後、 csync2.cluster.keyキーが/ etc / csync2 /フォルダーに表示されます



csync構成の構成は次のようになります。



 [root@bitrix1 /]# cat /etc/csync2/csync2.cfg group cluster { host bitrix1 bitrix2; key /etc/csync2/csync2.cluster.key; include /home/bitrix/www;
      
      





両方のマシンで異なるパスワードを使用するため、データベースに接続するための設定ファイルを除外します。 キャッシュ付きのディレクトリも除外します。



 exclude /home/bitrix/www/bitrix/php_interface/dbconn.php; exclude /home/bitrix/www/bitrix/.settings.php; exclude /home/bitrix/www/bitrix/cache; exclude /home/bitrix/www/bitrix/managed_cache;
      
      





ファイル選択パラメーターを設定します。最新のものが残ります。



 auto younger; }
      
      





生成されたキーをcsync2.cfg構成ファイルとともにbitrix1からbitrix2にコピーします。たとえば、scpを使用します。



 scp /etc/csync2/csync2* root@172.16.10.2:/test
      
      





csync2が動作するすべてのプロジェクトファイルのローカルデータベースを構築します。



 [root@bitrix1 csync2]# csync2 -cr /
      
      





後-実行:



 [root@bitrix1 /]# /usr/sbin/csync2 –xv
      
      





エラーが発生した場合は、 / usr / sbin / csync2 –Tvを使用できます



コマンドがエラーなしで完了した場合、両方のマシンの/ etc / crontabにエントリを追加して、csyncを毎分開始できます。



 */1 * * * * root /usr/sbin/csync2 -x >/dev/null 2>&1
      
      





チェックを行うことは残っています。たとえば、ポータル自体にメッセージを作成し、bitrix24チャット、削除、ファイルの作成、および変更がノード間で転送されることを確認します。



単一のエントリポイントのオプションの1つとして、追加のサーバーにあるHAProxyを使用できます。 HAProxyのインストールと構成の概要は、この記事では考慮されません。 この問題に関する十分なガイドがありますが、例として、ファイル/etc/haproxy/haproxy.cfgの構成を示します。



 [root@haproxy haproxy]# cat haproxy.cfg global log 127.0.0.1 local2 notice chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon nbproc 1 # Number of processing cores. ulimit-n 65536 # turn on stats unix socket stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 5000 timeout queue 5000 timeout connect 5000 timeout client 5000 timeout server 5000 timeout http-keep-alive 30 timeout check 20 # maxconn 3000 frontend bitrix.local mode http bind :80 default_backend bitrix backend bitrix mode http balance roundrobin option httpchk option httpclose server bitrix1 172.16.10.1:80 check server bitrix2 172.16.10.2:80 check
      
      





サーバーを正常な状態にクラスター化してください。フォースが一緒にいるかもしれません。










SIM-CLOUD-ドイツのフェールオーバークラウド



ドイツの信頼できるデータセンターの専用サーバー!

あらゆる構成、迅速な組み立て、無料インストール



All Articles