nginx+keepalivedデュアルマシンデュアルプライマリ高可用性を実現


1.はじめに


前の記事では、2台のマシンが1台稼働中で、もう1台がバックアップされていることを意味しています.これは資源の浪費が深刻で、国有企業、政府系システムに適している.今日は、2台のマシンが同時に稼働し、2台のホストが同時にバックアップされていることを意味します.

2.準備:


2台のホスト192.168.100.128/24 192.168.100.129/24
2つの個別ip 192.168.100.133/24 192.168.100.134/24
ドメイン名を2つの別々のipに解析することができ、keepalivedはこの2つのipを仮想ip技術を通じて2つのホストにドリフトします.1台のマシンがダウンすると、keepalivedはもともとドリフトしていたipを別のマシンにドリフトし、デュアルマシンのデュアルプライマリ相互ホストとバックアップを実現します.

3.インストール


インストールは私の前の文章を見ることができます:nginx+keepalivedはデュアルマシンのホットスペアの高可用性を実現しますhttp://blog.csdn.net/caicongyang/article/details/46444007

4.構成


128機械keepalived.confプロファイル

global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/opt/nginx_pid.sh"
interval 2
weight -20 # , 20
}
vrrp_instance VI_1 {
state MASTER
interface eth1 # 
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.100.133
}
}
vrrp_instance VI_2 {
state BACKUP
interface eth1 # 
virtual_router_id 52
priority 99 # 
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.100.134/24
}
}

129機械keepalived.confプロファイル

global_defs {
notification_email {
[email protected]               # email , 
}
notification_email_from [email protected]   ### 
smtp_server 127.0.0.1          ### 
smtp_connect_timeout 30      ### 
router_id LVS_DEVEL      ####load balancer   ID, email 
}
vrrp_script chk_http_port {
script "/opt/nginx_pid.sh" #### nginx 
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth2
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.100.133/24
}
}
vrrp_instance VI_2 {
state MASTER
interface eth2
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.100.134/24
}
}

5.起動とテスト


nginxの起動
#/usr/local/nginx/sbin/nginx
keepalivedを起動
#service keepalived start

テスト
#ip a

128マシン結果
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ff:ca:24 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.128/24 brd 192.168.100.255 scope global eth1
    inet 192.168.100.133/32 scope global eth1
    inet6 fe80::20c:29ff:feff:ca24/64 scope link 
       valid_lft forever preferred_lft forever

129マシン結果
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:c0:02:92 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.129/24 brd 192.168.100.255 scope global eth2
    inet 192.168.100.134/24 scope global secondary eth2
    inet6 fe80::20c:29ff:fec0:292/64 scope link 
       valid_lft forever preferred_lft forever

IP 133は128のマシンにバインドされ、134は129のマシンにバインドされていることがわかります.
次に、128マシンkillall nginxを使用して、前の文章のスクリプトが機能するかどうかを確認することができます.その結果、nginxは絶えず再起動されることがわかります.
128のマシンを直接オフにしたり、ネットワークをオフにしたりして、ip 133が129のマシンに自動的にバインドされているかどうかを見ます.結果はもちろん可能です
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:c0:02:92 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.129/24 brd 192.168.100.255 scope global eth2
    inet 192.168.100.134/24 scope global secondary eth2
    inet 192.168.100.133/24 scope global secondary eth2
    inet6 fe80::20c:29ff:fec0:292/64 scope link 
       valid_lft forever preferred_lft forever

前の記事で述べたように、コマンドでプロセス全体を表示することができます.
#tail -f /var/log/messages  

後述:この2つのnginx+keepaliedの高可用性の記事では、notification_を構成しています.Emailは使用されませんでしたが、スレ主は次の文章でsmtpサービスを構成し、有効にします.これにより、サービスに異常が発生した場合、運営者にメールを送信して通知することができます.もちろんブロガー私も後期に無料のネットワーク監視ツールNagiosに関する文章を発表し、それを統合し、具体的な利害の後期分析を行います.
運維を知らないプログラマーは、良いエンジニアではありません!
私の個人サイト:http://www.caicongyang.com
私のCSDNブログアドレス:http://blog.csdn.net/caicongyang