Keepalive がインストールされ、CentOS 7 で MySQL デュアル マスターを監視するように構成されている

キープアライブのインストール

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、若干の変更を加えています。

その他の構成の詳細: https://www.cnblogs.com/cyleon/p/10338822.html

おすすめ

転載: blog.csdn.net/u014641168/article/details/131982020