LVS(三):DR模式实验

与世无争的帅哥 提交于 2020-03-17 07:31:56

NAT模式的相关配置操作请参考《LVS(二):NAT模式实验》

和NAT模式不同的是,在DR实验中,我们新增一台容器作为Load Balancer,架构变更为:

宿主机环境:充当客户端访问 web 服务;

  • LoadBalancer 的 container:装有 ipvsadm,充当负载均衡调度器;
  • RS1 的 container:部署 Nginx web 服务器,提供 Web 访问服务,充当服务器池中的一员;
  • RS2 的 container:部署 Nginx web 服务器,提供 Web 访问服务,充当服务器池中的一员;

实验步骤

一、创建服务器池,并安装必备工具

和NAT模式实验一样,所以别来无恙:

  • 安装nginx,vim
  • 修改响应页面
  • 重启nginx服务
docker run --name=RS1 -tdi ubuntu
docker run --name=RS2 -tdi ubuntu
docker run --name=LB -tid ubuntu
...
apt-get install vim nginx -y
...
service nginx start

二、修改web服务器组的内核参数

# 设置只回答目标IP地址是来访网络接口本地地址的ARP查询请求
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

# 为了保险自己可以查看一下是否成功修改
cat /proc/sys/net/ipv4/conf/lo/arp_ignore

# 设置对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.
#首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 
#如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce


# 使得上面的配置立即生效
sysctl -p

ARP 的内核参数详解:

  • arp_ignore 部分参数:定义了本机响应 ARP 请求的级别
  • 0表示目标 IP 是本机的,则响应 ARP 请求。默认为 0;
  • 1如果接收 ARP 请求的网卡 IP 和目标 IP 相同,则响应 ARP 请求;
  • arp_announce 参数:定义了发送 ARP 请求时,源 IP 应该填什么。
  • 0 表示使用任一网络接口上配置的本地 IP 地址,通常就是待发送的 IP 数据包的源 IP 地址 。默认为 0
  • 1 尽量避免使用不属于该网络接口(即发送数据包的网络接口)子网的本地地址作为 ARP 请求的源 IP 地址。大致的意思是如果主机包含多个子网,而 IP 数据包的源 IP 地址属于其中一个子网,虽然该 IP
    地址不属于本网口的子网,但是也可以作为ARP 请求数据包的发送方 IP。
  • 2 表示忽略 IP 数据包的源 IP 地址,总是选择网络接口所配置的最合适的 IP 地址作为 ARP 请求数据包的源 IP 地址(一般适用于一个网口配置了多个 IP 地址)

三、配置web服务器网卡别名

只有目的 IP 是本机器中的一员时才会做相映的处理,所以需要添加网卡别名

ifconfig lo:0 192.168.0.10 broadcast 192.168.0.10 netmask 255.255.255.255 up

两台nginx服务器需做同样的设置

四、设置LoadBalancer调度规则

在Load Balancer容器中,设置相应的ipvsadm规则:

ipvsadm -A -t 192.168.0.10:80 -s rr         # 定义集群服务
ipvsadm -a -t 192.168.0.10:80 -r 192.168.0.3 -g # 添加 RS1
ipvsadm -a -t 192.168.0.10:80 -r 192.168.0.4 -g # 添加 RS2
ipvsadm -l

参数:

  • -A:添加一个新的集群服务
  • -t: 使用 TCP 协议
  • -s: 指定负载均衡调度算法
  • rr:轮询算法(LVS 实现了 8 中调度算法)

192.168.0.10:80 定义集群服务的 IP 地址(VIP) 和端口

  • -a:添加一个新的 RealServer 规则
  • -t:tcp 协议
  • -r:指定 RealServer IP 地址
  • -g:定义为 DR 模式

上面命令添加了两个集群服务器 RealServer1 和 RealServer2

五、设置Load Balancer网卡别名

ifconfig eth0:0 192.168.0.10 netmask 255.255.255.0 up

六、完成配置,测试验证

和NAT模式一样,按住F5不断刷新,看页面是否变化,验证LVS是否正常工作
(图裂了)

-------------The End-------------

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!