LVS_NAT和LVS_NR的实现模拟

四层负载均衡(LVS)才是实现keepalived的主要场景

Haproxy 既支持4层负载均衡又支持七层负载均衡。 支持,http。tcp
nginx,支持http,tcp。
LVS 只支持tcp

nat模型 配置

注意,nat模型 可以将内网的网关设置为lvs的vip地址

客户端

只有一个公网ip

路由

  1. 开启路由的转发功能forward
    sysctl -a | grep “forward” 过滤查看是否开启转发,1是开启,0是关闭
    如果没有开启,vim /etc/sysctl.conf 将 net.ipv4.ip_forward = 1,粘贴到最底部。
  2. sysctl -p 加载参数
  3. 路由有两个网卡,一个走公网(需配置网关),一个走内网(需配置内网ip,成为lvs的网关)
  4. (虚拟机需要做地址映射):
    iptables -t nat -A PREROUTING -d 10.0.0.200 -j DNAT --to 172.16.1.100
    注:真实环境下,需要将路由器的公网ip映射到lLVS的vip

让内部主机可以上网:iptables -t nat -A POSTROUTING -s 172.16.1.0/24 - j SNAT --to 10.0.0.200

lvs

  1. 下载 ipvsadm
  2. 需要两个网卡,一个内网,一个vip(即虚拟ip,做高可用,以及集群服务的调度)。
  3. 开启路由转发功能forward,vim /etc/sysctl.conf 将 net.ipv4.ip_forward = 1
  4. 将公网的ip根据调度算法替换为内网ip进行请求,需要做一个集群
  5. lvs 需要用到ipvsadm 创建集群,
ipvsadm -A -t 172.16.1.100:80 -s rr
# -A 是创建集群,
# -t 是 指定操作哪个节点和端口
# -s 是指定调度策略(轮询)
# rr 是轮询  

ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.6:80 -m
# -a 向集群内添加节点
# -r 指定后端rs节点的ip和端口
# -m 指定lvs的工作模型(-m是nat模型)
# -g 是NR模型

RS(real server(离lvs最近的服务器))

只需要一个内网ip,将网关指向lvs的内网ip

准备:

1台client
1台lvs
2台rs

RS配置

  1. 关闭公网ip(eth0)(实际生产,rs本身是没有公网ip的)
  2. rs 内网 ip(eth1)的网关指向 路由器 中的内网ip,并且要创建一个vip的网卡。
创建vip网卡
cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=172.16.1.100
NETMASK=255.0.0.0
ONBOOT=yes
NAME=loopback            
  1. 重启eth1,重启lo:0
  2. 修改rsarp广播应答机制
    arp_ignore(控制系统在收到外部的 arp 请求时,是否需要应答。)
    0 默认值,将本机所有接口的所有信息像每个连接的网络进行通告。
    1 只应答本地主机访问网络接口( eth0–>lo ),才给予响应
    arp_announce(控制系统是否对外宣布自己的地址。)
    0 默认值,把本机所有接口的所有信息向每个接口的网络进行通告;
    1 “尽量避免” 将接口信息向非直接连接网络进行通告;
    2 “必须避免” 将接口信息向非本网络进行通告;
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/default/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
				
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "2" >/proc/sys/net/ipv4/conf/default/arp_announce
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

lvs

一个内网ip,网关指向路由的内网ip

一个vip,自己设定。

路由

一个公网IP+网关+掩码
一个内网IP

然后做地址映射


nat和nr的区别

nat做的是ip地址的替换,
nr做的是mac地址的替换

实现ipvsadm调动后端节点
首先创建一个集群
其次想集群中添加节点

ipvsadm -A -t 172.16.1.100:80 -s rr
ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.5:80 -m(NAT)
ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.6:80 -g(NR)
# -A  创建集群
# -t 指定操作的节点和端口
# -s 指定调度侧录
# -a 向集群内添加节点
# -r 指定要添加的后端(rs)节点

路由需要做地址映射

建议将lvs和后端(rs)的节点的网关都设置为 vip,这样在实现高可用以后,就能解决 第一台lvs的故障 导致后端网关失效,无法回应请求的问题。

地址映射

iptables -t nat -A PREROUTING -d 10.0.0.200 -j DNAT --to 172.16.1.100  
使外部请求可以进来

dnat和snat的区别

dnat用于互联网访问局域网
snat用于局域网访问互联网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值