美文网首页
lvs负载均衡

lvs负载均衡

作者: 一剑仙人跪_ | 来源:发表于2019-08-01 19:15 被阅读0次

    LVS负载均衡四种工作模式

    LVS/NAT:网络地址转换模式,进站/出站的数据流量经过分发器(IP负载均衡,他修改的是IP地址) --利用三层功能
    LVS/DR :直接路由模式,只有进站的数据流量经过分发器(数据链路层负载均衡,因为他修改的是目的mac地址)--利 用二层功能mac地址
    LVS/TUN: 隧道模式,只有进站的数据流量经过分发器
    LVS/full-nat:双向转换:通过请求报文的源地址为DIP,目标为RIP来实现转发:对于响应报文而言,修改源地址为 VIP,目标地址为CIP来实现转发


    4.png

    3台机器
    解析:
    192.168.188.131 real-server1
    192.168.188.130 real-server2
    192.168.188.128 lvs-server

    LVS-server 安装lvs管理软件
    [root@localhost ~]# yum -y install ipvsadm
    

    程序包:ipvsadm(LVS管理工具)
    主程序:/usr/sbin/ipvsadm
    规则保存工具:/usr/sbin/ipvsadm-save > /path/to/file
    配置文件:/etc/sysconfig/ipvsadm-config

    LVS/DR 模式

    实验说明:
    1.网络使用NAT模式
    2.DR模式要求Director DIP 和 所有RealServer RIP必须在同一个网段及广播域

    1. 所有节点网关均指定真实网关

    准备工作

    (集群中所有主机)关闭防火墙和selinux

    Director分发器配置

    配置vip
    [root@lvs-server ~]#  ip addr add dev ens33 192.168.188.110/32  #设置vip
    [root@lvs-server ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:59:f9:37 brd ff:ff:ff:ff:ff:ff
        inet 192.168.188.128/24 brd 192.168.188.255 scope global dynamic ens33
           valid_lft 1690sec preferred_lft 1690sec
        inet 192.168.188.110/32 scope global ens33
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fe59:f937/64 scope link 
           valid_lft forever preferred_lft forever
    [root@lvs-server ~]# yum install -y ipvsadm #RHEL确保LoadBalancer仓库可用 
    [root@lvs-server ~]# systemctl start ipvsadm
    [root@lvs-server ~]# ipvsadm --save > /etc/sysconfig/ipvsadm
    
    

    注意:启动如果报错: /bin/bash: /etc/sysconfig/ipvsadm: 没有那个文件或目录 需要手动生成文件

    定义LVS分发策略

    -A:添加VIP
    -t:用的是tcp协议
    -a:添加的是lo的vip地址
    -r:转发到realserverip
    -s:算法
    -L|-l –list #显示内核虚拟服务器表
    --numeric, -n:#以数字形式输出地址和端口号
    -g --gatewaying #指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
    -S -save #保存虚拟服务器规则到标准输出,输出为-R 选项可读的格式
    rr:轮循
    如果添加ip错了,删除命令如下: # ip addr del 192.168.246.193 dev ens33

    [root@lvs-server ~]# ipvsadm -C   #清除内核虚拟服务器表中的所有记录。 
    [root@lvs-server ~]# ipvsadm -A -t 192.168.188.110:80 -s rr 
    [root@lvs-server ~]# ipvsadm -a -t 192.168.188.110:80 -r 192.168.188.130 -g 
    [root@lvs-server ~]# ipvsadm -a -t 192.168.188.110:80 -r 192.168.188.131 -g 
    [root@lvs-server ~]# ipvsadm -S > /etc/sysconfig/ipvsadm  #保存到一个文件中 
    [root@lvs-server ~]# ipvsadm -ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.188.110:80 rr
      -> 192.168.188.130:80           Route   1      0          0         
      -> 192.168.188.131:80           Route   1      0          0
    
    Forward 转发方式,当前是路由转发
    Weight 权重
    ActiveConn 当前活跃的连接数
    InActConn 当前不活跃的连接数
    
    [root@lvs-server ~]# ipvsadm -L -n --stats    #显示统计信息 
    1. Conns    (connections scheduled)  已经转发过的连接数 
    2. InPkts   (incoming packets)       入包个数 
    3. OutPkts  (outgoing packets)       出包个数 
    4. InBytes  (incoming bytes)         入流量(字节)  
    5. OutBytes (outgoing bytes)         出流量(字节) 
    [root@lvs-server ~]# ipvsadm -L -n --rate   #看速率 
    1. CPS      (current connection rate)   每秒连接数 
    2. InPPS    (current in packet rate)    每秒的入包个数 
    3. OutPPS   (current out packet rate)   每秒的出包个数 
    4. InBPS    (current in byte rate)      每秒入流量(字节) 
    5. OutBPS   (current out byte rate)      每秒入流量(字节)
    
    
    所有RS配置

    配置好网站服务器,测试所有RS #为了测试效果,提供不同的页面(以下两台real-server都操作)

    [root@real-server1 ~]# yum install -y nginx
    [root@real-server1 ~]# echo "real-server1" >> /usr/share/nginx/html/index.html  
    [root@real-server1 ~]# ip addr add dev lo 192.168.188.130/32   #在lo接口上绑定VIP 
    [root@real-server1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  #忽略arp广播 
    [root@real-server1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce #匹配精确ip地址回包 
    [root@real-server1 ~]# systemctl start nginx
    [root@real-server1 ~]# systemctl enable  nginx 
    

    因为:realServer的vip有了,接着就是同一个网段中拥有两个vip, 客户端在网关发送arp广播需找vip时需要让 realServer不接受响应.
    解决:
    echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore arp_ignore 设置为1,意味着当别人的arp请求过来的时候,如果接收的设备没有这个ip,就不做出响应(这个ip在lo 上,lo不是接收设备的进口)
    echo 2>/proc/sys/net/ipv4/conf/eth0/arp_announce 使用最好的ip来回应,什么是最好的ip?同一个网段内子网掩码最长的

    测试

    [root@client ~]# elinks -dump http://192.168.188.110
    
    5.png

    高并发场景 LVS 安装及高可用实现 - 惨绿少年 - 博客园 https://www.cnblogs.com/clsn/p/7920637.html#auto_id_4

    相关文章

      网友评论

          本文标题:lvs负载均衡

          本文链接:https://www.haomeiwen.com/subject/nkycdctx.html