美文网首页
LVS nat dr

LVS nat dr

作者: 心疼你萌萌哒 | 来源:发表于2018-06-14 08:56 被阅读0次

    ======================参考地址 ======================
    https://www.cnblogs.com/MacoLee/p/5856858.html
    ===========================lvs nat=================

    3.png
    4.png

    ======================LVS DR=======================================

    1.png
    TIM截图20180614085654.png TIM截图20180614085513.png

    =========dr 模式 二层负载均衡(改了mac)=============

    注意:1.添加网卡(负载均衡端52机)
               2.谁的路由条目在上就是dip 另一个就是vip(route -n)
    3台机器
    192.168.44.52 负载均衡器 虚拟VIP 192.168.44.66 DIP 52
    192.168.44.50  web1   lo为192.168.44.66/32
    192.168.44.51  web2   lo为192.168.44.66/32
    
    
    1.====在两个web安装web服务
    yum -y install nginx -y
    ====修改主机内容
    vim /usr/share/nginx/html/index.html
    web1
    vim /usr/share/nginx/html/index.html
    web2
    启动服务
    systemctl start nginx
    
    2.====给两台web服务器的lo网卡设置子网掩码为32为的vip
    ifconfig lo:0 192.168.44.66/32 或者永久
    [root@web1 network-scripts]# cat ifcfg-lo:0
    DEVICE=lo:0  
    IPADDR=192.168.44.66
    NETMASK=255.255.255.255 
    BROADCAST=192.168.44.66
    ONBOOT=yes 
    NAME=loopback  
    
    3.====子网掩码最好 的32位发送过去 设置内核参数
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    
    4.让两台web服务器不收到广播 忽悠arp响应
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    5.注意:谁的路由条目在上就是dip 另一个就是vip(route -n)
    
    6.设置lvs路由条目 ipvsadm -Ln(查条目)位置192.168.44.52
    yum install -y ipvsadm  (lvs 用户态管理工具)
    [root@52 network-scripts]# cat ifcfg-ens37
    TYPE="Ethernet"
    BOOTPROTO="static"
    NAME="ens37"
    DEVICE="ens37"
    ONBOOT="yes"
    IPADDR=192.168.44.66
    GATEWAY=192.168.44.2
    DNS1=8.8.8.8
    NETMASK=255.255.255.255
    [root@]ipvsadm -A -t 192.168.44.vip:80 -s rr
    [root@]ipvsadm -a -t 192.168.44.vip:80 -r 192.168.44.50:80 -g
    [root@]ipvsadm -a -t 192.168.44.vip:80 -r 192.168.44.51:80 -g
    [root@]ip addr add dev ens33 192.168.44.66/32
    -A 添加virtual server
    -t 指定使用tcp协议
    -s 指定策略为rr
    -r 真实的服务器[Real-Server:port]
    -g 直接路由
    7.查看方式两种
    1.命令行:elinks --dump http://192.168.44.66/index.html
    2.浏览器地址 192.168.44.66/index.html
    抓包软件
    tcpdump -i ens33 icmp -v -nn
    tcpdump -i ens33 tcp and port 80 -v -nn
    8.让配置永久生效
    ipvsadm-save > /etc/sysconfig/ipvsadm-config
    ipvsadm -S 
    
    MIP是静态一对一的双向地址映射。 
    VIP是地址+端口的映射,将不同地址的不同端口,映射到规定地址的规定端口。
    DIP分2种一种是PAT,另一种就是用地址池中的地址映射。和CISCO的NAT相同。
    
    tcpdump -i ens33 icmp -v -nn
    

    ===============要解决三个问题:=========================

    要解决三个问题:
    1 .两个http服务器除了有自己的rip以外还要拥有vip
        因为:数据包需从realServer返回 ,realServer返回的数据需要源IP为VIP 
        解决:添加 lo接口(本地环路接口) ,lo:1   vip/32. 
    
    2 .当GW向下广播vip的时候 要分发器的vip响应 而两个http的vip不要响应
        因为: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?同一个网段内子网掩码最长的
            
    3 .当分发器向下找两个http服务器时,必须从dip发包
        因为:Director 发送数据包给realServer , 要走dip的网卡,否则ip流向就是vip-->vip 发送不成功. 
        解决:调整vip和dip网卡在路由表中的顺序,dip在上,vip在下即可解决。 
        
        假如:192.168.1.1 是vip ,网卡eth0
                 192.168.1.2 是dip,网卡eth1
                在添加这两个ip的时候,路由表会出现如下条目:
                192.168.1.0  0.0.0.0  255.255.255.0  u   0    0   0   eth0
                192.168.1.0  0.0.0.0  255.255.255.0  u   0    0   0   eth1
                这样的路由顺序会由eth0也就是vip发包,是不行的
                解决:直接删除eth0所在的网络
                ip route del 192.168.1.0/24 dev eth0
                
    ==========================================
        注:LO接口本身的作用:
        假如包是由一个本地进程为另一个本地进程产生的,  它们将通过外出链的'lo'接口,然后返回进入链的'lo'接口. 
    

    ===========清零连接数==============

    [root@192.168.44.46 ~] elinks --dump http:// 192.168.44.66/index.html
    [root@nginx1 ~]# ipvsadm -L -n --stats
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
      -> RemoteAddress:Port
    TCP  192.168.44.66:80                   34      948        0   260065        0
      -> 192.168.44.50:80                   17      568        0   166188        0
      -> 192.168.44.51:80                   17      380        0    93877        0
    [root@nginx1 ~]# ipvsadm -Z
    [root@nginx1 ~]# ipvsadm -L -n --stats
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
      -> RemoteAddress:Port
    TCP  192.168.44.66:80                    0        0        0        0        0
      -> 192.168.44.50:80                    0        0        0        0        0
      -> 192.168.44.51:80                    0        0        0        0        0
    
    

    =========================keepalived+lvs==============================


    TIM截图20180615100756.png

    keepalived是什么
    keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,
    用来防止单点故障。

    keepalived工作原理
    keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,
    即虚拟路由冗余协议。

    虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由
    

    器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供
    服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当
    backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个
    backup当master。这样的话就可以保证路由器的高可用了。

    keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,
    负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常
    见的各种检查方式。vrrp模块是来实现VRRP协议的。

    VRRP协议(了解一下)
    ===================在两台负载均衡器上52|53==============================

    环境:先在两台负载均衡器上(52|53上)各添加一块网卡ens37 不用给它们配置静态IP
    1.在两个web安装web服务
    yum -y install nginx -y
    ====修改主机内容
    vim /usr/share/nginx/html/index.html
    web1
    vim /usr/share/nginx/html/index.html
    web2
    启动服务
    systemctl start nginx
    
    2.====给两台web服务器的lo网卡设置子网掩码为32为的vip
    ifconfig lo:0 192.168.44.66/32 或者永久
    [root@web1 network-scripts]# cat ifcfg-lo:0
    DEVICE=lo:0  
    IPADDR=192.168.44.66
    NETMASK=255.255.255.255 
    BROADCAST=192.168.44.66
    ONBOOT=yes 
    NAME=loopback  
    3.====子网掩码最好 的32位发送过去 设置内核参数
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    4.让两台web服务器不收到广播 忽悠arp响应
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    5.注意:谁的路由条目在上就是dip 另一个就是vip(route -n)
    5.2 yum -y install ipvsadm(两台负载均衡上装ipvsadm 52|53)
          ipvsadm -C 清除内核虚拟服务器表中的所有记录。 
          ipvsadm -L 显示内核虚拟服务器表 
    重点:vip是飘的 服务器里的记录交给下面的keepalived自动配置,也不用配置ens37那个文件
    6.[root@]# yum install -y keepalived  (两台负载均衡器上装kepalived)
    [root@]# cd /etc/keepalived/
    [root@]# vim keepalived.conf
    ! Configuration File for keepalived
    global_defs {                       
       notification_email {
           root@localhost
           }
       notification_email_from keepalived@localhost
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id Director1
       }
       
    vrrp_instance VI_1 {                
       state MASTER           另一台填state BACKUP             
       interface ens33     //随便本机网卡        
       virtual_router_id 51            
       priority 150        //另一台填 priority 100         
       advert_int 1          //检查间隔,单位秒    
       authentication {
           auth_type PASS
           auth_pass 1111
           }
       virtual_ipaddress {
           192.168.44.66/32 dev ens37
           }
       }
       
    virtual_server 192.168.44.66 80 {       //LVS 配置
       delay_loop 3                  //服务论询的时间间隔
       lb_algo rr       //LVS 调度算法
       lb_kind DR         // LVS 集群模式
       protocol TCP                            
       real_server 192.168.44.50 80 {
           weight 1
           TCP_CHECK {
               connect_timeout 3
               }
           }
       real_server 192.168.44.51 80 {
           weight 1
           TCP_CHECK {
               connect_timeout 3
               }
           }
    }
    7.[root@ 192.168.44.52]# scp keepalived.conf 192.168.44.53:/etc/keepalived/
    拷贝后,修改配置文件
       state BACKUP
       priority 100
       
    8.两个Director上启动服务:
    rhel6:
       # service keepalived start
    rhel7:
       # systemctl start keepalived
    9.测试:
    1)观察lvs路由条目 ipvsadm -L
    2)观察vip地址在哪台机器上 
    3)客户端浏览器访问vip
    4)关闭master上的keepalived服务,再次访问vip
    

    相关文章

      网友评论

          本文标题:LVS nat dr

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