Linux企业实战 --LVS/DR

标签: Linux企业实战

1.原理

在lvs(综述)里讲过。

2.实验环境

在真机中开启三台虚拟机
1台做lvs调度器,两台做后端轮询的web服务器,用真机分别连接三台虚拟机,真机本身是客户端

当前server1是director server,server2和server3是real server

步骤一

[[email protected] ~] yum install ipvsadm -y
[[email protected] ~] ipvsadm -ln  # 查看ipvsadm的编写策略

在这里插入图片描述步骤二

[[email protected] ~]ipvsadm -A -t 172.25.42.100:80 -s rr #设置客户端进入lvs调度器的入口地址,调度算法是轮询
[[email protected] ~]ipvsadm -a -t 172.25.42.100:80 -r 172.25.42.2:80 -g #设置lvs的策略:入口的第一台后端服务器的信息
[[email protected] ~]ipvsadm -a -t 172.25.42.100:80 -r 172.25.42.3:80 -g

ipvsadm -A -t 172.25.42.100:80 -s rr ##调度策略,

  • rr 轮询
  • -A --add-service 添加一条新的虚拟服务
  • -t TCP|UDP协议的虚拟服务
  • -s 调度算法

ipvsadm -a -t 172.25.42.100:80 -r 172.25.42.2:80 -g

  • -a 在一个虚拟服务中添加一个新的真实服务器
  • -g | -m | -i lvs模式为:dr | nat | tun
  • -t 说明虚拟服务器提供的是tcp的服务
    在这里插入图片描述

步骤三:添加ip地址(vip):

[[email protected] ~]ip addr add 172.25.254.100/32 dev eth0 ##lvs
[[email protected] ~]ip addr add 172.25.254.100/32 dev eth0 #后端服务器
[[email protected] ~]ip addr add 172.25.254.100/32 dev eth0 #后端服务器

步骤四

[[email protected] ~]ipvsadm -ln

在这里插入图片描述
步骤五:测试
在server2和server3中开启80端口(httpd)

[[email protected] ~]# systemctl start httpd
[[email protected] ~]# systemctl restart httpd
[[email protected] html]# vim /var/www/html/index.html 
server2
[[email protected] ~]# vim /var/www/html/index.html 
server3

真机中测试

[[email protected] ~]# curl 172.25.42.100
server2
[[email protected] ~]# curl 172.25.42.100
server2
[[email protected] ~]# curl 172.25.42.100
server2

在这里插入图片描述

此时不轮询???

为了解决此问题。如下:

3.ARP协议详解

arp协议是“address resolution protocol”(地址解析协议)的编写。其作用是在以太网(局域网)环境中数据传输所依赖的是mac地址而非ip地址,而将已知ip地址转换为mac地址的工作是由apr协议来完成的。
在局域网中,网络实现传输的是‘帧’,帧理念是有目标主机的mac地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的mac地址。但这个目标mac地址是如何获得的?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标ip地址转换成目标mac地址的过程。arp协议的基本功能就是通过目标设备的ip地址,查询目标设备的mac地址,以保证通信的顺利进行。

4.ARP请求

任何时候,当主机需要找出这个网络中另一个主机的物理地址时,它就可以发送一个apr请求报文,这个报文包好了发送方的mac地址和ip地址以及接受方的ip地址。因为发送方不知道接收方的物理地址,所以查询分组会在网络层中进行广播。

正是server2的mac地址,说明广播后被server2接受,并保存了,不会在更改了。
在这里插入图片描述

5.ARP响应(抢答)

局域网中的每一台主机都会接受并处理arp请求报文,然后进行验证,查看接收方的ip地址是不是自己的地址,只有验证成功的主机才会返回一个arp响应报文,这个响应报文包含接收方的ip地址和物理地址。这个报文利用收到的arp请求报文中的请求房屋里地址以单播的方式直接发送给arp请求报文的请求方。

再次测试

arp -d 172.25.42.100 ##删除(MAC地址)并再次测试。
curl 172.25.42.100

客户端第一次访问172.25.254.100的时候server1,server2,server3会去抢答,谁抢到就是谁的解决抢答方案。

解决DR模式不轮循的问题

在server2和server3上进行设置(操作一样)

步骤一

[[email protected] ~]# yum whatprovides arptables
[[email protected] ~]# yum install arptables-0.0.4-8.el7.x86_64 -y
[[email protected] html]# yum install arptables-0.0.4-8.el7.x86_64 -y

步骤二

方法一:arptables推荐

[[email protected] html]# arptables -A INPUT -d 172.25.42.100 -j DROP # 收到的arp,如果目的ip时vip的,丢弃
[[email protected] html]# arptables -A OUTPUT -s 172.25.42.100 -j mangle --mangle-ip-s 172.25.42.2 # 发出去的arp包,如果源ip时vip的,改成realserver的ip
[[email protected] html]# arptables -nL


[[email protected] ~]# arptables -A INPUT -d 172.25.42.100 -j DROP
[[email protected] ~]# arptables -A OUTPUT -s 172.25.42.100 -j mangle --mangle-ip-s 172.25.42.3
[[email protected] ~]# arptables -nL

在这里插入图片描述测试:
在这里插入图片描述
方法二:该参数

arp_ignore和arp_announce参数都和arp协议相关,主要用于控制系统返回arp响应和发送arp请求时的动作。特别是在lvs的dr场景下,他们的配置直接影响到dr转发是否正常:

arp_ignore参数的作用是控制系统在收到外部arp请求时,是否要返回arp响应:

  • 只响应目的ip地址为接收网卡上的本地地址arp请求arp_announce的作用是控制系统在对外发送arp请求时,如何选择arp请求数据包的源ip地址
  • 忽略ip数据包的源ip地址,选择该发送网卡上最合适的本地地址作为arp请求的源ip地址。
sysctl -w net.ipv4.conf.lo.arp_ignore=1
sysctl -w net.ipv4.conf.lo.arp_announce=2
sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2
sysctl -p # 立即生效

6.问题测试

问题一:将 server2 的httpd停止后

在这里插入图片描述怎么检测是否被关掉,DR模式下的后端健康服务检查(Idirectord)

步骤一:找到高可用yum源
我们真机用的都是基础yum源,而该软件需要高可用yum源。
在这里插入图片描述

步骤二:配置高可用yum源

在这里插入图片描述
步骤三:安装ldirectord-3.9.5-3.1.x86_64.rpm高可用的软件
在这里插入图片描述
步骤四:查看安装生成的文件路径

[[email protected] lvs]# rpm -qpl ldirectord-3.9.5-3.1.x86_64.rpm 

在这里插入图片描述
步骤五:

[[email protected] lvs]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
[[email protected] lvs]# cd /etc/ha.d/
[[email protected] ha.d]# ls
ldirectord.cf  resource.d  shellfuncs
[[email protected] ha.d]# vim ldirectord.cf 

在这里插入图片描述在这里插入图片描述在这里插入图片描述
官方解释
在这里插入图片描述在这里插入图片描述
此时,将ipvs规则给健康状况检查的服务去服务。

[[email protected] ha.d]# ipvsadm -ln            
[[email protected] ha.d]# ipvsadm -C #清除规则
[[email protected] ha.d]# systemctl start ldirectord
版权声明:本文为qq_45652989原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45652989/article/details/104432748