美文网首页
keepalive lvs nginx NAT

keepalive lvs nginx NAT

作者: 王小杰at2019 | 来源:发表于2019-04-15 12:23 被阅读0次

    环境准备

    keepalived 原理

    通过 vrrp 协议协商主从 master backup 响应 arp 广播

    image.png

    nat 类型介绍

    1. SNAT
      场景:云上的vm主机用户作为客户端访问外网服务器
      vm(client)--->SNAT(将数据包中的内网源IP转换为外网IP)--->Internet(服务器)--->SNAT(将数据包内的目的IP转换为内网IP)--->vm(client)

    2. DNAT
      场景:云上的VM主机作为服务器端为外网提供服务
      Internet(client用户)--->DNAT(将数据包中的目的公网IP转换为目的内网IP)--->VM(server)--->DNAT(将数据包中的源内网IP转换为外网IP)--->Internet(client用户)

    扩展

    lvs DNAT模式

    image.png

    机器列表

    • keepalived1

      • 192.168.10.2
      • 192.168.20.2
      • vip 192.168.10.100
      • vip 192.168.20.100
    • keepalived2

      • 192.168.10.3
      • 192.168.20.3
      • vip 192.168.10.100
      • vip 192.168.20.100
    • rs server1

      • 192.168.20.4 gw 192.168.20.100
    • rs server2

      • 192.168.20.5 gw 192.168.20.100
    • rs server3

      • 192.168.20.6 gw 192.168.20.100

    配置要点

    1. 不同的网段
    2. <span style='color:#ff0000'>关闭 selinux</span>
    3. 关闭防火墙
    4. 在 DS 上开启 IP 转发 net.ipv4.ip_forward = 1

    安装方式

    yum install  keepalived
    yum install nginx
    
    # 在 DS 上安装
    yum install ipvsadm
    
    

    配置 keepalived

    1. 备用节点 配置为 backup
    2. priority 小于master节点
    3. persistence_timeout 需要配置为0 ,要不然在失效之前如果 RS 不能使用了那么不会自动切换到
    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
       vrrp_skip_check_adv_addr
       vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface ens33
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.10.100
            
        }
    }
    
    virtual_server 192.168.10.100 80 {
        delay_loop 6
        lb_algo rr
        lb_kind NAT
        persistence_timeout 0
        protocol TCP
    
        real_server 192.168.20.4 80 {
            weight 1
            HTTP_GET {
                url {
                  path /
                }
                connect_timeout 6
                nb_get_retry 3
                delay_before_retry 6
            }
        }
    
        real_server 192.168.20.5 80 {
            weight 1
            HTTP_GET {
                url {
                  path /
                }
                connect_timeout 6
                nb_get_retry 3
                delay_before_retry 6
            }
        }
        real_server 192.168.20.6 80 {
            weight 1
            HTTP_GET {
                url {
                  path /
                }
                connect_timeout 6
                nb_get_retry 3
                delay_before_retry 6
            }
        }
    
    }
    
    # 做虚拟网关
    vrrp_instance VI_2 {
        state MASTER
        interface ens37
        virtual_router_id 52
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
           192.168.20.100
            
        }
    }
    

    RS 主机配置

    1. 添加网关
    route add default gw 192.168.20.100
    
    1. 修改nginx响应文件区分服务主机

    工具使用

    1. ipvsadm -ln 查看转发规则
    2. ipvsadm -lnc 查看当前转发的 TCP 连接
    3. 对于同网段需要添加 clientip 的路由到 DS
    route add -host clientIP gw  DS
    

    NAT模式特性总结:

    1. realserver应该使用私有ip地址
    2. 一般realsever的网关应该指向DIP,不然的话无法保证响应报文经过director
    3. RIP要和DIP应该在同一网段内
    4. 进出的报文,无论请求还是响应都要经过Directory
    5. 支持端口映射
    6. realserver可以使用任意系统,只要端口对应即可
    7. 在高负载下,directory可能会成为性能瓶颈,所以不使用于并发很高的应用场景

    相关文章

      网友评论

          本文标题:keepalive lvs nginx NAT

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