记一次keepalived+lvs双主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.csdn.net/harryxxxxx/article/details/80803389