keepalive lvs nginx NAT

2019-04-15  本文已影响0人  王小杰at2019

环境准备

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

机器列表

配置要点

  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可能会成为性能瓶颈,所以不使用于并发很高的应用场景
上一篇 下一篇

猜你喜欢

热点阅读