LVS-DR实验记录

接上一篇:LVS-NAT实验记录

LVS-DR工作原理:



①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。

③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。

一,实验背景


1.1,使用了3台VMware虚拟机分别作为:LVS-DR、RS1、RS2;而Client端我尝试用物理机。具体IP划分如下:

Client:物理机(VMnet8)192.168.229.1
VIP(lo:0):192.168.229.200
LVS(ens33):192.168.229.133
RS1-WEB1:192.168.229.142
RS2-WEB2:192.168.229.143
PS:注意要关闭防火墙和SELinux

1.2,在LVS-DR上启用路由转发、3台虚拟机上都添加VIP

[root@lvs-dr ~]#sysctl net.ipv4.ip_forward     		#查看是否开启路由转发
[root@lvs-dr ~]#net.ipv4.ip_forward = 0			#“0”代表没有开启							
[root@lvs-dr ~]#vim /etc/sysctl.conf     		#开启转发功能
[root@lvs-dr ~]#net.ipv4.ip_forward = 1			#添加进去
[root@lvs-dr ~]#sysctl -p  				#使生效,"1"代表开启成功

ifconfig lo:0 192.168.229.200/32        #添加VIP到环回口lo:0(在lvs-dr,web1/2上都要配置相同VIP)

二,配置LVS-DR

2.1,安装并启用LVS

[root@lvs-dr ~]# yum install -y ipvsadm.x86_64 
[root@lvs-dr ~]# touch /etc/sysconfig/ipvsadm  #没创建会无法启动
[root@lvs-dr ~]# systemctl start ipvsadm.service   #启动LVS

2.2,配置负载均衡

[root@lvs-dr ~]# ipvsadm -A -t 192.168.229.200:80 -s rr     #-A 添加VIP;-t tcp;-s 添加调度规则;rr 轮询
[root@lvs-dr ~]# ipvsadm -a -t 192.168.229.200:80 -r 192.168.229.142:80 -g  #-a 添加真实服务器;-r 真实IP;-g DR模式 
[root@lvs-dr ~]# ipvsadm -a -t 192.168.229.200:80 -r 192.168.229.143:80 -g

查看当前配置的虚拟服务和各个RS的权重

[root@lvs-dr ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.229.200:80 rr
  -> 192.168.229.142:80           Route   1      0          0         
  -> 192.168.229.143:80           Route   1      0          0  

三,RS-WEB服务器配置

3.1,配置web服务(web1/2都需要配置)

#安装httpd服务
[root@web1 ~]yum  install -y httpd
#启用http
[root@web1 ~]systemctl start httpd
#设置自启
[root@web1 ~]systemctl enable httpd
#设置主页面(以web1为例)
[root@web1 ~]echo  "This is RS1-Web1" >/var/www/html/index.html

3.2,给web服务器设置内核参数(web1/2都需要配置)

#限制ARP响应和通告
   echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
   echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
   echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
   echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

四,测试&验证

4.1,客户端测试(中间要清一下缓存或者换一个浏览器)


也可以使用命令行测试


C:\Users\Win10>curl  192.168.229.200
This is RS2-Web2

C:\Users\Win10>curl  192.168.229.200
This is RS1-Web1

C:\Users\Win10>curl  192.168.229.200
This is RS2-Web2

C:\Users\Win10>curl  192.168.229.200
This is RS1-Web1

可以看到web服务器根据轮询规则一次换一台接受访问

4.2,查看LVS统计值

[root@lvs-dr ~]# ipvsadm -L -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 14:47  ESTABLISHED 192.168.229.1:ccag-pib lvs-dr:http        192.168.229.143:http
TCP 14:32  ESTABLISHED 192.168.229.1:7157 lvs-dr:http        192.168.229.143:http
TCP 15:01  ESTABLISHED 192.168.229.1:cnckadserver lvs-dr:http        192.168.229.142:http
TCP 15:02  ESTABLISHED 192.168.229.1:7328 lvs-dr:http        192.168.229.143:http
TCP 01:09  FIN_WAIT    192.168.229.1:cnckadserver lvs-dr:http        192.168.229.142:http
TCP 00:33  FIN_WAIT    192.168.229.1:cnckadserver lvs-dr:http        192.168.229.142:http

4.3,查看当前ipvs模块中的转发情况信息

[root@lvs-dr ~]#  ipvsadm -Ln --stats 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.229.200:80                 32      208        0    22974        0
  -> 192.168.229.142:80                 16       85        0     4786        0
  -> 192.168.229.143:80                 16      123        0    18188        0

评论

此博客中的热门博文

ELK日志平台——Elasticsearch 8.x安装部署

Linux终端中文字体显示乱码问题解决方法

部署ELK日志平台集群(Elasticsearch, Logstash, Kibana)实验记录