keepalivedの+ nginxの高可用性

背景

通常の状況下では、nginxの負荷分散を使用するには、バックエンドサービスの可用性は、ダイナミックな問題は、単一障害点があるでしょう、この時間がボトルネックである、特定のバックオフィスサービスは、システムの正常な動作に影響を与えない、表示されますが、nginxのは一つだけで除去することができnginxの問題、サービスは、システムの正常な動作に影響を与え、中断されます。

 

シングルポイントnginxの問題を解決するためkeepalivedの

マスター伝達関数、nginxのサービス展開の複数、例えば2つ、外部サービスを使用してフェールオーバーkeepalivedの、他のホットスタンバイ・バックアップ・サービス、VIPを介して外部からのアクセスです。マスター・サービスの問題は、機械がホットスタンバイバックアップサービスは、ダイナミックのVIPを引き継ぐ場合には、VIPホットバックアップサービスを引き継ぎ後に単一障害点をnginxのバックアップ外部サービスは、問題を解決するためにします。

keepalivedの設定

[ルート@ k8snode01 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 LVS_DEVEL_01
}

vrrp_script chk_http_port {
   スクリプト"/etc/keepalived/check_ng.sh"
   区間2
   重量-20
}

{VI_1 vrrp_instance
    MASTER位調製マシンの状態は、バックアップ
    インターフェイスens33は
    100 virtual_router_id
    #50に優先調製機100を
    advert_int。1つの
    認証{
        AUTH_TYPE PASS
        AUTH_PASS 1111
    }

"/etc/keepalived/notify.shマスター" notify_master
"/etc/keepalived/notify.shバックアップ" notify_backup
"/etc/keepalived/notify.sh障害" notify_fault

track_script {
   chk_http_port
   }

virtual_ipaddress {
        192.168.23.200
    }
}

[ルート@ k8snode01 keepalivedの]# 
[ルート@ k8snode01 keepalivedの]#以上check_ng.sh #nginx检查脚本
#/ binに/ bashの!
currdate = `日付「+%Y-%M-%D%H:%M:%Sは、 「`
カウント=` psの-aux | grep -v grepの| grepの'nginx.conf' | WC -l`
エコー"$ {currdate} ----> OK:$ {回数}" >>は/ etc / keepalivedの/ checkng.log
結果= $(エコー"000 $ {回数}" | grepを"0000")
もし[[ "$結果" = ""]!]。その後、
    "$ {currdate} ---->の/ etc / init.dディレクトリ/ keepalivedの停止" >>の/ etc / keepalivedの/ checkng.logエコー
    /etc/init.d/keepalivedストップ
    1番出口
、他
    の出口0
Fiの
[ルート@ k8snode01 keepalivedの]#以上notify.sh#切换主备通知脚本
#!/ binに/ bashの
currdate = `日付"

エコー"$ {currdate} ----> $ {1}" >>は/ etc / keepalivedの/ notify.log
[ルート@ k8snode01 keepalivedの]# 

 

障害ドリル

1)查看VIP、VIP在192.168.23.101机器上
[ルート@ k8snode01 keepalivedの]#IP addrは#vip在192.168.23.101机器
1:LO:<LOOPBACK、UP、LOWER_UP> MTU 65536のqdisc NOQUEUE状態UNKNOWNグループのデフォルトの 
    リンク/ループバック00:00:00:00:00:00 BRD 00:00:00:00:00:00
    INET 127.0.0.1/8範囲ホストのLO
       valid_lft永久preferred_lft永久
2:ens33 <ブロードキャスト、マルチキャスト、UP、LOWER_UP> MTU 1500なqdisc pfifo_fast状態UPグループのデフォルトQLEN千
    リンク/エーテル00:0C:29:A3:B8:9F BRD FF:FF:FF:FF:FF:FF
    INET 192.168.23.101 / 24 BRD 192.168.23.255スコープグローバルens33の
       valid_lft永遠にpreferred_lft永遠
    INET 192.168.23.200 / 32スコープグローバルens33
       valid_lft永遠preferred_lft永遠
[ルート@ k8snode01 keepalivedの]#

[ルート@ k8snode02〜]#IP addrは#192.168.23.102机器无VIP
1:LO:<LOOPBACK、UP、LOWER_UP> MTU 65536のqdisc NOQUEUE状態UNKNOWNグループのデフォルトの 
    リンク/ループバック00:00:00:00:00:00 BRD 00:00:00:00:00:00
    INET 127.0.0.1/8範囲ホストLO
       valid_lft永久preferred_lft永久
2:ens33:1000 QLEN <ブロードキャスト、マルチキャスト、UP、LOWER_UP> MTU 1500なqdisc pfifo_fast状態UPグループのデフォルト
    リンク/エーテル00:0C:29:32:05:D5 BRD FF:FF:FF:FF:FF:FF
    INET 192.168.23.102 / 24 BRD 192.168.23.255スコープグローバルens33の
       valid_lft永久preferred_lft永久
[ルート@ k8snode02〜]#

2)使用実際のIPアクセスnginxの、プレゼンテーションを容易にするために、nginxのnginxのの192.168.23.101リターン192.168.23.101,192.168.23.102リターン192.168.23.102
[ルート@ k8snode02〜]#のカール#がnginxの返される"192.168.23.101:8888" IPマシン
192.168.23.101

[ルート@ k8snode02〜]#のカール"192.168.23.102:8888は、" #のnginxのは、マシンのIP返さ
192.168.23.102

[ルート@ k8snode02〜]#を

3)nginxのVIPのアクセスを使用して、通常の実際のIP VIPマシン、リターン192.168.23.101に戻す必要があります
[k8snode02ルート@〜]#のカール"192.168.23.200:8888" #VIPリターンマシンのIP
192.168.23.101

[ルートk8snode02〜@]#のカール"192.168.23.200:8888" #vipのリターンマシンのIP
192.168.23.101

[ルートk8snode02〜@]#のカール"192.168.23.200:8888" #vipのリターンIPマシン
192.168.23.101

[ルート@ k8snode02〜]# 

nginxの故障の4)アナログマスタ、シャットダウンまたは192.168.23.102にマシン192.168.23.101 nginxのサービス、VIPドリフトを停止することができ、聞かせてnginxのがサービスを引き継ぐために準備
[ルート@ k8snode01 keepalivedの]#PS -ef | grepのプロセスnginxのnginxのビュー#
?ルート23081 1 0 8時11分夜12時00分00秒nginxの:マスター・プロセス/データ/ nginxinstall / sbinに/ nginxの-c /data/nginxinstall/conf/nginx.conf
誰23082 23081 0 8時11分夜12時00分00秒? nginxの:プロセスワーカー
ルート28703の24828 0 8:30 PTS / 1 0時○○分00秒のgrep --color =オートnginxの
[ルート@ k8snode01 keepalivedの]#pkillは#nginxのnginxのプロセスを停止し
ます。[root @ k8snode01 keepalivedの]#PS -ef | grepのnginxの#nginxプロセスを停止した
ルート28746 24828 0午前8時30分PTS / 1午後12時○○分00秒のgrep --color =オートnginxの
[ルート@ k8snode01 keepalivedの]#IP ADDR#192.168.23.101マシンVIPが消えます
1:LO:<ループバック、UP、LOWER_UP> MTU 65536なqdisc NOQUEUE状態UNKNOWNグループのデフォルトの 
    リンク/ループバック00:00:00:00:00:00 BRD 00:00:00:00:00:00
    INET 127.0.0.1/ LO 8スコープホスト
       preferred_lft永久valid_lft永久
2:ens33:1000 QLEN <ブロードキャスト、マルチキャスト、UP、LOWER_UP> MTU 1500なqdisc pfifo_fast状態UPグループのデフォルト
    0C:29:A3:B8:9F BRD FF:FFリンク/エーテル00: FF:FF:FF:FF
    INET 192.168.23.101 / 24 BRD 192.168.23.255スコープグローバルens33の
       valid_lft永遠preferred_lft永遠
[ルート@ k8snode01 keepalivedの]#

[ルート@ k8snode02〜]#IP addrは#vip漂移到192.168.23.102
1:LO:<LOOPBACK、UP、LOWER_UP> MTU 65536のqdisc NOQUEUE状態UNKNOWNグループのデフォルトの 
    リンク/ループバック00:00:00:00:00:00 BRD 00:00:00:00:00:00
    INET 127.0.0.1/8範囲ホストLO
       valid_lft永久preferred_lft永久
2:ens33:1000 QLEN <ブロードキャスト、マルチキャスト、UP、LOWER_UP> MTU 1500なqdisc pfifo_fast状態UPグループのデフォルト
    リンク/エーテル00:0C:29:32:05:D5 BRD FF:FF:FF:FF:FF:FF
    INET 192.168.23.102 / 24 BRD 192.168.23.255スコープグローバルens33の
       valid_lft永久preferred_lft永久
    INET 192.168.23.200 / 32範囲グローバルens33の
       valid_lft永遠に永遠にpreferred_lft
[ルート@ k8snode02〜]#

[ルート@ k8snode02〜]#のカール"192.168.23.200:8888" #はnginx192.168.23.102以上の通常のサービスを取られた
192.168.23.102

[ルート@ k8snode02〜]#1 "192.168.23.200:8888"カールnginx192.168.23.102#です通常のサービスを引き継ぐために
192.168.23.102を

[ルート@ k8snode02〜]# 

高い機械192.168.23.101優先5)機械192.168.23.101 keepalivedのnginxのプルサービス、プリエンプトVIP
[ルートはkeepalivedの@ k8snode01]#/データ/ nginxinstall / sbinに/ nginxの-C /データ/ nginxinstall / CONF /nginx.confの#開始nginxの
[ルート@ k8snode01 keepalivedの]#は#がkeepalivedの開始開始/etc/init.d/keepalived
[OK]:keepalivedの(ヴィアsystemctl)を開始
[ルート@ k8snode01 keepalivedの]#IP addrは#vip 192.168をつかみます.23.101
1:LOは:<LOOPBACK、UPは、LOWER_UP> UNKNOWN MTU 65536グループのデフォルトなqdiscはにユーザを可能な状態NOQUEUE 
    リンク/ループバック00:00:00:00:00:00 BRD 00:00:00:00:00:00
    INET 127.0。 0.1 /ホスト8スコープLOは
       永遠preferred_lft永遠valid_lft
2:ens33:1000 QLEN <ブロードキャスト、マルチキャスト、UPは、LOWER_UP> MTU 1500なqdisc pfifo_fast状態UPグループのデフォルト
    リンク/エーテル00:0C:29:A3:B8:9F BRD FF:FF:FF:FF:FF:FF
    INET 192.168.23.101 / 24 BRD 192.168.23.255スコープグローバルens33の
       valid_lft永久preferred_lft永久
    INET 192.168.23.200 / 32範囲グローバルens33の
       valid_lft永久preferred_lft永久
[ルート@ k8snode01 keepalivedの]#

[ルート@ k8snode02〜]#IP addrは#192.168.23.102上的VIP消失
1:LO:<LOOPBACK、UP、LOWER_UP> MTU 65536のqdisc NOQUEUE状態UNKNOWNグループのデフォルトの 
    リンク/ループバック00:00:00:00:00:00 BRD 00:00:00:00:00:00
    INET 127.0.0.1/8範囲のホストのLO
       valid_lft永遠preferred_lft永遠
2:ens33:1000 QLEN <ブロードキャスト、マルチキャスト、UPは、LOWER_UP> MTU 1500のqdisc pfifo_fast状態UPグループのデフォルト
    リンク/エーテル00:0C:29:32:05:D5 BRD FF:FF:FF:FF:FF:FF
    INET 192.168.23.102 / 24 BRD 192.168.23.255スコープグローバルens33の
       valid_lft永久preferred_lft永久
[ルート@ k8snode02〜]# 
[ルート@ k8snode02〜]#のカール"192.168.23.200:8888" #主nginxの服务抢占
192.168.23.101

[ルート@ k8snode02〜]#のカール"192.168.23.200:8888" #がメインのサービスをつかむnginxの
192.168.23.101

[ルート@ k8snode02〜]#


 

 

 

公開された60元の記事 ウォン称賛20 ビュー4586

おすすめ

転載: blog.csdn.net/zhaikaiyun/article/details/104827784