LVS负载均衡集群

集群概念

集群 又叫群集 cluster
特点:由多台主机构成,都干同样的一件事,对外展现为一个整体

集群的类型

  • 负载均衡群集 LB
    提高系统响应效率,处理更多的访问请求,减少响应延迟,实现高并发、高负载的能力
    典型代表:软件类(Nginx LVS HAProxy SLB) 硬件类(F5 绿盟)
  • 高可用群集 HA
    提高系统可靠性,减少中断时间,确保服务的连续性(通常使用 N 个 9 来代表高可用的指标)
    典型代表:Keepalived heartbeat
  • 高性能运算群集 HPC
    通过云计算或分布式计算将硬件资源整合成资源池以获取高性能的CPU、内存等资源,来提高整体运算能力

LVS的三种工作模式

  1. NAT 地址转换
    调度器会作为所有节点服务器的默认网关,也是客户端的访问入口和节点服务器返回响应消息的出口,所以调度器会承载双向流量的负载压力,可能会为整个群集的性能瓶颈。由于节点服务器都会处于内网环境,使用私网IP,所以具有一点的安全行。
  2. TUN IP隧道 IP Tunnel
    调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回客户端的,不需要经过调度器。但是由于节点服务器需要部署在不同的公网环境,所以要有独立的公网IP,而且调度器与节点服务器是通过专用的IP隧道实现相互通信,因此IP隧道模式的成本较高、安全性较低,且数据IP隧道传输的过程中需要额外的封装和解封装,性能也会受到一定的影响。
  3. DR 直接路由 Direct Routing
    调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回客户端的,不需要经过调度器。(与NAT模式的区别)
    节点服务器与调度器是部署在同一个物理网络里,因此不需要建立专用的IP隧道。(与IP隧道模式的区别)
    DR模式是企业首选的LVS模式。

NAT模式 LVS负载均衡群集部署

LVS-NAT模式部署:

  1. 部署NFS共享存储
  2. 部署Web节点服务器,注意:节点服务器的默认网关要指向调度器的内网IP,测试的时候可关闭连接保持
  3. 部署调度器,配置双网卡,开启IP路由转发功能,如果内网中的节点服务器需要访问外网则要配置SNAT规则,安装ipvsadm工具,添加虚拟服务器和真实服务器的相关配置,使用-m选项选择NAT模式
  4. 客户端设置默认网关指向调度器的外网IP,并使用客户端工具测试
- 负载调度器:内网关 ens33:192.168.50.101,外网关 ens36:12.0.0.101
- Web节点服务器1:192.168.50.104 (网关指向调度器的内网地址)
- Web节点服务器2:192.168.50.105(网关指向调度器的内网地址)
- NFS服务器:192.168.50.106
- 客户端:12.0.0.10
  1. 部署共享存储(NFS服务器:192.168.50.106)

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install nfs-utils rpcbind -y
systemctl start rpcbind.service  #先启动rpcbind再启动nfs
systemctl start nfs.service

mkdir /var/www/html/xiaobu /var/www/html/laobu
chmod 777 /var/www/html/xiaobu /var/www/html/laobu
echo 'this is xiaobu01 web!' > /var/www/html/xiaobu/test.html
echo 'this is laobu01 web!' > /var/www/html/laobu/test.html

vim /etc/exports
/var/www/html/laobu 192.168.50.0/24(rw,sync,no_root_squash)
/var/www/html/xiaobu 192.168.50.0/24(rw,sync,no_root_squash)

--发布共享---
exportfs -rv
  1. 配置节点服务器(192.168.50.104、192.168.50.105)

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service

yum install nfs-utils rpcbind -y
showmount -e 192.168.50.106

systemctl start rpcbind
systemctl enable rpcbind

--192.168.50.104---
mount.nfs 192.168.50.106:/var/www/html/xiaobu /var/www/html

vim /etc/fstab
192.168.50.106:/var/www/html		/var/www/html	nfs		defaults,_netdev	0  0

--192.168.50.105---
mount.nfs 192.168.50.106:/var/www/html/laobu /var/www/html

vim /etc/fstab
192.168.50.106:/var/www/html/laobu	/var/www/html	nfs 	defaults,_netdev	0  0

  1. 配置负载调度器(内网关 ens33:192.168.50.101,外网关 ens36:12.0.0.101)

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

(1)启用 IP 转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p

(2)加载LVS内核模块
modprobe ip_vs					#加载 ip_vs模块
cat /proc/net/ip_vs				#查看 ip_vs版本信息

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

(3)安装ipvsadm 管理工具
yum -y install ipvsadm

--启动服务前须保存负载分配策略---
ipvsadm-save > /etc/sysconfig/ipvsadm
或者 ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

(4)配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
ipvsadm -C 					#清除原有策略
ipvsadm -A -t 12.0.0.101:80 -s rr [-p 60]
ipvsadm -a -t 12.0.0.101:80 -r 192.168.50.104:80 -m [-w 1]
ipvsadm -a -t 12.0.0.101:80 -r 192.168.50.105:80 -m [-w 1]
ipvsadm						#启用策略
[root@localhost opt]# ipvsadm -ln         #查看节点状态,Masq代表 NAT模式
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.101:80 rr
  -> 192.168.50.104:80            Masq    1      0          0         
  -> 192.168.50.105:80            Masq    1      0          0         

ipvsadm-save > /opt/ipvsadm						#保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
-----------------------------------------------------------------------------------------------------
ipvsadm -d -t 12.0.0.101:80 -r 192.168.50.104:80				#删除群集中某一节点服务器
ipvsadm -D -t 12.0.0.101:80									#删除整个虚拟服务器
systemctl stop ipvsadm										#停止服务(清空策略),如果selinux没关闭/etc/sysconfig/ipvsadm内容也会清空
systemctl start ipvsadm										#启动服务(根据/etc/sysconfig/ipvsadm恢复策略)
ipvsadm-restore < /opt/ipvsadm					            #恢复LVS 策略
-----------------------------------------------------------------------------------------------------
4.测试效果
在一台IP为12.0.0.10的客户机使用浏览器访问 http://12.0.0.101/ ,不断刷新浏览器测试负载均衡效果,刷新间隔需长点(或者关闭Web服务的连接保持)。

ipvsadm 工具选项说明

-A:添加虚拟服务器
-D:删除整个虚拟服务器
-s:指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc)
-a:表示添加真实服务器(节点服务器)
-d:删除某一个节点
-t:指定 VIP地址及 TCP端口
-r:指定 RIP地址及 TCP端口
-m:表示使用 NAT群集模式
-g:表示使用 DR模式
-i:表示使用 TUN模式
-w:设置权重(权重为 0 时表示暂停节点)
-p 60:表示保持长连接60秒(默认关闭连接保持)
-l:列表查看 LVS 虚拟服务器(默认为查看所有)
-n:以数字形式显示地址、端口等信息,常与“-l”选项组合使用。ipvsadm -ln

LVS-DR模式工作过程

  1. 客户端通过VIP将访问请求报文(源IP为客户端IP,目的IP为VIP)发送到调度器
  2. 调度器通过调度算法选择最适合的节点服务器,并重新封装数据报文(将源MAC改为调度器的MAC,目的MAC改为节点服务器的MAC地址),再通过交换机转发请求给节点服务器
  3. 节点服务器收到请求报文后,确认目的MAC和目的IP无误后解包并送到应用层进行处理
  4. 节点服务器在返回响应报文前,会先重新封装报文(源IP为VIP,目的为客户端IP),再将响应报文先通过lo接口传送给物理网卡,再通过物理网卡发送给客户端

DR 模式的特点

  1. Director Server 和 Real Server 必须在同一个物理网络中。
  2. Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对 RIP 进行直接访问。
  3. Director Server作为群集的访问入口,但不作为网关使用。
  4. 所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。
  5. Real Server 的网关不允许指向 Director Server IP,即Real Server发送的数据包不允许经过 Director Server。
  6. Real Server 上的 lo 接口配置 VIP 的 IP 地址。

DR模式 LVS负载均衡群集

  • DR 服务器:192.168.50.101
  • Web 服务器1:192.168.50.105
  • Web 服务器2:192.168.50.104
  • vip:192.168.50.200
  • 客户端:192.168.50.100
  1. 配置负载调度器(192.168.50.101)

systemctl stop firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm

(1)配置虚拟 IP 地址(VIP:192.168.50.200)
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0				#若隧道模式,复制为ifcfg-tunl0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.50.200
NETMASK=255.255.255.255

ifup ens33:0  #重启网卡
ifconfig ens33:0


(2)调整 proc 响应参数
#由于 LVS 负载调度器和各节点需要共用 VIP 地址,需要关闭 icmp 的重定向,不充当路由器。
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
---------------------------------------------------------------------------------------------------
#tips
net.ipv4.ip_forward = 0:
这个参数控制着是否允许 Linux 系统作为一个 IP 路由器来转发数据包。当该参数值为 0 时,系统将不会转发数据包,而只是接收和处理直接发往本机的数据包。
net.ipv4.conf.all.send_redirects = 0:
这个参数用于控制是否允许系统发送 ICMP 重定向消息。当该参数值为 0 时,系统将不会发送 ICMP 重定向消息。
net.ipv4.conf.default.send_redirects = 0:
这个参数用于控制默认的网络接口是否允许发送 ICMP 重定向消息。
net.ipv4.conf.ens33.send_redirects = 0:
这个参数用于指定特定网络接口(例如 ens33)是否允许发送 ICMP 重定向消息。您可以根据需要修改不同的网络接口的设置。
-----------------------------------------------------------------------------------------------------
sysctl -p

(3)配置负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C
ipvsadm -A -t 192.168.50.200:80 -s rr
ipvsadm -a -t 192.168.50.200:80 -r 192.168.50.104:80 -g			#若隧道模式,-g替换为-i
ipvsadm -a -t 192.168.50.200:80 -r 192.168.50.105:80 -g
ipvsadm

ipvsadm -ln					#查看节点状态,Route代表 DR模式
  1. 部署共享存储(NFS服务器:192.168.50.106)

systemctl stop firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind
mkdir /var/www/html/xiaobu  /var/www/html/xiaobu 
chmod 777 /var/www/html/xiaobu  /var/www/html/xiaobu 

vim /etc/exports
/var/www/html/laobu 192.168.50.0/24(rw,sync,no_root_squash)
/var/www/html/xiaobu 192.168.50.0/24(rw,sync,no_root_squash)

systemctl start rpcbind.service
systemctl start nfs.service
  1. 配置节点服务器(192.168.50.104、192.168.50.105)

systemctl stop firewalld.service
setenforce 0
(1)配置虚拟 IP 地址(VIP:192.168.50.200)
#此地址仅用作发送 Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口 lo∶0 来承载 VIP 地址,并为本机添加一条路由记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0		
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.50.200
NETMASK=255.255.255.255						#注意:子网掩码必须全为 1

ifup lo:0
ifconfig lo:0
route add -host 192.168.50.200 dev lo:0   #将数据包路由到主机地址 192.168.50.200,并指定它通过 lo:0 设备接口发送。


vim /etc/rc.local    #在系统启动时执行的命令
/sbin/route add -host 192.168.50.200 dev lo:0

chmod +x /etc/rc.d/rc.local

(2)调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突
vim /etc/sysctl.conf
......
net.ipv4.conf.lo.arp_ignore = 1			#系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce = 2		#系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2


sysctl -p

或者
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

sysctl -p

yum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd

--192.168.50.104---
mount.nfs 192.168.50.106:/var/www/html/xiaobu /var/www/html

vim /etc/fstab
192.168.50.106:/var/www/html		/var/www/html	nfs		defaults,_netdev	0  0

--192.168.50.105---
mount.nfs 192.168.50.106:/var/www/html/laobu /var/www/html

vim /etc/fstab
192.168.50.106:/var/www/html/laobu	/var/www/html	nfs 	defaults,_netdev	0  0

4.测试 LVS 群集
在客户端使用浏览器访问 http://192.168.50.200/test.html
  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值