【为什么要用LVS+Nginx】

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


LVS的四种模式:
1.LVS模式之NAT
这种模式下Real Server可以在内网中,所有的请求和返回都要经过LVS,对于高流量的场景并不适用。
【为什么要用LVS+Nginx】_第1张图片2.LVS模式之 TUN
这种模式下是基于IP的隧道模式,Real Server要暴露在公网当中,并且必须存在网卡,所有请求的上行进过LVS,下行不需要经过LVS直接返回给用户, 提高了请求数和吞吐量。
【为什么要用LVS+Nginx】_第2张图片
3.LVS模式之DR模式(Direct Route)
这种模式下Real Server就不会处于公网之中, 是将响应总结起来然后进过vip的Router返回。避免了将Real Server暴露在公网之中。
【为什么要用LVS+Nginx】_第3张图片

安装LVS

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

yum install ipvsadm

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

配置虚拟IP

注意:

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

配置lvs的虚拟ip:

  1. 找到网卡配置目录
    【为什么要用LVS+Nginx】_第4张图片
  2. 拷贝并且创建子接口
cp ifcfg-ens33 ifcfg-ens33:1
  • 修改子接口配置

  • 重启网络服务 service network restart

  • 查看结果

配置Real Server 虚拟IP

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

  • 修改内容
    【为什么要用LVS+Nginx】_第5张图片

  • 重启网络服务

    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. 增加一个路由,用户接受数据报文,当有请求到本机之后,会交给lo去处理
    【为什么要用LVS+Nginx】_第6张图片

  3. 防止重启失效

  4. echo "route add -host 192.168.1.150 dev lo:1" >> /etc/rc.local 【为什么要用LVS+Nginx】_第7张图片

使用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配置集群规则
keepalived 可以兼容lvs配置,不需要手动ipvsadm去创建集群
配置请见:【Keepalived】安装、配置文件详解、主备、热备、LVS的配置

你可能感兴趣的:(架构思考,java)