このエンタープライズクラスのアプリケーションでは、二層アーキテクチャプログラムを永続します。:最後に、エンタープライズ・アプリケーション、永続化フレームワークプログラム(同期デュアルプライマリ高可用性)です。レディ2つのMySQLデータベースノード:hadoop001、hadoop002。二つのノード相互バックアップ、それはデュアルマスター同期高可用性と呼ばれているか、二重シュウマスター同期可用性を実現するには?実際には、問題を2つに分割する必要があります。一つは、デュアルプライマリ同期、相互バックアップであり、他は、高可用性です。だから、デュアルマスターは、本明細書に相互バックアップを実現してきた上で、このIPは仮想keepalivedの通過高可用性を実現します:
1. keepalivedのインストール
1.1.hadoop001ノード
#インストールはkeepalivedの yumの インストール - keepalivedのY- #は、サービス開始keepalivedの /etc/init.d/のが起動しますkeepalivedの ----------------------------- -------------- [ルート@のhadoop02のanginx]#の /etc/init.d/の起動keepalivedの keepalivedの開始:[OK] [ルート@ hadoop02のanginx]#PS -ef | grepのkeepalivedの ルート 15723 1 0 00:59? 00:00:00は/ usr / sbinに/ keepalivedの- Dの ルート 15724 15723 0 00:59? 00:00:00は/ usr / sbinに/ keepalivedの- D ルート 15725 15723 0 00:59? 00:00:00は/ usr / sbinに/ keepalivedの- D ルート 15731 15622 0 00:59の PTS / 1 00:00:00 grepがkeepalivedの [ルート@のhadoop02のanginx]#の 開始から#セットブートを エコー 」/etc/init.d/keepalived開始" >>は/ etc / rc.localに #近いkeepalivedのサービスが 停止し/etc/init.d/keepalived
1.2.hadoop002ノード
説明:参考hadoop001ノードのインストール
2. [設定keepalivedの
2.1.hadoop001ノード
#编辑keepalivedの配置文件 のviの/ etc / keepalivedの/ keepalived.conf ------------------------------------ ----------------------- !コンフィギュレーション・ファイルのためのkeepalivedの global_defs { {notification_email [email protected] [email protected] [email protected] } notification_email_from [email protected] SMTP_SERVER 192.168。200.1 smtp_connect_timeout 30 ROUTER_ID mysql_ha } VI_1 vrrp_instance { 状態バックアップ インターフェースeth1が virtual_router_id 55 優先順位100 advert_int 1。 nopreempt#のみマスターのリソースを先取りしないこの高い優先度が設定され、バックアップが設けられていない 認証{ PASS AUTH_TYPE AUTH_PASS server123のを } virtual_ipaddress { 192.168。80.40 DEVのeth1のラベルのeth1:1 } }を VIRTUAL_SERVER 192.168。80.40 3306 { delay_loop 2 #lb_algo #LVSのRRアルゴリズムは、我々が閉じ未満 #lb_kind DR #LVSモードを閉じていない場合、バックアップサーバは、メインVIPに接続できないMySQLは persistence_timeout 60 #は60秒に同じIP接続を割り当てられているが同じ実サーバ TCPプロトコル real_server192.168。80.30 3306 {#バックアップは、ローカル書き込みMySQLの検出、ローカルのMySQLを検出 体重を3 notify_downは/ usr / local /開発/シェル/ MySQLの。SHの #をダウンmysqサービス、このスクリプトを実行し、スイッチを殺すが実現keepalivedの TCP_CHECKを{ CONNECT_TIMEOUT 。3 #接続タイムアウト nb_get_retry 。3回の リトライ#1 delay_before_retry 。3 #再試行間隔 } } .............................. .............................
2.2.hadoop002ノード
#编辑keepalivedの配置文件 のviの/ etc / keepalivedの/ keepalived.conf ------------------------------------ ----------------------- !コンフィギュレーション・ファイルのためのkeepalivedの global_defs { {notification_email [email protected] [email protected] [email protected] } notification_email_from [email protected] SMTP_SERVER 192.168。200.1 smtp_connect_timeout 30 ROUTER_ID mysql_ha } VI_1 vrrp_instance { 状態バックアップ インターフェースeth1が virtual_router_id 55 優先90 advert_int 。1つの 認証{ PASS AUTH_TYPE AUTH_PASS server123の } {virtual_ipaddressを 192.168。80.40 DEVのeth1 eth1のラベル:。1 } } VIRTUAL_SERVER 192.168。80.40 3306 { delay_loop 2 以下#lb_algo #LVSのRRアルゴリズムを、我々は閉じより #lb_kind DR #LVSモード、閉じられていない場合は、バックアップサーバは、MySQLがメインVIP接続することはできません persistence_timeout 60 60秒以内に同じ実サーバに割り当てられている#同じIP接続を プロトコルTCP real_server 192.168。80.31 3306 {#ローカルのMySQLを検出し、バックアップもローカル書き込みMySQLの検出 体重を3 notify_downは/ usr / local / /シェル/ MySQLを開発する。SHの #ダウンするとmysqサービス、このスクリプトを実行し、スイッチを殺すが実現keepalivedの TCP_CHECK { CONNECT_TIMEOUTを。3 #接続タイムアウト nb_get_retry 。3回の #リトライ delay_before_retry 。3 #再試行間隔 } } ................................ ...........................
3.スクリプトスイッチを書きます
#mysql.shスクリプト CDは/ usr / local /開発/ シェル のviのMySQL。SH -------------------------------- --------------------------- #!/ binに/ bashの pkillはkeepalivedの #スクリプトに実行権限を追加し ます。chmod U + X-MySQLを。SHの #をもう一度keepalivedの開始 /etc/init.d/keepalived再起動を
4.テストプログラム
1 。それぞれhadoop001、MySQLサービスノード開始hadoop002 2 。それぞれhadoop001、hadoop002 keepalivedのサービスノード開始 3仮想IP :. 192.168。80 0.40 MySQLサービスの接続、および操作、正常か否かを確認する 4 。現在の仮想IPことを想定それはhadoop001ノード落ちる 5。hadoop001停止MySQLサービス・ノードは、関連するMySQLの操作を再度、それが正常であるかどうかを確認します