2019年4月15日月曜日

簡易キープアライブの設定

キープアライブはしばらく前から存在していましたが、それでも多くの人にとって謎です。
したがって、これは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     |
+ ------------ +