記一次keepalived雙主DR模式實驗
DIP1 192.168.119.110
DIP2 192.168.119.111
RIP1 192.168.119.120
RIP2 192.168.119.121
VIP1 192.168.119.130
VIP2 192.168.119.131
雙主模式需要準備兩個VIP
DS上安裝 yum install -y keepalived ipvsadm
修改配置文件 vim /etc/keepalived/keepalived.conf
DS1上
! Configuration File for keepalived global_defs { #全局定義部分 #notification_email { } 設置報警郵件地址,可設置多個 #notification_email_from [email protected] 設置 郵件的發送地址 #smtp_server smtp.163.com 設置 smtp server 地址 #smtp_connect_timeout 30 設置 連接 smtp server的超時時間 #router_id LVS_DEVEL 設置 keepalived 服務器的一個標識。發郵件時顯示在郵件主題中的信息 #vrrp_skip_check_adv_addr #vrrp_strict #vrrp_garp_interval 0 #vrrp_gna_interval 0 router_id LVS1 #id_唯一標識 } vrrp_instance VI_1 { #vrrp 實例部分定義,VI_1自定義名稱 state MASTER #指定 keepalived 的角色,必須大寫 可選值:MASTER|BACKUP interface ens33 #網卡設置,lvs需要綁定在網卡上,realserver綁定在回環口。區別:lvs對訪問為外,realserver為內不易暴露本機信息 virtual_router_id 51 #虛擬路由標識,是一個數字,同一個vrrp 實例使用唯一的標識,MASTER和BACKUP 的 同一個 vrrp_instance 下 這個標識必須保持一致 priority 100 #定義優先級,數字越大,優先級越高。 advert_int 1 #設定 MASTER 與 BACKUP 負載均衡之間同步檢查的時間間隔,單位為秒,兩個節點設置必須一樣 authentication { #設置驗證類型和密碼,兩個節點必須一致 auth_type PASS auth_pass 1111 } virtual_ipaddress { #設置虛擬IP地址,可以設置多個虛擬IP地址,每行一個 192.168.119.130 } } virtual_server 192.168.119.130 80 #定義RealServer對應的VIP及服務端口,IP和端口之間用空格隔開 delay_loop 6 #每隔6秒查詢realserver狀態 lb_algo rr #後端調試算法(load balancing algorithm) lb_kind DR #LVS調度類型NAT/DR/TUN #persistence_timeout 60 同一IP的連接60秒內被分配到同一臺realserver protocol TCP #用TCP協議檢查realserver狀態 real_server 192.168.119.120 80 { weight 1 #權重,最大越高,lvs就越優先訪問 TCP_CHECK { #keepalived的健康檢查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC connect_timeout 10 #10秒無響應超時 retry 3 #重連次數3次 delay_before_retry 3 #重連間隔時間 connect_port 80 #健康檢查realserver的端口 } } real_server 192.168.119.121 80 { weight 1 #權重,最大越高,lvs就越優先訪問 TCP_CHECK { #keepalived的健康檢查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC connect_timeout 10 #10秒無響應超時 retry 3 #重連次數3次 delay_before_retry 3 #重連間隔時間 connect_port 80 #健康檢查realserver的端口 } } } vrrp_instance VI_2 { #vrrp 實例部分定義,VI_1自定義名稱 state BACKUP #指定 keepalived 的角色,必須大寫 可選值:MASTER|BACKUP 分別表示(主|備) interface ens33 #網卡設置,綁定vip的子接口,lvs需要綁定在網卡上,realserver綁定在回環口。區別:lvs對訪問為外,realserver為內不易暴露本機信息 virtual_router_id 52 #虛擬路由標識,是一個數字,同一個vrrp 實例使用唯一的標識,MASTER和BACKUP 的 同一個 vrrp_instance 下 這個標識必須保持一致 priority 90 #定義優先級,數字越大,優先級越高。 advert_int 1 #設定 MASTER 與 BACKUP 負載均衡之間同步檢查的時間間隔,單位為秒,兩個節點設置必須一樣 authentication { #設置驗證類型和密碼,兩個節點必須一致 auth_type PASS auth_pass 1111 } virtual_ipaddress { #設置虛擬IP地址,可以設置多個虛擬IP地址,每行一個 192.168.119.131 } } virtual_server 192.168.119.131 80 { #定義RealServer對應的VIP及服務端口,IP和端口之間用空格隔開 delay_loop 6 #每隔6秒查詢realserver狀態 lb_algo rr #後端調試算法(load balancing algorithm) lb_kind DR #LVS調度類型NAT/DR/TUN #persistence_timeout 60 #同一IP的連接60秒內被分配到同一臺realserver protocol TCP #用TCP協議檢查realserver狀態 real_server 192.168.119.120 80 { weight 1 #權重,最大越高,lvs就越優先訪問 TCP_CHECK { #keepalived的健康檢查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC connect_timeout 10 #10秒無響應超時 retry 3 #重連次數3次 delay_before_retry 3 #重連間隔時間 connect_port 80 #健康檢查realserver的端口 } } real_server 192.168.119.121 80 { weight 1 #權重,最大越高,lvs就越優先訪問 TCP_CHECK { #keepalived的健康檢查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC connect_timeout 10 #10秒無響應超時 retry 3 #重連次數3次 delay_before_retry 3 #重連間隔時間 connect_port 80 #健康檢查realserver的端口 } } }
DS2上
! Configuration File for keepalived global_defs { router_id LVS2 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.119.130 } } virtual_server 192.168.119.130 80 { delay_loop 6 lb_algo rr lb_kind DR #persistence_timeout 60 protocol TCP real_server 192.168.119.120 80 { weight 1 TCP_CHECK { connect_timeout 10 retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.119.121 80 { weight 1 TCP_CHECK { connect_timeout 10 retry 3 delay_before_retry 3 connect_port 80 } } } vrrp_instance VI_2 { state MASTER interface ens33 virtual_router_id 52 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.119.131 } } virtual_server 192.168.119.131 80 { delay_loop 6 lb_algo rr lb_kind DR #persistence_timeout 60 protocol TCP real_server 192.168.119.120 80 { weight 1 TCP_CHECK { connect_timeout 10 retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.119.121 80 { weight 1 TCP_CHECK { connect_timeout 10 retry 3 delay_before_retry 3 connect_port 80 } } }
後端RS上的配置
限制ARP響應請求
echo net.ipv4.conf.lo.arp_ignore = 1 >> /etc/sysctl.conf
echo net.ipv4.conf.all.arp_ignore = 1 >> /etc/sysctl.conf
限制arp發送請求
echo net.ipv4.conf.lo.arp_announce = 2 >> /etc/sysctl.conf
echo net.ipv4.conf.all.arp_announce = 2 >> /etc/sysctl.conf
sysctl -p
回環綁定vip
echo DEVICE=lo:0 >> /etc/sysconfig/network-scripts/ifcfg-lo:0
echo IPADDR=192.168.119.130 >> /etc/sysconfig/network-scripts/ifcfg-lo:0
echo NETMASK=255.255.255.255 >> /etc/sysconfig/network-scripts/ifcfg-lo:0
echo ONBOOT=yes >> /etc/sysconfig/network-scripts/ifcfg-lo:0
echo NAME=lo:0 >> /etc/sysconfig/network-scripts/ifcfg-lo:0
echo DEVICE=lo:1 >> /etc/sysconfig/network-scripts/ifcfg-lo:1
echo IPADDR=192.168.119.131 >> /etc/sysconfig/network-scripts/ifcfg-lo:1
echo NETMASK=255.255.255.255 >> /etc/sysconfig/network-scripts/ifcfg-lo:1
echo ONBOOT=yes >> /etc/sysconfig/network-scripts/ifcfg-lo:1
echo NAME=lo:1 >> /etc/sysconfig/network-scripts/ifcfg-lo:1
systemctl restart network
添加主機路由
chmod +x /etc/rc.d/rc.local(centos7默認沒有x權限,重啟os後不會執行內容)
echo route add -host 192.168.119.130 dev lo:0 >> /etc/rc.d/rc.local
echo route add -host 192.168.119.131 dev lo:1 >> /etc/rc.d/rc.local
安裝nginx
yum -y install gcc gcc-c++
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
wget http://tengine.taobao.org/download/tengine-2.1.2.tar.gz
tar -zxvf tengine-2.1.2.tar.gz
cd tengine-2.1.2
groupadd -r -g 1000 nginx
useradd -r -g nginx -u 1000 -s /bin/false -M nginx
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/data/weblogs/nginx/error/error.log \
--http-log-path=/data/weblogs/nginx/access/access.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx
chown -R nginx: /etc/nginx/
chown -R nginx: /usr/local/nginx
chown -R nginx: /data/weblogs/nginx
chmod u+s /usr/local/sbin/nginx
RS1上 echo web1 > /usr/local/nginx/html/index.html
RS2上 echo web2 > /usr/local/nginx/html/index.html
防火墻設置
關閉selinux setenforce 0
vim /etc/selinux/config -->> SELINUX=disabled
開啟80端口
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
註意事項 DS上添加vrrp協議,否則會出現vip漂移
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.119.0/24" destination address="224.0.0.18" protocol value="vrrp" accept"
記一次keepalived雙主DR模式實驗