1.背景
MySQLの高可用性は、マスタースレーブレプリケーションにしたプログラムがたくさんあり、それだけが自動的に切り替わっていないときにメインのMySQLサーバーの障害データのコピーを持っていることが保証されています。Webサーバは、それを復元するために、二次接続のJDBC MySQLサーバ、Webアクセスのアドレスのためのアドレスを変更する必要があります。
このような欠点は以下のとおりです。
無人の場合は障害が深夜で、誰が対処する可能性がない一方、1、、、手動での介入が必要です。それとも昼間で行われても推定するが、障害は、時間内に見つからない、または業務に影響を与えます。
2は、ビジネスが中断され、景気回復を指すWebサーバーを変更するために、発見するために、メインのMySQLサーバにハングアップ、シャットダウンされ、中盤にはいくつかの時間のためにサービス外となります。
したがって、本明細書で、マスタコピーに基づいて、これは、メインサーバから実現MySQLの自動切替に達成されました。
2、実験環境
MySQLの仮想IP:10.1.30.30
MySQLのプライマリサーバ:10.1.30.28
サーバからのMySQL:10.1.30.29
3、設定
3.1インストールキープアライブ
yumをインストール-y keepalivedの
3.2キープアライブ編集設定ファイル
3.2.1メインサーバー設定ファイル
CDの/ etc / keepalivedの RM keepalived.conf元の設定ファイル のvi keepalived.conf、新しいプロファイルを作成します
!設定ファイルforkeepalived global_defs { notification_email_from [メールには、保護された] SMTP_SERVER 127.0.0.1 smtp_connect_timeout 30 MYSQL_HA番号識別、同じデュアルマスターのROUTER_ID } VI_1 {vrrp_instance 両方がバックアップBACKUPに設定された状態# インターフェイスのeth1 virtual_router_idスタンバイ#51は、同一である 優先順位100#プライオリティ、別の90 advert_int。1つの nopreempt#プリエンプションは、唯一の優先度の高い機械に設けることができ、機械は、低優先度の設定はありません {認証 PASS AUTH_TYPE AUTH_PASS 1111 } virtual_ipaddressを{ 10.1.30.30 } } 10.1 VIRTUAL_SERVER。 {3306 30.30 ステータスreal_serverをチェックするために2秒ごとに一度#2 delay_loop lb_algo WRR #LVSアルゴリズム lb_kind DR #LVSモード persistence_timeout 60#セッションタイムホールド プロトコルにTCPを real_server 10.1.30.28 3306 { 重り3 /etc/keepalived/mysql.sh#スクリプトがダウン検出サービスの後に実行されるnotify_down TCP_CHECK { 10#接続CONNECT_TIMEOUTタイムアウト nb_get_retry 3位回再接続 delay_before_retry 3#再接続間隔 connect_port 3306#健康検査ポート } } }
サーバーから3.2.2の設定ファイル
!設定ファイルforkeepalived global_defs { notification_email_from [メールには、保護された] SMTP_SERVER 127.0.0.1 smtp_connect_timeout 30 MYSQL_HA番号識別、同じデュアルマスターのROUTER_ID } VI_1 {vrrp_instance 両方がバックアップBACKUPに設定された状態# インターフェイスのeth1 virtual_router_idスタンバイ#51が同一で 優先90#プライオリティ、別の90 advert_int。1つの nopreempt#プリエンプションは、唯一の優先度の高い機械に設けることができ、機械は、低優先度の設定はありません {認証 PASS AUTH_TYPE AUTH_PASS 1111 } virtual_ipaddressを{ 10.1.30.30 } } 10.1 VIRTUAL_SERVER。 {3306 30.30 ステータスreal_serverをチェックするために2秒ごとに一度#2 delay_loop lb_algo WRR #LVSアルゴリズム lb_kind DR #LVSモード persistence_timeout 60#セッションタイムホールド プロトコルにTCPを real_server 10.1.30.29 3306 { 重り3 /etc/keepalived/mysql.sh#スクリプトがダウン検出サービスの後に実行されるnotify_down TCP_CHECK { 10#接続CONNECT_TIMEOUTタイムアウト nb_get_retry 3位回再接続 delay_before_retry 3#再接続間隔 connect_port 3306#健康検査ポート } } }
MySQLのプロセス検出スクリプトの作成3.2.3
その後、主に追随し、ファイルを作成します。(スタンバイを追加する必要があります)
Vimの/etc/keepalived/mysql.sh
これは次のように読み取ります。
#!/ binに/ bashの pkillはkeepalivedの SLEEP 10 >を/ dev / nullを開始/etc/init.d/keepalived ----------(エンドコンテンツ)
chmodの+ X /etc/keepalived/mysql.sh
サービスkeepalivedの開始
スタートからの起動を高めるためにkeepalivedの必要性を忘れないでください。
chkconfigのは、上のkeepalivedの
再起動後は、使用することができます
/etc/init.d/keepalived状況
プロセスが開始されているかどうかを確認します。
注:のmysqldサービスを再起動するために2台のマシンを必要とし、手動
サービスkeepalivedの再起動
また、あなたは今、どのホストで、フローティングIPとしてIPで見ることができます。
4.確認し発効
4.1展開ウェブサイト
試験の前に、あなたがウェブサイトを持っている必要がまず最初に、あなたは以前の記事を参照することができます[実用的なエクササイズ] Linuxオペレーティングシステム05- LAMPとウェブサイト構築やウェブサイト構築07- Tomcatで[実践的な演習] Linuxオペレーティングシステムを、導入を。
プライマリ・データベース・サーバのmysqlの(10.1.30.28)にし、MySQLサーバ(10.1.30.29)から展開しながら、もちろん、ウェブデータベースは、個別に展開されます。
4.2 Web設定を変更します
config.phpのデータベースがVIP(10.1.30.30)をホストに設定されている、ウェブサイトやピア接続JDBCファイルのデータベースを変更するのではなく、マスターまたはサーバの実IPアドレスから。
4.3テスト
Webサイトのドメイン名、Webサイトに直接アクセスして、もし通常のアクセスを参照してください。あなたが正常にアクセスできる場合は、プライマリサーバにログインし、
サービスが停止しmyslqd
可能ならば、成功したメインスイッチの正面から、まだ正常な訪問であるかどうかを確認するために、Webサイトのドメイン名を訪問し続けています。