1. LVS基于四层,工作效率高。
  2. 单个Nginx承受不了压力,需要集群。
  3. LVS充当Nginx的集群调度者。
  4. Nginx接受请求来回,LVS可以只接受不响应。

keepalived nginx lvs 配置 nginx+lvs_重启


LVS的四种模式:

1.LVS模式之NAT

这种模式下Real Server可以在内网中,所有的请求和返回都要经过LVS,对于高流量的场景并不适用。

keepalived nginx lvs 配置 nginx+lvs_Server_02

2.LVS模式之 TUN

这种模式下是基于IP的隧道模式,Real Server要暴露在公网当中,并且必须存在网卡,所有请求的上行进过LVS,下行不需要经过LVS直接返回给用户, 提高了请求数和吞吐量。

keepalived nginx lvs 配置 nginx+lvs_Server_03


3.LVS模式之DR模式(Direct Route)

这种模式下Real Server就不会处于公网之中, 是将响应总结起来然后进过vip的Router返回。避免了将Real Server暴露在公网之中。

keepalived nginx lvs 配置 nginx+lvs_Server_04

安装LVS

现如今的centos都是集成了lvs,所以ipvs是自带的,相当于苹果手机自带ios,我们只需要安装ipvsadm(ipvsadm是管理集群的工具,通过ipvs可以管理集群,查看集群等操作)

yum install ipvsadm

#检查是否安装成功
ipvsadm -Ln

配置虚拟IP

注意:

  • 阿里云:不支持虚拟IP
  • 腾讯云:支持虚拟IP,但是需要购买,可以最多支持10个虚拟IP

配置lvs的虚拟ip:

  1. 找到网卡配置目录
  2. 拷贝并且创建子接口
cp ifcfg-ens33 ifcfg-ens33:1
  • 修改子接口配置
  • keepalived nginx lvs 配置 nginx+lvs_重启_05

  • 重启网络服务 service network restart
  • 查看结果
  • keepalived nginx lvs 配置 nginx+lvs_IP_06

配置Real Server 虚拟IP

  • 找到网卡配置目录,找到io(本地环回接口,用户构建虚拟网络子接口),拷贝一份新的然后进行修改
  • keepalived nginx lvs 配置 nginx+lvs_IP_07

  • 修改内容
  • keepalived nginx lvs 配置 nginx+lvs_重启_08

  • 重启网络服务

    APR响应级别与通告行为的概念
  1. arp-ignore: ARP响应级别(处理请求)
    - 0: 只要本机配置了IP,就能响应请求
    - 1: 请求的目标地址到达对应的网络接口,才会响应请求
  2. arp-announce: ARP通告行为(返回响应)
  • 0: 本机上任何网络接口都向外通告,所有的网卡都能接受通告
  • 1: 尽可能避免本网卡与不匹配的目标进行通告
  • 2: 只在本网卡通告

配置ARP

  1. 打开sysctl.conf
vim /etc/sysctl.conf
  1. 配置所有网卡默认网卡lo网卡,分别对应alldefaultlo
# configration for lvs
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
  1. 刷新配置文件
  2. keepalived nginx lvs 配置 nginx+lvs_Server_09

  3. 增加一个路由,用户接受数据报文,当有请求到本机之后,会交给lo去处理
  4. keepalived nginx lvs 配置 nginx+lvs_IP_10

  5. 防止重启失效
  6. echo "route add -host 192.168.1.150 dev lo:1" >> /etc/rc.local
  7. keepalived nginx lvs 配置 nginx+lvs_Server_11

使用ipvsadm去配置集群规则

  1. 创建lvs节点,用户访问的集群调度者
ipvsadm -A -t 192.168.1.150:80 -s rr -p 5
  • -A: 添加集群
  • -t: tcp协议
  • ip地址: 设定集群的访问ip,也就是虚拟地址
  • -s: 设置负载均衡的算法,rr 标识轮询
  • -p: 设置链接持久化的时间
  1. 创建2台RS真实的服务器
ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.171:80 -g
ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.172:80 -g
  • -a: 表示添加真实的服务器
  • -t: 表示tcp协议
  • -r: 表示真实的服务器地址
  • -g: 设定DR模式
  1. 保存到规则库,否则重启失效
ipvsadm -S
  1. 检查集群
# 查看集群列表
ipvsadm -Ln

#查看集群状态
ipvsadm -Ln --stats
  1. 其他命令
# 重启ipvsadm,重启后需要重新配置
    service ipvsadm restart
    # 查看持久化连接
    ipvsadm -Ln --persistent-conn
    # 查看连接请求过期时间以及请求源ip和目标ip
    ipvsadm -Lnc
    
    # 设置tcp tcpfin udp 的过期时间(一般保持默认)
    ipvsadm --set 1 1 1
    # 查看过期时间
    ipvsadm -Ln --timeout
  1. 详细的帮助文档
ipvmsadm -h

man ipvsadm

使用keepalived配置集群规则