Keepalived LVSデュアルマシン高可用性負荷等化アーキテクチャ


実験環境:ホストIPLVS-1 1.1.1.1011 LVS-2 1.1.1.1.1.22 Nginx-1 1.1.1.1.33 Nginx-1 1.1.1.1.1104 VIP 1.1.1.1.1.1.1100ここに画像の説明を挿入する
Keepalived-LVS実験手順:1)Webサービスの構成Nginxインストール参照
Web-1インストール、構成、起動
useradd -M -s/sbin/nologin nginx
cd/usr/src/nginx-1.6.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre
ln -s/usr/local/nginx/sbin/nginx/usr/local/sbin
echo 'This is a Web1-Master ' >/usr/local/nginx/html/index.html
nginx
Curl 1.1.1.1033 This is a Web 1-Master Web-1ルーティング規則の設定[root@localhost ~]# vim/etc/sysctl.conf [root@localhost ~]# sysctl -pnet.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.default.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.default.arp_announce=2 Web-1設定VIP[root@localhost ~]# cd/etc/sysconfig/network-scripts/[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0[root@localhostNetwork-scripts]#vim ifcfg-lo:0 DEVICE=lo:0 IPADDR=1.1.100 NETMASK=255.255.255.255.255.255.255 ONBOOT=yesNAME=one再起動NIC[root@localhostNetwork-scripts]#systemctl restart network追加ルーティング[root@localhostNetwork-scripts]#route add-host 1.1.1.1.100 dev lo:0 Web-2インストール、構成、useradd-M-s/sbin/nologin nginxの起動
cd/usr/src/nginx-1.6.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre
ln -s/usr/local/nginx/sbin/nginx/usr/local/sbin
echo 'This is a Web2-Backup ' >/usr/local/nginx/html/index.html
nginx
Curl 1.1.1.44 This is a Web 2-BackupWeb-2ルーティング規則の設定[root@localhost ~]# vim/etc/sysctl.conf [root@localhost ~]# sysctl -pnet.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.default.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.default.arp_announce=2 Web-2設定VIP[root@localhost ~]# cd/etc/sysconfig/network-scripts/[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0[root@localhostNetwork-scripts]#vim ifcfg-lo:0 DEVICE=lo:0 IPADDR=1.1.100 NETMASK=255.255.255.255.255.255.255 ONBOOT=yesNAME=one再起動NIC[root@localhost network-scripts]# systemctl restart netw ork
ルーティングの追加
[root@localhostNetwork-scripts]#route add-host 1.1.1.1.100 dev lo:02)LVSインストールIPvsadminツールの構成[root@localhost ~]# modprobe ip_vs[root@localhost~]#yum-y install ipvsadmオープンルーティング転送[root@localhost ~]# echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf [root@localhost ~]# sysctl -pnet.ipv4.ip_forward=1 LVS-1クラスタを作成[root@localhost~]#ipvsadm-A-t 1.1.1.1100:80-s rrLVS-1追加ノード[root@localhost ~]# ipvsadm -a -t 1.1.1.100:80 -r 1.1.1.103:80 -g -w 1[root@localhost~]#ipvsadm-a-t 1.1.1.1100:80-r 1.1.1.1.1104:80-g-w 1 LVS-1保存クラスタ[root@localhost~]#ipvsadm-S-A-t 1.1.1.1100:http-srr-a-t 1.1.1.1100:http-r 1.1.1.1.1.33:http-g-w 1-a-t 1.1.1.1.1100:http-r 1.1.1.1.1.1.1.1104:http-g-w 1 LVS-1クラスタを表示[root@localhost~]#ipvsadm-lnIP Virtual Server version 1.2.1(size=4096)Prot LocalAddress:Port Scheduler Flags->RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 1.1.1.00:http rr->1.1.1.1.33:http Route 1 0 0->1.1.1.1.1.1.44:http Route 1 0 0 LVS-1テスト[root@localhost ~]# curl 1.1.1.100This is a Web1-Master [root@localhost~]#curl 1.1.1.100 This is a Web 2-Backup LVS-2クラスタを作成[root@localhost~]#ipvsadm-A-t 1.1.1.1100:80-s rrLVS-2追加ノード[root@localhost ~]# ipvsadm -a -t 1.1.1.100:80 -r 1.1.1.103:80 -g -w 1[root@localhost~]#ipvsadm-a-t 1.1.1.1100:80-r 1.1.1.1.1104:80-g-w 1 LVS-2保存クラスタ[root@localhost~]#ipvsadm-S-A-t 1.1.1.1100:http-srr-a-t 1.1.1.1100:http-r 1.1.1.1.1.33:http-g-w 1-a-t 1.1.1.1.1100:http-r 1.1.1.1.1.1.1.1104:http-g-w 1 LVS-2クラスタの表示[root@localhost ~]# ipvsadm -lnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 1.1.1.100:http rr-> 1.1.1.103:http Route 1 0 0 -> 1.1.1.104:http Route 1 0 0
LVS-2テスト[root@localhost ~]# curl 1.1.1.100This is a Web1-Master [root@localhost ~]# curl 1.1.1.100This is a Web2-Backup
3)Keepalivedの構成
インストールKeepalived[root@localhost ~]# tar -zxf keepalived-1.2.13.tar.gz -C/usr/src/[root@localhost ~]# yum -y install popt-devel kernel-devel openssl-devel[root@localhost ~]# cd/usr/src/keepalived-1.2.13/[root@localhost keepalived-1.2.13]# ./configure --prefix=/--with-kernel-dir=/usr/src/kernel && make && make install
Keepalived-Masterの構成[root@localhost ~]# vim/etc/keepalived/keepalived.conf
global_defs{#グローバル構成notification_email{#管理者メールボックス[email protected]#メールアドレス[email protected] …………br/>[email protected]}notification_email_from [email protected]#メールの送信者、smtp_をカスタマイズできます.server 192.168.200.1#メールサーバIPアドレスsmtp_connect_timeout 30#メールサービスタイムアウト時間router_id LVS_DEVEL#ノードID}
vrrp_instance VI_1{#VRRPプロトコルファミリー、VI_1はname(カスタマイズ可能)state MASTER#ノード状態、masterとbackupinterface ens 33#Keepalivedが使用するNIC virtual_router_id 51#server_id、メインはidから一致priority 100#1-255優先度advert_int 1#VRRP通知時間1 sauthentication{#パスワード認証auth_type PASSauth_pass 1111}virtual_ipaddress{#仮想IPアドレス(ドリフトアドレス)1.1.1.1100#自分の仮想IPアドレスを指定}}
virtual_server 1.1.1.100 80 {#バックエンドに対する健康診断delay_loop 6#健康診断間隔の時間lb_algo rr#スケジューリングアルゴリズムlb_kind DR#LVSで使用される動作モードnat_mask 255.255.255.255.0.255.0#サブネットマスクpersistence_timeout 0#セッション保持時間、すなわち一定時間内に1台のサーバを指定してアクセスし、ローテーションの効果はなく、試験のためにこれはゼロprotocol TCP#LVS使用プロトコル
real_server 1.1.1.10480{#リアルノード情報weight 1#重みconnect_port 80#接続ポートconnect_timeout 3#タイムアウト時間nb_get_retry 3#ノード接続回数delay_before_retry 3#接続回数ごとの間隔時間}
real_server 1.1.1.10580{#リアルノード情報weight 1#重みconnect_port 80#接続ポートconnect_timeout 3#タイムアウト時間nb_get_retry 3#ノード接続回数delay_before_retry 3#接続回数ごとの間隔時間}}サービス開始[root@localhost~]#service keepalived startReloading systemd:[OK]Starting keepalived(via systemctl):[OK]構成Keepalived-Backup[root@localhost ~]# vim/etc/keepalived/keepalived.conf
global_defs{#グローバル構成notification_email{#管理者メールボックス[email protected]#メールアドレス[email protected] …………br/>[email protected]}notification_email_from [email protected]#メールの送信者、smtp_をカスタマイズできます.server 192.168.200.1#メールサーバIPアドレスsmtp_connect_timeout 30#メールサービスタイムアウト時間router_id LVS_DEVEL#ノードID}
vrrp_instance VI_1{#VRRPプロトコルファミリー、VI_1はname(カスタマイズ可能)state MASTER#ノード状態、masterとbackupinterface ens 33#Keepalivedが使用するNIC virtual_router_id 51#server_id、メインはidから一致priority 100#1-255優先度advert_int 1#VRRP通知時間1 sauthentication{#パスワード認証auth_type PASSauth_pass 1111}virtual_ipaddress{#仮想IPアドレス(ドリフトアドレス)1.1.1.1100#自分の仮想IPアドレスを指定}}
virtual_server 1.1.1.100 80 {#バックエンドに対する健康診断delay_loop 6#健康診断間隔の時間lb_algo rr#スケジューリングアルゴリズムlb_kind DR#LVSで使用される動作モードnat_mask 255.255.255.255.0.255.0#サブネットマスクpersistence_timeout 0#セッション保持時間、すなわち一定時間内に1台のサーバを指定してアクセスし、ローテーションの効果はなく、試験のためにこれはゼロprotocol TCP#LVS使用プロトコル
real_server 1.1.1.10480{#リアルノード情報weight 1#重みconnect_port 80#接続ポートconnect_timeout 3#タイムアウト時間nb_get_retry 3#ノード接続回数delay_before_retry 3#接続回数ごとの間隔時間}
real_server 1.1.1.10580{#リアルノード情報weight 1#重み#connect_port 80#接続ポートconnect_timeout 3#タイムアウト時間nb_get_retry 3#ノード接続回数delay_before_retry 3#接続回数ごとの間隔時間}}サービス開始[root@localhost~]#service keepalived startReloading systemd:[OK]Starting keepalived(via systemctl):[OK]テスト[root@localhost ~]# curl 1.1.1.100This is a Web2-Backup [root@localhost ~]# curl 1.1.1.100This is a Web1-Master [root@localhost ~]# curl 1.1.1.100This is a Web2-Backup [root@localhost ~]# curl 1.1.1.100This is a Web1-Master [root@localhost~]#curl 1.1.1000 This is a Web 2-Backup[OK]Starting keepalived(via systemctl):[OK]
  • テスト
  • 
    [root@localhost ~]# curl 1.1.1.100
    This is a Web2-Backup 
    [root@localhost ~]# curl 1.1.1.100
    This is a Web1-Master 
    [root@localhost ~]# curl 1.1.1.100
    This is a Web2-Backup 
    [root@localhost ~]# curl 1.1.1.100
    This is a Web1-Master 
    [root@localhost ~]# curl 1.1.1.100
    This is a Web2-Backup 
    
    ps:   lvs               ,     lvs           lvs          ip(vip),      ,keepalived     vip   ,    vip