ベリーパイkeepalived+mysqlデュアルMアーキテクチャ高可用性構成

3015 ワード

一、環境
樹莓派3 B使用NIC:wlan 0 ip:192.168.31.209
樹莓派3 B使用NIC:wlan 0 ip:192.168.31.194
二、mysqlのインストールと構成
1、各ベリーパイにmysqlサービスをインストールし、bind_addrは0.0に配置する.0.0、ベリーパイのすべてのipアドレスをバインド
2、2台のベリーパイのmysqlは2つのMアーキテクチャに配置され、互いに主従し、ネット上の多くの例を自分で検索する.
三、keepalivedインストール構成
1、apt-get install keepalivedインストールkeepalivedサービス
2、樹莓派(192.168.31.209)プロファイル/etc/keepalived/keepalivedを追加する.conf
global_defs{
        notification_email{
                [email protected]
                [email protected]
        }
        notification_email_from [email protected]
        smtp_server 127.0.0.1
        stmp_connect_timeout 30
        router_id lnmp_node1
}

vrrp_instance lnmp {
        state MASTER
        interface wlan0
        virtual_router_id 100
        priority 200
        advert_int 5
        authentication {
                auth_type PASS
                auth_pass 123456
        }
        virtual_ipaddress {
                192.168.31.110
        }
}

3、ベリーパイ(192.168.31.194)プロファイル/etc/keepalived/keepalivedを追加する.conf
global_defs{
        notification_email{
                [email protected]
                [email protected]
        }
        notification_email_from [email protected]
        smtp_server 127.0.0.1
        stmp_connect_timeout 30
        router_id lnmp_node1
}

vrrp_instance lnmp {
        state BACKUP
        interface wlan0
        virtual_router_id 100
        priority 150
        advert_int 5
        authentication {
                auth_type PASS
                auth_pass 123456
        }
        virtual_ipaddress {
                192.168.31.110
        }
}

4、2台のベリーパイでkeepalivedサービスをそれぞれ起動する:keepalived-f/etc/keepalived/keepalived.confが起動したlogはシステムlogファイルに印刷されます
/var/log/messagesでは、起動が完了すると仮想ルータクラスタが生成され、VIPはプロファイルの192.169である.31.110、クライアントはこのIPでデータベースアクセスとインタラクションを行う
5、shutdownの1台のベリーパイをテストすることができて、配置が正常かどうかをテストして、ipは正常に切り替えることができて、ip addrコマンドで192.169を見ることができます.31.110このipは2台のベリーパイで切り替えます
三、健康診断シナリオ
以前の手順では、サーバのダウンタイム、ダウンタイムによる問題しか解決できませんでした.サーバが正常でmysqlサービスが異常であるという問題を解決できません.スクリプトで健康診断を行い、それぞれ2台のベリーの列で以下のスクリプトを実行する必要があります.スクリプトは起動するように構成する必要があります.
       nohup sh/etc/keepalived/mysqlHealthCheck.sh  >/dev/null 2>log &
#!/bin/sh
while :
do

mysql -uroot -proot -e "select version();"
if [ $? -ne 0 ]; then
    #echo "mysql error!!!"
    service keepalived stop
else
    keepalivedcheck=`ps -C keepalived --no-header | wc -l`
    if [ $keepalivedcheck -eq 0 ]; then
              service keepalived start
         else
              #echo "keepalived is running"
              :
    fi
    #echo "mysql running!!!"
fi
sleep 5
done

注意:このように切り替えると、データベースからデータを同期してから切り替えるのを待たずに、プライマリ・セカンダリ・データが一致しないという問題が発生する可能性があります.プライマリ・スレーブ・データベースのデータが一致することを保証するには、データベースからのデータの同期完了を待つ必要があります.データの同期完了を検出するスクリプトを開発する必要があります.これは別の問題です.自分で確認してください.
テスト:service mysql stopがmysqlを停止し、クライアント・データベースのアクセスとインタラクションが正常かどうかを確認します.