Centos7 LVS+Keepalived+Nginx基于NAT模式构建高可用方案

一二三5年前 (2020-11-27)Centos495

1、准备机器

名称网卡0网卡1VIP
lvsmaster58.218.92.185(网关:58.218.92.1)10.77.1.20(不配置网关)58.218.92.187
lvsbackup58.218.92.186(网关:58.218.92.1)10.77.1.21(不配置网关)58.218.92.187
lvsnginx110.88.1.22(网关:10.88.1.1)10.77.1.22(网关:10.77.1.200)
lvsnginx210.88.1.23(网关:10.88.1.1)10.77.1.23(网关:10.77.1.200)

2、lvsmaster和lvsbackup安装ipvsadm

     yum install ipvsadm

3、lvsmaster和lvsbackup安装Keepalived

    yum install keepalived

    systemctl status keepalived

    systemctl start keepalived

    systemctl enable keepalived 加入开机启动

4、lvsnginx1和lvsnginx2安装nginx

     yum install yum-utils

    vim /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

 yum clean all   

  yum install nginx


   安装完后,rpm -qa | grep nginx 查看

   加入开机启动:systemctl enable nginx

   启动nginx:systemctl start nginx

   查看nginx的状态:systemctl status nginx

   重启nginx服务:systemctl restart nginx

   停止nginx服务:systemctl stop nginx

5、修改lvsnginx1和lvsnginx2双网关双IP的配置,实现原路返回路由

修改10.88.1.22中

vim /etc/iproute2/rt_tables 添加

252     1

251     2

vim /etc/rc.d/init.d/network 最后添加 (在exit $rc 上添加)

ip route flush table 1

ip route add default via 10.88.1.1 dev eth0 src 10.88.1.22 table 1

ip rule add from 10.88.1.22 table 1

ip route flush table 2

ip route add default via 10.77.1.200 dev eth1 src 10.77.1.22 table 2

ip rule add from 10.77.1.22 table 2

修改10.88.1.23中

vim /etc/iproute2/rt_tables 添加

252     1

251     2

vim /etc/rc.d/init.d/network 最后添加 (在exit $rc 上添加)

ip route flush table 1

ip route add default via 10.88.1.1 dev eth0 src 10.88.1.23 table 1

ip rule add from 10.88.1.23 table 1

ip route flush table 2

ip route add default via 10.77.1.200 dev eth1 src 10.77.1.23 table 2

ip rule add from 10.77.1.23 table 2

6、配置lvsmaster(58.218.92.185)和lvsbackup(58.218.92.186)

vim /etc/keepalived/keepalived.conf

global_defs {
   notification_email {
       zhanghuan@youxiang.com
   }
   notification_email_from lvsadmin@youxiang.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_Server_1
}

vrrp_instance VI_1 {
    state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备 记得大写
    interface eth0 #网卡id 不同的电脑网卡id会有区别 可以使用:ip a查
    virtual_router_id 101  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
    advert_int 1  #检查间隔,默认为1s
    authentication { #这里配置的密码最多为8位,主备要一致,否则无法正常通讯
        auth_type PASS
        auth_pass E2CSLVS20
    }
    virtual_ipaddress {
        58.218.92.187 #定义虚拟IP(VIP)为58.218.92.187,可多设,每行一个
    }
}

vrrp_instance VI_2 {
    state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备 记得大写
    interface eth1 #网卡id 不同的电脑网卡id会有区别 可以使用:ip a查
    virtual_router_id 101 #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
    advert_int 1  #检查间隔,默认为1s
    authentication { #这里配置的密码最多为8位,主备要一致,否则无法正常通讯
        auth_type PASS
        auth_pass E2CSLVS20
    }
    virtual_ipaddress {
        10.77.1.200 #定义虚拟IP(VIP)为10.77.1.200,可多设,每行一个
    }
}

virtual_server 58.218.92.187 80 {
    delay_loop 3 # 设置健康检查时间,单位是秒
    lb_algo sh   # 设置负载调度的算法为wlc 加权最小连接调度(wlc) rr轮询算法 sh  session lvs调度算法rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind NAT  # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
    protocol TCP
    real_server 10.77.1.22 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
        }
    }

    real_server 10.77.1.23 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
        }
    }
}

lvsbackup只是state、priority、router_id不同

此部署方法 lb_kind 必须为 NAT

7、lvsmaster、lvsbackup开启IP转发 

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
touch /etc/sysconfig/ipvsadm

8、lvsmaster、lvsbackup重启  keepalived  查看 是否配置成功 

systemctl restart keepalived 

ip a

QQ截图20201127200025.png

标签: KeepalivedNginx

相关文章

nginx常用内置变量4年前 (2021-01-07)
Centos 关闭selinux5年前 (2020-11-30)
Nginx SSL配置协议4年前 (2020-12-02)
CentOS查找文件内容命令5年前 (2020-11-26)