【只有帅哥才能看懂的LVS集群】

环境开始的准备:所有的主机关闭防火墙和selinux

一、NAT模式集群

NAT也就是网络地址转换,其作用是通过数据报头的修改,使位于企业内部的私有IP可以访问外网,以及外部用户可以访问位于公司内部的私有IP主机,在nat模式中LVS负载均衡器需要使用两块网卡配置不同的IP地址,第一块网卡与内部的web服务器连接,第二块网卡与公网用户连接。

1、工作原理

基于NAT机制实现。当用户请求到达director之后,director将请求报文的目标地址(即VIP)改成选定的realserver地址,同时将报文的目标端口也改成选定的realserver的相应端口,最后将报文请求发送到指定的realserver。在服务器端得到数据后,realserver将数据返给director,而director将报文的源地址和源端口改成VIP和相应端口,然后把数据发送给用户,完成整个负载调度过程。

2、拓扑图

在这里插入图片描述
实验环境:按照上图进行配置,三台虚拟机就可以了,客户端就用window终端测试。
192.168.0.0/24网段的仅主机模式
172.25.254.0/24nat模式

3、实验步骤

真实服务器(rs1)的设置

[root@rs1 ~]# yum install nginx
[root@rs1 ~]# echo xixi > /usr/share/nginx/html/index.html
[root@rs1 ~]# systemctl enable nginx --now
添加网关指向lvs主机,但也可以在nmcli永久更改网关
[root@rs1 ~]#  route add default gw 192.168.0.100

真实服务器(rs2)的设置

[root@rs2 ~]# yum install nginx
[root@rs2 ~]# echo haha > /usr/share/nginx/html/index.html
[root@rs2 ~]# systemctl enable nginx --now
添加网关指向lvs主机,但也可以在nmcli永久更改网关
[root@rs1 ~]#  route add default gw 192.168.0.100

设置LVS主机

[root@lvs ~]# yum install ipvsadm
开启路由转发功能,lvs两块不同网络的网卡地址
[root@lvs ~]# echo 1 > /proc/sys/net/ipv4/ip_forward (临时的)
以下永久更改
[root@lvs ~]# vim /etc/sysctl.conf 
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1

lvs服务器上添加分发规则
[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10 -m
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20 -m
[root@lvs ~]# ipvsadm -Ln
如果分发策略想要永久的保存的化
[root@lvs ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
[root@lvs ~]# cat /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl restart ipvsadm.service

4、测试:

在这里插入图片描述

二、DR模式集群

DR模式中要求调度器与后端服务器必须在同一个局域网内,VIP地址也需要在调度器与后端所有的服务器间共享,因为最终的真实服务器给客户端回应数据包时需要设置源地址为VIP的地址,目标地址为为客户端的IP地址,这样客户端访问的是LVS调度器的VIP地址,回应的源地址也依然是VIP地址,客户端是感觉不到后端服务器的存在的,由于多台计算机都设置了同样一个VIP地址,所以在DR模式中要求调度器的VIP地址对外是可见的,客户端需要讲请求数据包发送到调度器主机,也就是LVS,而所有的真实服务器的VIP地址必须配置在Non-ARP的网络设备上,也就是该网络设备并不会向外广播自己的MAC及对应的IP地址,真实服务器的VIP对外是不可见的,但是真实服务器却可以接受目标地址为VIP的网络请求,并在回应数据包时将源地址设置为该VIP地址,LVS根据算法选出真实服务器后,在不修改数据报文的情况下,将数据帧的MAC地址修改为选择出的真实服务器的MAC地址,通过交换机将该数据帧发给真实服务器。整个过程中,真实服务器的VIP不需要对外可见。

1、工作原理

基于直接路由来实现。当用户请求到达director之后,director将请求报文的目标地址(即VIP)改成选定的realserver地址,还要改写请求报文的mac地址,将请求发送到指定mac的realserver,而realserver将响应直接返回给客户端,不经过director。这个方式是三种调度中性能最好的,也是我们生产环境中使用最多的。

2、拓扑图

在这里插入图片描述
实验环境:5台虚拟机,按上述拓扑图进行配置,连接云的才需要nat模式,其他的都可以配仅主机模式

3、实验步骤

真实服务器(rs1)的设置

[root@rs1 ~]# yum install nginx
[root@rs1 ~]# echo xixi > /usr/share/nginx/html/index.html
[root@rs1 ~]# systemctl enable nginx --now
添加网关指向lvs主机,但也可以在nmcli永久更改网关
[root@rs1 ~]#  route add default gw 192.168.0.100
查看网关
[root@rs1 ~]# route -n
#添加VIP,调整内核参数,关闭arp
[root@rs1 ~]# ip addr add 192.168.0.200/32 dev lo
[root@rs1 ~]# ip add
[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 

真实服务器(rs2)的设置

[root@rs2 ~]# yum install nginx
[root@rs2 ~]# echo haha > /usr/share/nginx/html/index.html
[root@rs2 ~]# systemctl enable nginx --now
添加网关指向lvs主机,但也可以在nmcli永久更改网关
[root@rs1 ~]#  route add default gw 192.168.0.100
查看网关
[root@rs1 ~]# route -n
#添加VIP,调整内核参数,关闭arp
[root@rs2 ~]# ip addr add 192.168.0.200/32 dev lo
[root@rs2 ~]# ip ad
这些都是临时的
[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 

LVS负载均衡器设置

 eth1=192.168.0.50/24;gw=192.168.0.100   #这块网卡也一定要加网关
 ip addr del 192.168.0.100/32 dev lo
[root@lvs ~]# ipvsadm -A -t 192.168.0.200:80 -s wrr
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2
[root@lvs ~]# 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.0.200:80 wrr
  -> 192.168.0.10:80              Route   1      0          0         
  -> 192.168.0.20:80              Route   2      0          0  

配置路由,开启转发

eth0=172.25.254.100/24
eth1=192.168.0.100/24  (这个是集群的网关)
echo 1 > /proc/sys/net/ipv4/ip_forward  (开启路由转发临时)
开启路由转发永久的
[root@route-1 ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1   
[root@route-1 ~]# vim /etc/sysctl.conf 
[root@route-1 ~]# sysctl -p
net.ipv4.ip_forward = 1

client的配置

eth0=172.25.254.200/24
route add default gw 172.25.254.100/24 #也可以通过nmcli工具永久改变

4、测试:

注意:访问的是vip
在这里插入图片描述

三、lvs防火墙标记解决调度问题

webserver1和websever2实现https传输

[root@rs1 ~]# yum install mod_ssl
[root@rs2 ~]# yum install mod_ssl
[root@rs2 ~]# yum install httpd
[root@rs1 ~]# yum install httpd
[root@rs1 ~]# systemctl restart httpd
[root@rs2 ~]# systemctl restart httpd
测试:
[root@rs1 ~]# curl -k https://192.168.0.10
xixi

LVS的设置:

[root@lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dport 80,443 -j MARK --set-mark  66
[root@lvs ~]# iptables -t mangle -nL
设置调度443端口策略
[root@lvs ~]# ipvsadm -A -t 192.168.0.200:443 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.10:443 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.20:443 -g
在lvs主机中基于标记定义集群服务
[root@lvs ~]# ipvsadm -A -f 66 -s rr
[root@lvs ~]# ipvsadm -a -f 66 -r 192.168.0.10 -g
[root@lvs ~]# ipvsadm -a -f 66 -r 192.168.0.20 -g

在这里插入图片描述
在这里插入图片描述

四、LVS的缺点

关闭rs2的httpd服务

[root@rs2 ~]# systemctl stop httpd.service 

在这里插入图片描述
会发现出错,他不能做健康检查,如果后端服务器挂了,请求还是会被调度过去;那么haproxy,nginx做负载均衡就能解决这种问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值