记一次keepalived双主DR模式实验

实验环境 CENTOS 7.5
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"

猜你喜欢

转载自blog.51cto.com/13707911/2132397
今日推荐