1 keepalivedの
3.1Keepalived はじめに
keepalivedのサーバーの可用性が高性能溶液またはホットスタンバイであり、keepalivedのサーバが単一障害点の発生を防止するために使用することができ、高い可用性がnginxの持つWebフロントエンドサービスを介して達成することができます。
VRRPプロトコル、高可用性(HA)とVRRPプロトコルの基礎をkeepalivedの。グループ内の一方の内部ルータVRRP(仮想ルータ冗長プロトコル)プロトコルは、外部の仮想ルータIP(一つ以上)を提供する、複数のルータ装置に冗長ルータを実現するためのプロトコル、VRRPプロトコル仮想デバイスであります外部IPルータの物理的な所有が正常に動作している場合は、それがMASTERで、または選出されたアルゴリズムにより、MASTERは、ARP要求、ICMP、および転送データ、などなどのネットワーク機能、各種の仮想ルータIPのために達成;他のデバイスではありませんVRRPマスター状態が通知情報を受信しますが、外部のネットワーク機能を実行していない以外の仮想IP、状態は、BACKUPです。ホストに障害が発生した場合は、BACKUP MASTERは、元のネットワーク機能を引き継ぎます。VRRPプロトコルはVRRPデータ、VRRPデータ伝送データの特別な仮想送信元MACアドレスを使用してのではなく、独自のネットワークカードのMACアドレスを送信したマルチキャストデータを使用して、VRRPはマスタルータがマスターワークと仮想ルータIPを示すVRRP広告情報を送信し実行しますデータが送信されない時間の情報マスタ一定期間の通知を受信しなかった場合(群)は、VRRPバックアップがデータのみを受信し、それぞれは、通知情報を送信し、バックアップ・マスターとして、マスターの再選択状態を自分自身を宣言します。
3.2keepalived インストールと設定
3.2.1keepalived インストール
実験環境:
#猫の/ etc / redhatのリリース[〜ルート@ localhostの]
CentOSのLinuxのリリース1810年7月6日(コア)
[ルート@ localhostの〜]#keepalivedの-v
keepalivedのv1.3.5(03 / 19,2017)、Gitはv1.3.5-6-g6fa32f2をコミット
インストール開始 keepalivedのは:
[ルート@ localhostの〜]#yumをインストール-y keepalivedの# を取得するためのコマンド
設定は keepalivedの:
[ルート@ localhostの〜]#cpは /etc/keepalived/keepalived.conf{,.bak}# バックアップ変更する前に
[ルート@ localhostの〜]#のVimの/etc/keepalived/keepalived.conf
!keepalivedのための設定ファイル
global_defs {#グローバル定義
notification_email {#の関与していない実験で-mail通知は、必要に応じて、開く必要があり、何も設定はありませんsendmailのサービスを、または他のメールサービス
[email protected]
[email protected]
}
notification_email_from [email protected]
SMTP_SERVER mail.example.com
smtp_connect_timeout 30
ROUTER_ID KA_NG_01#ノード識別は、ホスト名を設定することができ } vrrp_script chk_nginx {#検出nginxの走行状態を スクリプト「/etc/keepalived/nginx_check.sh」#のスクリプトのパス
区間2位間隔プローブ
重量を-20位条件が満たされた場合、重み-20
}
vrrp_instance VI_1は、{#は、仮想ルーティング定義 VI_1 識別子は、カスタムすることができる 状態MASTER位マスタノード識別子、スタンバイノードBACKUPの インタフェースのeth0#バインドVIPのローカルとのインタフェースIP インターフェースの同じアドレス virtual_router_id 30#仮想ルートIDの識別番号、カスタマイズすることができるが、スタンバイは同じである必要があり、使用する IP 最後の段落を同じにVRID マルチキャスト決定基であり、MAC アドレス mcast_scr_ip 192.168.30.130#ネイティブのIP アドレスの 優先順位100#のノードの優先順位の範囲は0を〜254 、MASTER
よりBACKUP 高い
nopreempt#-priority詳細設定、nopreempt つかむ異常から回復した後、再び問題を解決
advert_int 1つの#1 、マルチキャスト送信間隔をスタンバイが一貫している必要があり、デフォルト 1Sの
認証{#の認証情報、マスタとスレーブが同じでなければならない
AUTH_TYPE PASS
AUTH_PASS 1111#の生産環境では、実際の状況に応じすることが
}
track_script {#track_scriptのブロックが追加インスタンス構成ブロック chk_nginx#が実行nginxのを検出 } virtual_ipaddress {#仮想 IPを
同じスタンバイでなければならない
192.168.30.120#仮想IPが複数定義
}
}
書く nginxのの状態検出スクリプト(/etc/keepalived/nginx_check.sh 既にkeepalived.confの設定)スクリプトが必要です。場合nginxのは実行を停止し、起動しようと、あなたが殺しネイティブ起動することはできませんkeepalivedのプロセスを、keepalied 仮想IPのネクタイを設定BACKUPのマシン。これは次のように読み取ります。
#のvimの/etc/keepalived/nginx_check.sh [localhostの〜@ルート]
#/ binに/バッシュ!
A = `psの-C nginxの-no-ヘッダ|トイレ-l`
[$ -eq 0]であれば、その後
の/ etc開始/init.d/nginx
スリープ2
いる場合[ `PS -C nginxの--no-ヘッダ| WC -l` -eq 0];次に
killallをkeepalivedの
Fiの
Fiを
権限を実行するために割り当てられたスクリプトを保存した後:
[ルート@ localhostの〜]#chmodの+ X-の$!
chmodの+ X /etc/keepalived/nginx_check.sh
3.2.2keepalived プロフィールコメント
keepalivedの次のようにプロファイルが構成されています。
グローバル定義(グローバル定義)
global_defs {
{notification_email
}
notification_email_from [email protected]
SMTP_SERVER 192.168.200.1
30 smtp_connect_timeout
ROUTER_ID LVS_DEVEL
}
notification_emailは:示しkeepalivedのような、スイッチング動作の際に送信される必要がある電子メール通知および電子メールのメールアドレスにメールアドレスが列毎の複数の可能な
notification_email_from [email protected]:表現の送信元アドレスは、電子メールの通知メールを送信
SMTP_SERVER 127.0.0.1:送信示しメールするときに使用するSMTP サーバのローカルアドレスは、ここにすることができsendmailが達成するために
smtp_connect_timeout 30:接続のSMTP 接続時間
ROUTER_IDノード1:マシンの識別、FA
外部脚本
vrrp_script check_running {
スクリプト "を/ usr / local / binに/ check_running"
インターバル10#スクリプトの実行間隔
重量10#の優先順位変更スクリプト結果10 の優先順位を示し+ 10-10を、前記優先-10
}
VRRP インスタンス(インスタンス)の設定例
状態:状態は指定された(初期)のインスタンスを、このサーバが設定されているが、ここ、ここで指定した、まだこれは、キャンペーンで優先順位として設定された場合に決定する必要が指定されていない後の初期状態である初期状態のマスターが、あなたが送信したときに彼が背中につかむなるように、彼の優先順位が他のものよりも少ないし、これはあなたの発表の優先順位は、さらに自分自身のように高い優先順位を見つけられるされるべきでマスター。
インターフェース:仮想の構成のため、インスタンスは、カードをバインドされているVIPが既存のカードの時間に追加する必要があります。
トラック主要いけない:無視VRRP のインターフェイスのエラーを。
トラック・インタフェース:障害入りますカードの問題のいずれかの部分の内側の追跡インターフェース設定、追加の監視(FAULT)の例の状態をnginxのイコライザーの動作に問題はそうではない場合、ネットワークは、ネットワーク内で作業しなければならないとき、イコライザありません私たちは、内部および外部ネットワーク上のヘルスチェックを行う必要があります。
MCASTのsrc IP:ソースマルチキャストパケットを送信したIP ここにアドレス実際のアドレスに送信され、ここで注意しVRRPの予告これは非常に重要な、ここで送信するために安定したLANポートを選択してください同等であるハートビートポートが設定されていない場合は、ハートビートデフォルトのネットワークカードがバインド使うIPがあるインターフェイスで指定されたIP アドレス。
GARPマスター遅延:に切り替え習得状態遅延無料ARP(無償ARP)要求、デフォルトの5S 。
仮想ルータID:どこ設定VRIDはここに非常に重要であり、同じVRID 彼はマルチキャスト決定するグループのMAC アドレスを、
優先度100:優先度の高いノードが優先提供されるマスター。
広告のINT:設定しMASTER とBACKUP プライマリ同期間の負荷分散の間、すなわち広告時間のチェック間隔、秒で、デフォルトのLS ;
仮想IPアドレス:ここで設定があるVIPが仮想であるIPをもって彼に対処状態時に削除された変更が増加状態がされたマスターの時間が追加されたときの状態としてバックアップメインの優先順位を決めるとしている、削除、状態の設定あなたは複数設定することができますどこ値はあまり重要ではありませんのIP アドレスを。
3.3Keepalived + nginxのの高可用性テスト
ホスト名 |
IP |
VIP |
nginxの:ポート |
keepalivedの主备 |
ローカルホスト |
192.168.44.128 |
192.168.30.120 |
5000 |
マスター |
Localhost1 |
192.168.44.129 |
192.168.30.120 |
5000 |
バックアップ |
まず、我々は同時に開始 192.168.44.128 と 192.168.44.129 に nginxのとkeepalivedの、
[ルート@ localhostの〜]#はnginx.serviceを開始systemctl
[ルート@ localhostの〜] keepalived.serviceを開始systemctl#
[ルート@のlocalhost1〜]#はnginx.serviceを開始systemctl
[ルート@のlocalhost1〜]#はkeepalived.serviceを開始systemctl
ことにより、 VIP nginxの(192.168.44.120)にアクセス、次のように:
仮想アクセス分かるように、 IP たちの優先順位は、アクセスされMASTER のIP :192.168.44.128 、私たちは停止し、この時間IPをある192.168.44.128 サーバーNgnix とkeepalivedのシミュレーションのダウンタイムのステータス:
[ルート@ localhostの〜]#systemctlの停止nginx.service
[ルート@ localhostの〜]#systemctlの停止keepalived.service
この時点で、我々は再び仮想使う IP :192.168.44.120 ログイン:
访问的是BACKUP服务器,也就是192.168.44.129,此时我们再将MASTER服务器的nginx和keepalived服务启动,会再次访问到主服务器:
[root@localhost ~]# systemctl start nginx.service
[root@localhost ~]# systemctl start keepalived.service