搭建Keepalived+Lvs+Nginx高可用集群负载

目录

  • 搭建Keepalived+Lvs+Nginx高可用集群负载
    • 一、搭建LVS-DR模式-配置ipvsadm
      • 1.1、前期准备
      • 1.2、创建子接口
      • 1.3、修改子接口配置,配置如下:
      • 1.4、重启网络服务,或者重启linux
      • 1.5、安装ipvsadm
    • 二、搭建LVS-DR模式-为两台RS配置虚拟ip
      • 2.1、配置虚拟网络子接口
      • 2.2、刷新network,然后查看虚拟ip
    • 三、搭建LVS-DR模式-为两台RS配置arp
      • ARP响应级别与通告行为的概念
      • 3.1、配置ARP
        • 3.1.1、打开sysctl.conf
        • 3.1.2、配置所有网卡,默认网卡以及虚拟网卡的arp响应级别和通告行为,分别对应:`all、default、lo`
        • 3.1.3、刷新配置文件
        • 3.1.4、增加一个网关,用于接收数据报文,请求到本机后,会交个lo去处理
        • 3.1.5、防止服务器重启之后失效,做如下处理
    • 四、搭建LVS-DR模式-ipvsadm配置集群规则
      • 4.1、创建LVS节点,用户访问的集群调度者
      • 4.2、创建2台RS真实服务器
      • 4.3、保存到规则库,否则重启失效
      • 4.4、检查集群
      • 4.5、其他命令
      • 4.6、更多详细的帮助文档
    • 五、搭建Keepalived+Lvs+Nginx高可用集群负载均衡
      • 准备工作
      • 5.1、配置第一台主Lvs服务器
      • 5.2、配置第二台从Lvs服务器
      • 5.3、启动主从的Keepalived
      • 5.4、查看Lvs情况

搭建Keepalived+Lvs+Nginx高可用集群负载


一、搭建LVS-DR模式-配置ipvsadm

1.1、前期准备

  • 所有计算机节点关闭网络配置管理器,因为有可能会和网络接口冲突

    systemctl stop NetworkManager
    systemctl disable NetworkManager
    

1.2、创建子接口

# 进入指定目录
cd /etc/sysconfig/network-script/

# 拷贝并创建子接口
cp ifcfg-ens33 ifcfg-ens33:1

ifcfg-ens33:1 数字1为别名,可以任意取名都行

1.3、修改子接口配置,配置如下:

vim ifcfg-ens33:1

DEVICE="ens33:1"
ONBOOT="yes"
IPADDR=192.168.64.120
NETMASK=255.255.255.0
BOOTPROTO="static"

192.168.64.120 就是虚拟ip,是提供给外网用户访问的ip地址,道理和nginx-keepalived的虚拟ip一样

1.4、重启网络服务,或者重启linux

service network restart

ip addr 就可以看到自己创建的虚拟ip了

1.5、安装ipvsadm

yum install ipvsadm

# 查看列表
ipvsadm -Ln

二、搭建LVS-DR模式-为两台RS配置虚拟ip

2.1、配置虚拟网络子接口

# 进入指定目录
cd /etc/sysconfig/network-scripts/

# 拷贝网络配置文件
cp ifcfg-lo ifcfg-lo:1

# 进行修改
vim ifcfg-lo:1

# 修改内容如下
DEVICE=lo:1
IPADDR=192.168.64.150
NETMASK=255.255.255.255
... (其他内容默认)

2.2、刷新network,然后查看虚拟ip

service network restart

ip addr

另一台服务器一样配置


三、搭建LVS-DR模式-为两台RS配置arp

ARP响应级别与通告行为的概念

1.arp-ignore:arp相应级别(处理请求)

  • 0:只要本机配置了ip,就能响应请求
  • 1:请求的目标地址达到对应的网络接口,才会响应请求

2.arp-announce:arp通告行为(返回响应)

  • 0:本机上任何网络接口都向外通告,所有的网卡都能接受到通告
  • 1:尽可能避免本网卡与不匹配的目标进行通告
  • 2:只在本网卡通告

3.1、配置ARP

3.1.1、打开sysctl.conf

vim /etc/sysctl.conf

3.1.2、配置所有网卡,默认网卡以及虚拟网卡的arp响应级别和通告行为,分别对应:all、default、lo

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

3.1.3、刷新配置文件

sysctl -p

3.1.4、增加一个网关,用于接收数据报文,请求到本机后,会交个lo去处理

route add -host 192.168.64.120 dev lo:1

# 查看网关
route -n

3.1.5、防止服务器重启之后失效,做如下处理

echo "route add -host 192.168.64.120 dev lo:1" >> /etc/rc.local

# 直接打开/etc/rc.local文件直接修改添加也可以

四、搭建LVS-DR模式-ipvsadm配置集群规则

4.1、创建LVS节点,用户访问的集群调度者

ipvsadm -A -t 192.168.64.120:80 -s rr

提示

  • -A:增加集群
  • -t:tcp协议 ip地址:设定集群的访问ip,也就是LVS的虚拟ip
  • -s:设置负载均衡的算法,rr表示轮询
  • -p:设置连接持久化的时间

4.2、创建2台RS真实服务器

ipvsadm -a -t 192.168.64.120:80 -r 192.168.64.131:80 -g
ipvsadm -a -t 192.168.64.120:80 -r 192.168.64.131:80 -g

提示

  • -a:添加真实服务器
  • -t:tcp协议
  • -r:真实服务器的ip地址
  • -g:设定DR模式

4.3、保存到规则库,否则重启失效

ipvsadm -S

4.4、检查集群

  • 查看集群列表

    ipvsadm -Ln
    
  • 查看集群状态

    ipvsadm -Ln --stats
    

4.5、其他命令

  • 重启ipvsadm,重启后需要重新配置

    service ipvsadm restart
    
  • 查看持久化连接

    ipvsadm -Ln --persistent --conn
    
  • 查看连接请求过期时间以及请求源ip和目标ip

    ipvsadm -Lnc
    
  • 设置tcp tcpfin udp 的过期时间(一般保持默认)

    ipvsadm --set 1 1 1 
    
  • 查看过期时间

    ipvsadm -Ln --timeout
    

4.6、更多详细的帮助文档

ipvsadm -h
man ipvsadm

五、搭建Keepalived+Lvs+Nginx高可用集群负载均衡

准备工作

  • 1.准备两台nginx服务器:一台Mater,另一台Backup
  • 2.准备两台Lvs服务器:一台Master,另一台Backup

5.1、配置第一台主Lvs服务器

  • Keepalived配置
global_defs {
   # 路由id:当前安装keepalived节点主机的标识符,全局唯一标识符
   router_id LVS_192.168.64.133
}


# 计算机节点
vrrp_instance VI_1 {
    # 表示的状态,当前的192.168.64.133的nginx的主节点
    # 主节点:MASTER,备用机:BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 55
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        192.168.64.120
    }
}

# 配置集群地址访问的IP+端口,端口和nginx保持一致,都是80
virtual_server 192.168.64.120 80 {
        # 健康检查的时间,单位:秒
        delay_loop 6
        # 配置负载均衡的算法,默认是轮询
        lb_algo rr
        # 设置LVS的模式 NAT|TUN|DR
        lb_kind DR
        # 设置会话持久化的事件
        persistence_timeout 10
        # 协议 -t
        protocol TCP

        # 负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
        real_server 192.168.64.131 80 {
                # 轮询的默认权重配比设置为1
                weight 1
                # 设置健康检查
                TCP_CHECK {
                    # 检查的80端口
                    connect_port 80
                    # 超时时间 2s
                    connect_timeout 2
                    # 重试次数 2次
                    nb_get_retry 2
                    # 时间间隔 3s
                    delay_before_retry 3
                }

        }

        real_server 192.168.64.132 80 {
                # 轮询的默认权重配比设置为1
                weight 1
                # 设置健康检查
                TCP_CHECK {
                    # 检查的80端口
                    connect_port 80
                    # 超时时间 2s
                    connect_timeout 2
                    # 重试次数 2次
                    nb_get_retry 2
                    # 时间间隔 3s
                    delay_before_retry 3
                }
        }
}

5.2、配置第二台从Lvs服务器

  • Keepalived配置
global_defs {
   # 路由id:当前安装keepalived节点主机的标识符,全局唯一标识符
   router_id LVS_192.168.64.134
}


# 计算机节点
vrrp_instance VI_1 {
    # 表示的状态,当前的192.168.64.134的nginx的主节点
    # 主节点:MASTER,备用机:BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 55
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 50
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }


    virtual_ipaddress {
        192.168.64.120
    }
}

# 配置集群地址访问的IP+端口,端口和nginx保持一致,都是80
virtual_server  192.168.64.120 80 {
        # 健康检查的时间,单位:秒
        delay_loop 6
        # 配置负载均衡的算法,默认是轮询
        lb_algo rr
        # 设置LVS的模式 NAT|TUN|DR
        lb_kind DR
        # 设置会话持久化的事件
        persistence_timeout 10
        # 协议 -t
        protocol TCP

        # 负载均衡的真实服务器,也就是nginx节点的具体的真实ip地址
        real_server 192.168.64.131 80 {
                # 轮询的默认权重配比设置为1
                weight 1
                # 设置健康检查
                TCP_CHECK {
                    # 检查的80端口
                    connect_port 80
                    # 超时时间 2s
                    connect_timeout 2
                    # 重试次数 2次
                    nb_get_retry 2
                    # 时间间隔 3s
                    delay_before_retry 3
                }

        }

        real_server 192.168.64.132 80 {
                # 轮询的默认权重配比设置为1
                weight 1
                # 设置健康检查
                TCP_CHECK {
                    # 检查的80端口
                    connect_port 80
                    # 超时时间 2s
                    connect_timeout 2
                    # 重试次数 2次
                    nb_get_retry 2
                    # 时间间隔 3s
                    delay_before_retry 3
                }
        }
}

5.3、启动主从的Keepalived

# 进去启动目录里
cd /usr/local/keepalived/sbin

# 启动keepalived
./keepalived

5.4、查看Lvs情况

# 清除配置的规则(一般不用清除)
ipvsadm -C

# 查看连接情况
ipvsadm -Ln

# 查看轮询情况
ipvsadm -Lnc

# 查看状态
ipvsadm -Ln --stats

你可能感兴趣的:(Nginx,Keepalived,LVS)