• LVS-DR模式(原理图详解)


    标签(空格分隔): linux

    笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流

    前言

    LVS一共四种工作模式。其中,DR模式是比较常用的模式之一,配置较麻烦,这里重点记录一下它的核心要点及优化。先看工作流程,上图:


    实战配置一台LVS负载均衡服务器

    一、主机列表

    主机名 IP地址 角色
    lb01 10.0.0.5/24 调度器
    web01 10.0.0.7/24 RS服务器
    web02 10.0.0.8/24 RS服务器

    二、安装

    # lb01操作
    yum install ipvsadm -y
    rpm -qa ipvsadm
    lsmod |grep ip_vs
    ln -s /usr/src/kernels/`uname -r` /usr/src/linux
    
    #注意Centos 6.X安装lvs,使用1.26版本。并且需要先安装yum install libnl* popt* -y
    
    执行ipvsadm(modprobe ip_vs)把ip_vs模块加载到内核
    
    
    [root@lb01 ~]# ipvsadm
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    
    #IP Virtual Server version 1.2.1 ---- ip_vs    内核模块版本
    

    三、配置LVS服务器

    lb01添加虚拟IP

    ifconfig eth0:0 10.0.0.3/24 up #==>简便写法
    
    [root@lb01 ~]# ipvsadm-save     #保存当前的lvs的规则,可以用ipvsadm-restore恢复
    [root@lb01 ~]# ipvsadm -C     #clear the whole table 清空lvs的所有规则
    [root@lb01 ~]# ipvsadm --set 30 5 60        #设置tpc tcpfin udp超时时间
    [root@lb01 ~]# ipvsadm -A -t 10.0.0.3:80 -s wrr -p 20
    -A        # add virual service with options
    [root@lb01 ~]# ipvsadm -Ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  10.0.0.3:80 wrr persistent 20
    
    -t   tcp服务
    -s   指定轮询算法  rr  wrr  wlc
    -p   指定会话保持时间
    

    添加服务员RS服务器

    [root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1
    [root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1
    [root@lb01 ~]# ipvsadm -ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  10.0.0.3:80 wrr persistent 20
      -> 10.0.0.7:80                  Route   1      0          0         
      -> 10.0.0.8:80                  Route   1      0          0  
    
    [root@lb01 ~]# ipvsadm-save
    -A -t www.etiantian.org:http -s wrr -p 20
    -a -t www.etiantian.org:http -r 10.0.0.7:http -g -w 1
    -a -t www.etiantian.org:http -r 10.0.0.8:http -g -w 1 
    

    参数说明

    -a   #添加rs服务器
    -r   #real  server  RS  ip
    -g   #dr 模式
    -w   #l   weight  权重
    -t   #10.0.0.3:80    使用tcp协议,负载均衡的ip地址是10.0.0.3:80
    

    四、手工在RS端绑定

    1.在每台real server端执行
    绑定vip

    ip addr add 10.0.0.3/32 dev lo label lo:0
    

    2.手工在RS端抑制ARP响应

    cat >>/etc/sysctl.conf<<EOF
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
    EOF
    sysctl -p
    

    五、浏览器测试


    四种工作模式

    • DR(Direct Routing)
    • NAT(Network Address Translation)
    • TUN(Tunneling)
    • FULLNAT(Full Network Address Translation)

    建议日1000千万到2000千万PV或并发请求1万以下都可以考虑用haproxy/nginx或(LVS-NAT模式),DR模式效率很高,但配置麻烦。

    核心要点:

    • 因后端服务器上同样配置了虚拟IP,如果在客户端进行ARP请求时,后端服务器以自身的MAC地址进行了回复,则起不到负载均衡的效果,此时客户端直接连到了某台后端服务器上。

    • 后端服务器的虚拟IP必须绑定到lo:0上,同时指定子网掩码是255.255.255.255,否则ARP禁用会出现异常。

    • 持久连接(Persistence)的问题。持久连接使同一个客户端在超时时间内(ipvsadm-p参数指定,keepalived中的persistence_timeout指令)会持续地连接到同一台后端服务器,这个是4层上的持久连接。来自客户端的每个新的连接会重置该超时时间。

    • Keepalived对后端服务器的健康检查,推荐使用应用层检查方式,另外可以配置Keepalived使用管理员自定义的脚本进行健康检查(MISC_CHECK指令)

    • 负载均衡器之间使用vrrp协议进行高可用设置时,禁用iptables或者打开对vrrp协议的支持。

    • LVS集群中的负载均衡器,推荐使用16GB及以上内存,同时采用多队列网卡提高网卡吞吐量减少处理延时。

    • LVS集群中的后端服务器,根据IO密集型和CPU密集型2类,可以分别使用RAID10、SSD及高频多核CPU来优化。

    参考书籍【Linux运维最佳实践】

  • 相关阅读:
    float浮动后,父级元素高度塌陷和遮盖问题
    Json
    测试连接数据库是否成功
    spark standalone zookeeper HA部署方式
    用NAN简化Google V8 JS引擎的扩展
    在Android上使用Google V8 JS 引擎
    数据可视化工具zeppelin安装
    kafka0.8.2以下版本删除topic
    kafka迁移数据目录
    scala2.10.x case classes cannot have more than 22 parameters
  • 原文地址:https://www.cnblogs.com/Csir/p/6754077.html
Copyright © 2020-2023  润新知