キープアライブのインストール
MySQL デュアルマスター構成については、こちらを参照してください: https://tongyao.blog.csdn.net/article/details/132016200?spm=1001.2014.3001.5502
2 つのサーバー 128 と 129 のインストール手順は同じですが、以下に紹介する構成ファイルが異なります。
1. 関連する依存関係パッケージをインストールし、keepalived インストール パッケージをダウンロードし、解凍、構成、コンパイルします。
[root@128 ~]# cd /opt
[root@128 opt]# yum -y install gcc openssl-devel popt-devel psmisc
[root@128 opt]# wget https://www.keepalived.org/software/keepalived-2.2.7.tar.gz
[root@128 opt]# tar -zxvf keepalived-2.2.7.tar.gz
[root@128 opt]# cd keepalived-2.2.7
[root@128 keepalived-2.2.7]# ./configure --prefix=/opt/keepalived-2.2.7
[root@128 keepalived-2.2.7]# make && make install
2. ファイルを対応するディレクトリにコピーします。
[root@128 keepalived-2.2.7]# mkdir /etc/keepalived
[root@128 keepalived-2.2.7]# cp keepalived/etc/keepalived/keepalived.conf.sample /etc/keepalived/keepalived.conf
[root@128 keepalived-2.2.7]# cp keepalived/etc/init.d/keepalived /etc/init.d/
[root@128 keepalived-2.2.7]# cp keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@128 keepalived-2.2.7]# cp bin/keepalived /usr/sbin/
3. 次の内容を含む新しい /etc/keepalived/shutdown.sh ファイルを作成します。
#!/bin/bash
#该脚本是在mysql服务出现异常时,将keepalived应用停止,从而使虚拟vip主机自动连接到另一台mysql上
killall keepalived
認可を強制します。そうしないと、MySQL 例外が発生したときに keepalive が閉じられません。
chmod 777 /etc/keepalived/shutdown.sh
4. ifconfig コマンドを使用してネットワーク カード名を確認します。ローカル ネットワーク カード名は ens33 です。
5. 128 server/etc/keepalived/keepalived.conf 構成ファイルを次のように変更します。
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_MASTER
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
#interface为刚才查到的本机网卡名称
interface ens33
#同一网段中同一组virtual_router_id值相同。不同组virtual_router_id值唯一。
#如server-1、server-2为一组,virtual_router_id=51
#server-3、server-4为一组,则virtual_router_id不能为51
virtual_router_id 51
#字数越大,优先级越高,master必须大于backup
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#该ip为虚拟出来的vip地址
192.168.222.130
}
}
#配置virtual_server ip为上面配置的虚拟vip地址 端口为mysql的端口
virtual_server 192.168.222.130 3306 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
#real_server 该配置为实际物理机ip地址 以及实际物理机mysql端口
real_server 192.168.222.128 3306 {
#当该ip 端口连接异常时,执行该脚本
notify_down /etc/keepalived/shutdown.sh
TCP_CHECK {
#实际物理机ip地址
connect_ip 192.168.222.128
#实际物理机port端口
connect_port 3306
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
6. 129 のserver/etc/keepalived/keepalived.conf 設定ファイルを変更します。128 の設定との違いは、real_server と connect_ip の 2 つの設定です。対応する実際のホスト IP を設定する必要があります。詳細は次のとおりです。
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_MASTER
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
#interface为刚才查到的本机网卡名称
interface ens33
#同一网段中同一组virtual_router_id值相同。不同组virtual_router_id值唯一。
#如server-1、server-2为一组,virtual_router_id=51
#server-3、server-4为一组,则virtual_router_id不能为51
virtual_router_id 51
#字数越大,优先级越高,master必须大于backup
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#该ip为虚拟出来的vip地址
192.168.222.130
}
}
#配置virtual_server ip为上面配置的虚拟vip地址 端口为mysql的端口
virtual_server 192.168.222.130 3306 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
#real_server 该配置为实际物理机ip地址 以及实际物理机mysql端口
real_server 192.168.222.129 3306 {
#当该ip 端口连接异常时,执行该脚本
notify_down /etc/keepalived/shutdown.sh
TCP_CHECK {
#实际物理机ip地址
connect_ip 192.168.222.129
#实际物理机port端口
connect_port 3306
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
詳細な設定については、「Keepalivedのインストールと設定の詳細説明」を参照してください。
7. サーバー 128 および 129 keepalived を追加して、起動時に自動的に起動し、サービスを開始します。
[root@128 keepalived-2.2.7]# systemctl enable keepalived
[root@128 keepalived-2.2.7]# systemctl start keepalived
8. 起動後、keepalived ステータスが active (running) であれば正常です。
9. 起動後は、VIP 192.168.222.130 を仮想化するのと同じになります。リモート接続ツールを使用してサーバーに接続できます。接続後、ifconfig を使用して、仮想 VIP が使用する実際の物理サーバーが 129 サーバーであることを確認します。 。
10. 129 サーバーの keepalived アプリケーションを停止し、130 サービスの ifconfig を再度確認します。130 サーバーが物理マシン IP を 128 サーバーに自動的にドリフトしていることがわかります。この時点で、keepalived の展開は完了です
。
mysql デュアル マスター デュアル アクティブ + キープアライブ高可用性全体テスト
1. まず、2 つのサーバー 128 および 129 上ですべての mysql アプリケーションと keepalived アプリケーションを起動し、次に mysql 接続ツールを使用して keepalived によって仮想化された 192.168.222.130 サーバーに接続します。
2. id=3、name='wangwu' を 130 データベース test_db ライブラリの t_test テーブルに挿入します。
3. この時点では、128 および 129 データベースを表示でき、データは同期されています。
4. サーバー 130 の ifconfig によって使用される実際の物理マシンが 128 であることを確認します。つまり、128 のサーバー mysql がメイン データベースです。
5. この時点で、128 サーバー mysql を手動で停止します。Keepalived は、128 サービス ポート 3306 接続の失敗を検出し、/etc/keepalived/shutdown.sh スクリプトを実行して 128 サーバー keepalived アプリケーションを終了します。
6. この時点で、再度 130 サービスに接続し、ifconfig を確認すると、実際に物理マシンが 128 から 129 サーバーに転送されていることがわかります。
7. 次に、mysql 接続ツールを使用して 130 の mysql に接続し、データ id=4、name='zhaoliu' を挿入し、データが 129 サーバーの mysql に保存されているかどうかをテストします。
8. サーバー mysql データを確認します。データは同期されており、keepalived が高可用性を正常に確立したことを示しています。サーバー mysql で問題が発生すると、keepalived は自動的に IP を物理マシン 129 サーバーにドリフトします。サーバー mysql はメインデータベースとして機能します。
9. この時点で、128 サーバーの mysql アプリケーションと keepalived アプリケーションを起動します。
10. 128 データベースの t_test テーブルのデータを確認すると、データは正常に同期されています。
11. ドリフトが失敗する場合は、同じネットワーク セグメント内の virtual_router_id の重複が原因である可能性があります。他のIPが使用されているかどうかを確認する実行可能コマンド
[root@128 keepalived-2.2.7]# tcpdump -i 网卡名 vrrp -n |grep virtual_router_id值
#例如:
[root@128 keepalived-2.2.7]# tcpdump -i eno16777736 vrrp -n |grep 51
この時点で、mysql デュアルマスター デュアルアクティブ + キープアライブの高可用性の展開とテストが完了しました。
記事参照: https://blog.csdn.net/a360284634/article/details/89892028、若干の変更を加えています。