ベリーパイ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
3、ベリーパイ(192.168.31.194)プロファイル/etc/keepalived/keepalivedを追加する.conf
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 &
注意:このように切り替えると、データベースからデータを同期してから切り替えるのを待たずに、プライマリ・セカンダリ・データが一致しないという問題が発生する可能性があります.プライマリ・スレーブ・データベースのデータが一致することを保証するには、データベースからのデータの同期完了を待つ必要があります.データの同期完了を検出するスクリプトを開発する必要があります.これは別の問題です.自分で確認してください.
テスト:service mysql stopがmysqlを停止し、クライアント・データベースのアクセスとインタラクションが正常かどうかを確認します.
樹莓派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を停止し、クライアント・データベースのアクセスとインタラクションが正常かどうかを確認します.