lvs的dr模式实验

环境准备:

准备4台干净机器:1个client  1个dr  2个rs
修改主机名称,固定ip地址 ,关闭防火墙和Selinux
各机器能互相ping通,所有机器在同一个网段 

dr:192.168.22.155

rs1:192.168.22.157

rs2:192.168.22.158

客户端:192.168.22.143

实验

dr上的操作

[root@dr ~]#  yum install ipvsadm -y 先装软件

[root@dr ~]#route -n查看路由表

正常数据包发包是从dr的dip往下分发流量,而不是用vip分发流量。

安装ifconfig(route也有了)

[root@dr ~]# yum search ifconfig

[root@dr ~]# yum -y install net-tools.x86_64   

或者

[root@dr ~]#yum install net-tools -y 这个也是安装ifconfig的命令

[root@dr network-scripts]# ifconfig ens33:0 192.168.26.251添加ip地址

ip a 查看发现多了251ip   

rs1的操作

 rs1和rs2非常像

第一件事先装nginx,因为做负载均衡,最后得做测试,realserver上装个nginx服务,dr是负载均衡器,看它最后能不能实现负载均衡,装完之后,把它主页面改一改,两个都一样。

[root@rs1 ~]# yum install nginx -y 安装nginx

[root@rs1 ~]# echo rs1 > /usr/share/nginx/html/index.html  把主页面改一下

[root@rs1 yum.repos.d]# systemctl start nginx 启动nginx服务

启动起来之后在本地测一下能不能用

[root@rs1 yum.repos.d]# curl 127.1
rs1

然后再互相测一下能不能用,一定要测试

[root@rs1 yum.repos.d]# curl 192.168.22.158
rs2

realserver上面的应用准备好了

需要在rs1和rs2,这两台机器上添加一个vip,把上面dr1添加的251ip,当作vip。做一个lo:0的虚拟网卡,把它的ip地址设置成192.168.22.251/32。一定要把子网掩码设置成32位,因为网卡回包的时候有两个网卡,怎么决定让它用哪个网卡回包,在linux里可以修改内核参数,参数的作用是让系统里比较好的ip去回数据包,默认情况下没有这个功能,需要修改一个内核参数,

什么是最好的ip?

越精确的ip系统认为越好,子网掩码越长,越精确。

[root@rs1 yum.repos.d]# yum install net-tools -y  安装ifconfig

[root@rs1 yum.repos.d]# ifconfig lo:0 192.168.22.251/32  添加ip

在rs上添加vip,因为rs需要使用vip回数据包给客户端,如果使用他自己的Ip回客户端,客户端不接受。

添加完之后,ip a 查看一下,发现多了251ip。接下来就用251当做vip

dr1上的251是没有在lo上,它是在ens33上。dr1上的251是24位的子网掩码,sr1和sr2是32位的子网掩码。251/0,0表示32位。创建vip时候子网掩码,dr上24  rs上32

修改内核参数

[root@rs1 yum.repos.d]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@rs1 yum.repos.d]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

1.为了让rs1和rs2机器上的vip忽略内网的arp广播/响应。

什么是内网的arp响应?

就是客户端发来的广播包,我不响应。
2.为了让rs1和rs2机器上的vip回数据包,而不是他本来的Ip。要让子网掩码是32位的精确ip回数据包。

rs2的操作

[root@rs2 ~]# yum install nginx -y 安装nginx

[root@rs2 ~]# echo rs2 > /usr/share/nginx/html/index.html  把主页面改一下

[root@rs2 yum.repos.d]# systemctl start nginx启动nginx服务

启动起来之后在本地测一下能不能用

[root@rs2 yum.repos.d]# curl 127.1
rs2 

然后再互相测一下能不能用,一定要测试

[root@rs2 yum.repos.d]# curl 192.168.22.157
rs2 

realserver上面的应用准备好了

[root@rs2 yum.repos.d]# yum install net-tools -y  安装ifconfig
[root@rs2 yum.repos.d]# ifconfig lo:0 192.168.22.251/32   添加ip

添加完之后,ip a 查看一下,发现多了251ip。接下来就用251当做vip

dr1上的251是没有在lo上,它是在ens33上。dr1上的251是24位的子网掩码,sr1和sr2是32位的子网掩码。

修改内核参数

[root@rs2 yum.repos.d]#  echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs2 yum.repos.d]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

sr1和sr2操作完继续操作dr

添加路由分发规则/流量分发规则

[root@dr ~]#  ipvsadm -A -t 192.168.22.251:80 -s rr

-A添加一个虚拟服务器vip   

-g使用dr模式的lvs    

-t是使用tcp协议的80端口

-s 指定调度策略为rr 轮询 round robin   

-a添加realserver 

-g使用直接路由

-r 指定realserver是谁

ipvsadm -C  清除策略

[root@dr ~]# ipvsadm -a -t 192.168.22.251:80 -r 192.168.22.157:80 -g
[root@dr ~]# ipvsadm -a -t 192.168.22.251:80 -r 192.168.22.158:80 -g

在这里想加多少台都可以,但最好不要超过100台。

测试

用dr访问

测试之前是要保证dr是能访问这两台机器的,因为它是负载均衡器,如果负载均衡器都访问不了sr1和sr2,估计后面够呛。

lvs的dr模式实验_第1张图片

用客户端去访问

 拿客户端去访问负载均衡器,首先负载均衡器不应该有80端口的存在,负载均衡器是没有开nginx服务的。

拿客户端去访问dr

lvs的dr模式实验_第2张图片

 如果实验不成功,最大的原因是dr上用的是虚拟网卡,按道理是能成功。如果不成功,加个独立的网卡。

如果实验不成功上面rs1和rs2的操作,不需要做,只需要把dr做一遍,但是需要额外添加一个网卡。

如果不行重新创建子网卡,

vim /etc/sysconfig/network-scripts/ifcfg-ens33:0

lvs的dr模式实验_第3张图片

 [root@dr ~]# systemctl restart network 重启网卡

拿客户端去访问dr

lvs的dr模式实验_第4张图片

lvs的dr模式实验_第5张图片

  拿一个客户端访问同一个负载均衡也可能是同一个页面,拿其他客户端访问,负载均衡是给多个客户端做负载均衡的,不是给一个客户端做负载均衡的。

【注意】理论支持实践,实践和理论相结合。

你可能感兴趣的:(lvs,java,服务器)