MySQLのkeepalivedの

2台のサーバが、すでに高い可用性を確保するために、今してkeepalivedの、マスター・マスター・レプリケーションを行っています。

さらに騒ぎがなければ、最初の2台のサーバーがkeepalivedのインストールされています。

yumのkeepalivedの-yをインストール

インストールが成功しました。

/etc/keepalived/keepalived.conf:デフォルトのコンフィギュレーション・ファイルを使用しkeepalivedの

インストール後にデフォルトがあるでしょう、私たちは、実際には、すべての権利をバックアップしていないものをバックアップすることができます

以下の構成を使用しkeepalived.conf:

[マスタ1ルート@〜]#のCPの/etc/keepalived/keepalived.confの/etc/keepalived/keepalived.conf.bak 
[マスタ1ルート@〜]は##のVimの/etc/keepalived/keepalived.confは、次のダイレクトを使用して、デフォルトのコンテンツを空に設定:
!keepalivedのためのコンフィギュレーション・ファイル
       
global_defs {  
  ROUTER_ID mysql1 
} 
       
vrrp_script chk_mysql_port {#mysqlのサービスが実行されている検出。などのプロセス、スクリプトテスト、など多くの方法がある
    スクリプト「/opt/chk_mysql.sh」#スクリプトを監視することにより、ここで
    一度2S試験、インターバル2#スクリプトの実行間隔を
    検出する重量-5#スクリプト優先度変更結果を故障(非スクリプトが0を返す)、優先-5 
    秋#2は、2つの連続障害が真の故障を判定するために考えられている検出します。それは重量と優先順位(1〜255)を削減する
    としても成功した場合は1つの#1の検出に成功した立ち上がり。しかし、優先順位の変更はありません
} 
       
vrrp_instanceのVI_1を{ 
    州BACKUP    
    interface enp0s3         #指定虚拟ip的网卡接口
    100#ルータ識別をvirtual_router_id MASTERが一貫とバックアップである必要があり、
    101位の優先順位を定義し、優先順位番号が大きいほど、優先順位が高いほど、同じvrrp_instance下、MASTER優先度は、バックアップの優先度よりも高くなければなりません。このような障害の後MASTER回復、もう一度VIPリソース取り戻すことができ
    advert_int 1          
    の認証を{    
        AUTH_TYPE PASS 
        AUTH_PASS 1111      
    } 
    virtual_ipaddress {     
        192.168.1.222#が設定した仮想IP 
    } 
      
    track_script {                
       chk_mysql_port              
    } 
}
ハングアップした後、このマシンのメール通知のグローバル、主に使用されMySQLをglobal_defsが、主にはない、ここで最初のメール通知メカニズムを設定するには、実際には、サーバーのID番号、二つのサーバ、ROUTER_IDです値が異なるように
vrrp_scriptのmysqlは通常、スクリプトかどうかをチェックするように構成され、スクリプトは以下のとおりであります
vrrp_instanceは一例であり、注意点:
状態はまだVIP、MySQLで良好等、ノンプリエンプティブは、MySQLは、VIPにA、Bに掛けさ設けnopreemtが浮上します結合表すBACKUPを策定Bに、Bは何を。つかむ、mysqlは上でハングアップするまで、それもすべての顧客サービスのために、うまくつかむために良いもの、VIPアップに浮いていない。そして、それは、より合理的な考えになるまで待機する
インタフェースをダビングします私は私のサーバー上で見た現在の実際のIPマシンの使用カード、などはeth0時にはとしては、しかしですenp0s3:
virtual_router_id
。ルータの識別、MASTERとBACKUPは一貫していなければならない
ノンプリエンプティブモードに設定nopreempt、またはこれを使用しないでください良い、以下に説明する。

コンフィギュレーション以下の二機はkeepalivedの与えられました:
[ルート@ localhostのオプト]#猫の/ etc / keepalivedの/ keepalived.conf 
コンフィギュレーション・ファイルのためのkeepalivedの

global_defs { 
    ROUTER_ID mysql2 
} 

vrrp_script chk_mysql_port { 
    スクリプト" /opt/chk_mysql.sh " 
    間隔2 
    重量 - 5 
    落下2 
    立ち上がり1 
} 

VI_1 {vrrp_instance 
    状態バックアップ
    インターフェースenp0s3 
    virtual_router_id 100 
    優先97 
    advert_int 1 
    認証{  
        AUTH_TYPEのパス
        auth_pass 1111 
    } 
    virtual_ipaddress { 
        192.1681.222 
    } 
    track_script {                
        chk_mysql_port              
    } 
}

それだけで2つのマシンがROUTER_IDと優先度異なることがわかる。そして、両方がBACKUP、無nopreemptになるように設定されています。

/opt/chk_mysql.shスクリプト:
#!/ binに/ bashを
MYSQL =は/ usr / binに/ mysqlの
MYSQL_HOST = localhostを
MYSQL_USER = c1551 
MYSQL_PASSWORD = 1qaz @ WSX3edc 
CHECK_TIME = 3 
  
#mysql取り組んでいるMYSQL_OKはある1ダウンのmysql MYSQL_OKは、0 
  
MYSQL_OK = 1 
  
関数check_mysql_helth(){ 
    $ MYSQL -h $ MYSQL_HOST -u $ MYSQL_USER -p $ {MYSQL_PASSWORD} -e " 表示状態; " >は/ dev / nullに 2 >&1 
    なら [$?= 0 ]。それから
    MYSQL_OK = 1 
    
    MYSQL_OK = 0 
    Fiの
    エコー$ MYSQL_OKの
    リターンの$ MYSQL_OK 
} 
ながら、 [$ CHECK_TIME -ne 0 ]
 ない
    しましょう" CHECK_TIME - = 1 " 
    check_mysql_helth 
場合は [$ MYSQL_OK = 1 ]; その後、
    CHECK_TIME = 0 
    、出口0 
Fiの
場合は [$ MYSQL_OK -eq 0 ] && [$ CHECK_TIME -eq 0 ]
 、次に
    エコー ' keepalivedの殺害... '
    pkillはkeepalivedの
    終了1 

    エコー keepalivedの殺傷ない... 
Fi回線
睡眠 1 
完了
プリエンプティブ非プリエンプティブの場合、誰かがそう言います:
キープアライブは、ベースのホストのLinux上の設定ファイルに応じて健康診断を達成するために、VRRPプロトコルデーモンの通りです。
VRRPはプロトコルであり、それは動的にLAN上のVRRPルータの1つに割り当てられた仮想ルータの責任であることができます。
ルータの制御VRRP仮想ルータのIPアドレスは、これらのIPアドレスに送信されたパケットを転送するマスタルータと呼ばれています。
マスターに障害が発生したら、この選択プロセスは、デフォルトのホストターミナル最初のホップルータとして仮想ルータのIPアドレスを許可するダイナミックなフェイルオーバー・メカニズムを提供します。
調製キープアライブ選出マルチキャスト、ユニキャスト、など(カスタム)、達成マスターキープアライブ。そして操作のプリエンプションモードはノンプリエンプティブ(制御パラメータnopreempt)に分割されます。
1 )プリエンプティブモード:
メインサービスが動作している、仮想IPは、プライマリおよびバックアップサービスになります機器が提供する、機器よりも低い優先順位の主なサービス、機器が自動的に仮想IPをつかむだろうと、それから、サービスの主な提供ではありません、使用できません。サービス。
言い換えれば、関係なく、スタンバイ、単に優先順位の、プリエンプティブモードで動作します。
かかわらずkeepalivedのの、設定どおり状態構成マスタまたはバックアップに研究会、単に優先度の高い優先度(一般的には、状態がマスタBACKUPよりも高い優先度である)人を確認します。
優先権の回復の後に、VIPリソースが自動的に再びつかむだろう、優先度の高いです!
2 )非プリエンプティブモード:
このように、一般advert_int線の下方に配置されたパラメータnopreempt()が制御されます。優先順位は、優先順位に関係なく、限りMASTERマシンに障害が発生したとして、VIPリソースはBACKUPに切り替えられます。
バックVIPプリエンプションに行かないとき、MASTERマシンバック、そして、BACKUPマシンの故障まで、自動的に切り替えることができます。
千万注意:
このパラメータはバックアップに設定されているバックアップ用のケースを述べるので、マスタ状態とバックアップを設定するための時間を取るために使用することができnopreempt、これはkeepalivedのノンプリエンプティブモードを実現します!

言い換えれば、
マスターとしてA)状態の状態、バックアップのいずれかに加えずにこのパラメータnopreemptは同じ効果です。これは、VIPリソースをつかむ者を決定するために優先順位優先度に応じている、それはプリエンプティブモードです!
状態ステータスがバックアップに設定されている場合b)は、nopreemptない設定パラメータ場合、優先度はVIPリソースをつかむだれ決定する優先順位を確認することです、それはプリエンプションモードです。
設定パラメータがnopreempt場合c)の状態ステータスは、その後、あなたが優先順位の優先順位、ノンプリエンプティブモードを考慮することはありません、バックアップに設定されている場合は!それは唯一のVIPは現在マシンは、別のマシンがVIPを引き継ぐことができない存在です。でもマシンはスナッチVIPを復元するためのイニシアチブを取らない高優先度の後、唯一の他の当事者が失敗するまで、VIPがカットバックされます待つことができます。

しかし、私が発見した私は、両方のバックアップを設定し、マシン上でMySQLがハングアップした場合の健康チェックは、このマシン上で優先度が低いkeepalivedの、見ていないが、その後、上記のスクリプトを、ヘルスチェックをnopreempt有効にして使用している場合上記の言ったので、つかむプラスVIPにイニシアチブを取ることはありませんが、このマシン上でまだVIP、これだけのマシンにkeepalivedのか、直接マシンにリンクされているが、ハングアップ、VIPは他にドリフトします機械!!!このマシン上のMySQLの!!! WTFぶら下がっていますが、しかし、マシンまたは片側と他のMySQLアップにkeepalivedの、また、これは私が欲しいものは明らかではありませんVIPを取っています!そう、かどうかだけでなくnopreempt構成され、優先度はVIPを解放し、自動的にマシンを減らすためにしてみましょう。

上記。

 
 
 

おすすめ

転載: www.cnblogs.com/lihan829/p/11427162.html