キープアライブはしばらく前から存在していましたが、それでも多くの人にとって謎です。
したがって、これはkeepalivedがMySQLでどのように機能するかを示す非常に単純な例です。 うまくいけば、これは質問がある人を助けることができます。
Simple master to slaveをセットアップします。 意味..あるイベントで2番目にフェイルオーバーしない限り、1つに書き込みます。
1日 - インストールkeepalived
2人のホストがいます
したがって、これはkeepalivedがMySQLでどのように機能するかを示す非常に単純な例です。 うまくいけば、これは質問がある人を助けることができます。
Simple master to slaveをセットアップします。 意味..あるイベントで2番目にフェイルオーバーしない限り、1つに書き込みます。
1日 - インストールkeepalived
#yum検索キープアライブ
keepalived .x86_64:ロードバランサと高可用性サービス
名前と要約の一致のみ 。すべてを "search all"で検索してください。
#yum -y install keepalived
これで設定ファイルができました
#ls -ltr /etc/keepalived/keepalived.conf
あなたがいつもバックアップしているようにオリジナルを保存してください..正しい....
#cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.orig
だからあなたはあなたの仮想IPアドレスに使用できるIPアドレスを把握する必要があります。 この例では192.168.0.123を選びました。
次に、新しい設定ファイルに使用するスクリプトを設定します。
ここで私がしたことがいくつかあります。
keepalived用の.cnfファイルと/ etc / keepalived内のログをすべて残しました。
これは例のためにそれを簡単にする従ってあなたがこれをするかまたはあなた自身のcnfファイルを使用することができる。
スクリプト:
cat /etc/keepalived/keepalived_check.sh
#!/ bin / bash
#MySQLの状態を監視する
#このノードmysqlが停止している場合
#そしてその奴隷は生きている、それからそのキープアライブを止めなさい。 もう一方のノードがIPをバインドします。
export MYSQL_HOME = / etc / keepalived /
export PATH = $ MYSQL_HOME / bin:$ PATH
mysql = "/ usr / bin / mysql"
mysqladmin = "/ usr / bin / mysqladmin"
delay_file = "$ MYSQL_HOME / slave_delay_second.log"
slave_host = $ 1
ALIVE = $($ mysqladmin --defaults-file = $ MYSQL_HOME / .my.localhost.cnf ping | 生きてる wc -l);
REMOTEALIVE = $($ mysqladmin --defaults-file = $ MYSQL_HOME / .my.remotehost.cnf ping | 生きてる wc -l);
if [[$ ALIVE -ne 1]]
それから
#echo「MySQLがダウンしています」
if [[$ REMOTEALIVE -eq 1]]
それから
# エコー「シャットダウンキープアライブ」
systemctl stopキープアライブ
# エコー「keepalived stop」
fi
#その他
#echo「MySQLは稼働しています」
#日付
fi
終了0#すべて終了
新しい設定ファイル
cat /etc/keepalived/keepalived.conf
global_defs {
notification_email {
anothermysqldba@gmail.com
}
notification_email_from anothermysqldba@gmail.com
smtp_server localhost
smtp_connect_timeout 30
}
vrrp_script check_mysql {
スクリプト "/etc/keepalived/keepalived_check.sh"
間隔2
重さ2
}
vrrp_instance VI_1 {
州マスター
インタフェースenp0s8 #<---インターフェース名があなたの本当のIP / sbin / ifconfigを保持するもの
#ip link showで見つかった
virtual_router_id 51
優先度101
advert_int 1
いらない #優先順位の高いノードでのみ必要
認証{
auth_type PASS
auth_pass 1111
}
track_script {
check_mysql
}
virtual_ipaddress {
192.168.0.123
}
}
これはすべて素晴らしいことですが、うまくいきますか。
2人のホストがいます
[root @ centosa keepalived]#ホスト名
セントーサ
[root @ centosb keepalived]#ホスト名
centosb
キープアライブを開始
[root @ centosa keepalived]#systemctl statusキープアライブ
●keepalived.service - LVSおよびVRRPハイアベイラビリティモニタ
ロード済み:ロード済み(/usr/lib/systemd/system/keepalived.service;無効、ベンダーのプリセット:無効)
アクティブ:非アクティブ(デッド)
[root @ centosa keepalived]#systemctl restartキープアライブ
[root @ centosa keepalived]#systemctl statusキープアライブ
● keepalived.service - LVSおよびVRRPハイアベイラビリティモニタ
ロード済み:ロード済み(/usr/lib/systemd/system/keepalived.service;無効、ベンダーのプリセット:無効)
アクティブ: アクティブ(実行中)
[root @ centosa keepalived]#ssh 192.168.0.123 'hostname'
root@192.168.0.123のパスワード:
セントーサ
接続が既に機能していることを証明する
[root @ centosa keepalived]#mysql - デフォルトファイル= .my.remotehost.cnf --host = 192.168.0.101 -e "select @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| centosb |
+ ------------ +
[root @ centosa keepalived]#mysql - デフォルトファイル= .my.remotehost.cnf --host = 192.168.0.102 -e "select @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| セントーサ |
+ ------------ +
実行されていることを再確認してください。
[root @ centosa keepalived]#systemctl statusキープアライブ| grep active
アクティブ: アクティブ
[root @ centosb keepalived]#systemctl statusキープアライブ| grep active
アクティブ: アクティブ
現在のVIPをテストします。mysqlを停止し、同じVIPがホストを変更するのを見ます...
[root @ centosa keepalived]#mysql - デフォルトのファイル= .my.remotehost.cnf --host = 192.168.0.123 -e "select @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| セントーサ |
+ ------------ +
[root @ centosa keepalived]#systemctl stop mysqld
[root @ centosa keepalived]#mysql - デフォルトのファイル= .my.remotehost.cnf --host = 192.168.0.123 -e "select @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| centosb |
+ ------------ +