LVS负载集群

1.集群是什么

由多台主机构成,都干同一件事情,对外展现为一个整体,通过调度器进行调度,不用管真实存放数据的服务器具体是哪一台。

2.集群的类型

分为三种有负载均衡集群 LB  高可用集群 HA 高性能运输集群 HPC

2.1.负载均衡集群 LB

提高性能响应效率,处理更多的访问请求减少延迟

类型代表 

软件类:lvs , nginx ,haproxy 等

硬件类: F5 ,国产绿盟。

2.2.高可用集群 HA

提高系统可靠性,减少终端时间,确保服务的持续时间(通常使用n个9代表高可用的指标 运行时间占全年的百分比)。

类型代表

keepalived    heartbeat

2.3.高性能运输集群 HPC

通过云计算或分布式计算获取高性能的cpu,内存等资源,来提高整体运算能力。

3.集群的构成

第一层 调度器层

对外使用所有服务器公用的vip地址,也称为集群ip地址。通常会配置主,备两台调度器实现双机热备一保服务的高可用。

也称负载均衡层

第二层,服务器池

真正为集群提供访问应用服务的是服务器吃,其中每个节点都有独立的rip地址(真实ip),他们只负责对调度器分配的来自于客户的请求进行处理,

当某个节点失效时,负载均衡调度器的容错机制,会将其隔离,等待错误解决后再重新纳入服务器池。

第三层共享存储

为服务器池中的所有结点提供稳定一致的文件存取服务,确保整个集群的统一性,共享存储可以使用NAS 设备,或者使用  NFS 共享服务的专用服务器。

4.LVS 的三种工作模式:

1)NAT 地址转换

调度器会作为集群中设备的默认网关,也就是客户端访问入口的节点服务器返回响应消息的出口,也就是说调度器,会承载来在内外双边的流量负载压力,可能会成为整个集群的性能瓶颈。由于节点服务器都处于内网环境,使用私网ip地址,所以具有一定安全性。

2)TUN IP隧道 IP Tunnel

调度器仅作为客户端入口,而节点服务器的响应消息则直接由节点返回给客户端,不需要经过调度器。基于这样的特性,其节点服务器需要部署再不同位置的公网环境,需要具有独立的公网ip。调度器与节点服务器。是通过专用的ip隧道实现相互通信的,因此ip隧道模式的成本较高,因信息暴露在公网环境下安全性相对较低,且ip隧道需要额外的封装和解封装,性能会受到一定的影响。

3)DR 直接路由  Direct Routing

调度器仅作为客户端的访问入口,节点服务器的响应消息同样直接返回给客户端。不需要经过调度器。

节点服务器与调度器部署在同一个物理网络内,因此不需要建立专属的专用ip专用隧道。(与ip隧道模式的区别)

DR模式时企业首选的LVS模式。

5.LVS 调度算法

5.1 轮询  rr

将收到的请求顺序轮流分配给集群指定的各个节点,均等的对待每一台服务器,而不管服务器实际的连接数的系统负载。

5.2 加权轮询 wrr

依据不同的RS的权值分配任务,权重较高的优点获得任务,并且分配到的连接数也相较权限第的更多,相同权重的则获得相同的连接数。

保证性能强的服务器承受更多的访问的流量。

5.3 目的地址哈希 dh

以目的地址的地址为关键字查找静态hash,

5.4 源地址哈希 sh

以源地址为关键字进行hash静态查找

5.5 最小连接数

  • ipvs表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。
  • 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。

 LVS-NAT 模式配置步骤:

1)配置 NFS 共享存储

1.部署共享存储(NFS服务器:192.168.80.13)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install nfs-utils rpcbind -y
systemctl start rpcbind.service
systemctl start nfs.service

systemctl enable nfs.service
systemctl enable rpcbind.service

mkdir /opt/ct /opt/benet
chmod 777 /opt/ct /opt/benet
echo 'this is ct web!' > /opt/ct/index.html
echo 'this is benet web!' > /opt/benet/index.html

vim /etc/exports
/usr/share *(ro,sync)
/opt/ct 192.168.80.0/24(rw,sync)
/opt/benet 192.168.80.0/24(rw,sync)


2)节点服务器安装 Web 服务,注意:默认网关要指向 调度器的IP地址,测试的时候关闭连接保持

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.80.13

systemctl start rpcbind
systemctl enable rpcbind

--192.168.80.100---
mount.nfs 192.168.80.13:/opt/ct /var/www/html    进行对nfs的挂载获取共享文件

vim /etc/fstab
192.168.80.13:/opt/ct		/var/www/html	nfs		defaults,_netdev	0  0

--192.168.80.101---
mount.nfs 192.168.80.13:/opt/benet /var/www/html
echo 'this is benet web!' > /var/www/html/index.html

vim /etc/fstab
192.168.80.13:/opt/benet	/var/www/html	nfs 	defaults,_netdev	0  0


3)调度服务器要开启 IP路由转发 功能和设置 SNAT 等 iptables 规则,安装 ipvsadm 工具,配置虚拟服务器和真实节点服务器相关配置(-m选择NAT模式)

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

(1)配置SNAT转发规则
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

或 echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p

iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to-source 12.0.0.1

(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.1:80 -s rr [-p 60]
ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.11:80 -m [-w 1]
ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.12:80 -m [-w 1]
ipvsadm						#启用策略

ipvsadm -ln					#查看节点状态,Masq代表 NAT模式
ipvsadm-save > /opt/ipvsadm						#保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
----------------------------------------------------------------------------------------------------------
ipvsadm -d -t 12.0.0.1:80 -r 192.168.80.11:80				#删除群集中某一节点服务器
ipvsadm -D -t 12.0.0.1:80									#删除整个虚拟服务器
systemctl stop ipvsadm										#停止服务(清空策略),如果selinux没关闭/etc/sysconfig/ipvsadm内容也会清空
systemctl start ipvsadm										#启动服务(根据/etc/sysconfig/ipvsadm恢复策略)
ipvsadm-restore < /opt/ipvsadm					            #恢复LVS 策略
----------------------------------------------------------------------------------------------------------


4)客户端测试的时候网关要指向 调度器的IP地址

在一台IP为12.0.0.12的客户机使用浏览器访问 http://12.0.0.1/ ,不断刷新浏览器测试负载均衡效果,刷新间隔需长点(或者关闭Web服务的连接保持)。
 

LVS-DR 模式配置步骤:
1)配置 NFS 共享存储

systemctl stop firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benet

vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.80.0/24(rw,sync)
/opt/benet 192.168.80.0/24(rw,sync)

systemctl start rpcbind.service
systemctl start nfs.service


2)节点服务器安装 Web 服务,在 lo:0 接口配置VIP,修改内核参数 arp_ignore=1  arp_announce=2 , 添加路由 route add -host <VIP> dev lo:0


3)调度服务器在 ensXX:0 接口配置VIP,修改内核参数关闭IP路由转发功能和重定向功能 ip_forward=0  send_redirects=0


4)调度服务器安装 ipvsadm 工具,配置虚拟服务器和真实节点服务器相关配置(-g选择DR模式)

systemctl stop firewalld.service
setenforce 0
(1)配置虚拟 IP 地址(VIP:192.168.80.188)
#此地址仅用作发送 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.80.188
NETMASK=255.255.255.255						#注意:子网掩码必须全为 1

ifup lo:0
ifconfig lo:0
route add -host 192.168.80.188 dev lo:0

vim /etc/rc.local
/sbin/route add -host 192.168.80.188 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.80.100---
mount.nfs 192.168.80.13:/opt/kgc /var/www/html
echo 'this is kgc web!' > /var/www/html/index.html

--192.168.80.101---
mount.nfs 192.168.80.13:/opt/benet /var/www/html
echo 'this is benet web!' > /var/www/html/index.html


5)客户端测试
注意项:如果客户端与调度服务器、节点服务器不在同一个网段,调度服务器、节点服务器的默认网关要指向网关路由器的IP地址

在客户端使用浏览器访问 http://192.168.80.188/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值