0%

LVS负载均衡群集


群集技术概述

群集类型

负载均衡群集(Load Balance Cluster)
高可用群集(High Availability Cluster)
高性能运算群集(High Performance Computer Cluster)

负载均衡的分层结构

第一层负载调度器:访问整个群集系统的唯一入口, 对外使用群集IP地址.所有服务器共有的VIP(Virtual IP)虚拟IP地址
第二层服务器池:群集所提供的应用服务由服务器池承担, 其中的每个节点具有独立的RIP(Real IP, 真实IP)地址, 只处理调度器分发过来的客户机请求.当某个节点暂时失效时, 负载调度器的容错机制会将其隔离, 等待错误排除以后再重新纳入服务器池.
第三层共享存储:为服务器池中的所有节点提供稳定、一致的文件存取服务, 确保整个群集的统一性.

负载均衡的工作模式

地址转换(Network Address Translation):简称NAT模式

IP隧道(IP Tunnel):简称TUN模式

直接路由(Direct Routing):简称DR模式

LVS虚拟服务器

Linux Virtual Server(LVS)是针对Linux内核开发的一个负载均衡项目, LVS现在已成为Linux内核的一部分, , 默认编译为ip-vs模块, 必要时能够自动调用.
手动加载ip-vs模块和查看ipvs版本信息

1
2
modprobe ip_vs
cat /proc/net/ip_vs

LVS的负载调度算法

最常用的四种算法包括轮询、加权轮询、最少连接和加权最少连接

轮询(Round Robin):将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器), 均等地对待每一台服务器, 而不管服务器实际的连接数和系统负载.

加权轮询(Weighted Round Robin):根据真实服务器的处理能力轮流分配收到的访问请求, 调度器可以自动查询各节点的负载情况, 并动态调整其权重.
这样可以保证处理能力强的服务器承担更多的访问流量.

最少连接(Least Connections):根据真实服务器已建立的连接数进行分配, 将收到的访问请求优先分配给连接数最少的节点.如果所有的服务器节点性能相近, 采用这种方式可以更好地均衡负载.

加权最少连接(Weighted Least Connections):在服务器节点的性能差异较大的情况下, 可以为真实服务器自动调整权重, 权重较高的节点将承担更大比例的活动连接负载

使用ipvsadm管理工具

ipvsadm是在负载调度器上使用的LVS群集管理工具, 通过调用ip-vs模块来添加、删除服务器节点, 以及查看群集的运行状态.

1
2
yum -y install ipvsadm
ipvsadm -v

LVS群集的管理工作主要包括创建虚拟服务器、添加服务器节点、查看群集节点状态删除服务器节点和保存负载分配策略

创建虚拟服务器

ipvsadm -A -t vip地址:80 -s rr
 |__ -A 添加虚拟服务器
 |__ -t 指定VIP地址及TCP端口,
 |__ -s 指定负载调度算法
    |__ 轮询(rr)
    |__ 加权轮询(wrr)
    |__ 最少连接(1c)
    |__ 加权最少连接(wlc)

添加服务器节点

ipvsadm -a -t vip地址:80 -r rip地址:80 -m -w 1
ipvsadm -a -t vip地址:80 -r rip2地址:80 -m -w 1
...
 |__ -a 表示添加真实服务器
 |__ -t 用来指定VIP地址及TCP端口
 |__ -r 用来指定RIP地址及TCP端口
 |__ -m 使用NAT模式
 |__ -g DR模式
 |__ -i TUN模式
 |__ -w 用来设置权重(权重为0时表示暂停节点)

查看群集节点状态

ipvsadm -ln
 |__ -l 列表查看LVS虚拟服务器
 |__ -n 以数字形式显示地址、端口等信息 

Forward列下的Masq对应Masquerade(地址伪装), 表示采用为群集模式为NAT.
对应Route, 则表示采用的群集模式为DR.

删除服务器节点

ipvsadm -d -r rip地址:80 -t vip地址:80
 |__ -d 从服务器池中删除某一个节点

ipvsadm -D -t 172.16.16.172:80
 |__ -D 删除整个虚拟服务器

保存负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm
保存LVS策略
cat /etc/sysconfig/ipvsadm
service ipvsadm stop
service ipvsadm start

构建LVS负载均衡群集

LVS-NAT

准备搭建环境:

服务主机内网(仅主机模式)外网(NAT模式)网关
LVSens33:192.168.10.254/24ens37:192.168.100.254/24
RSens33:192.168.10.10/24192.168.10.254
RS2ens33:192.168.10.11/24192.168.10.254
NFSens33:192.168.10.20/24192.168.10.254

配置负载调度器

1.手动开启ip_vs模块并安装ipvsadm管理工具

1
2
modprobe ip_vs
yum -y install ipvsadm

2.配置SNAT转发规则

1
2
3
4
5
6
modprobe ip_vs
yum -y install ipvsadm
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
iptables -t nat -A POSTROUTING -s 192.168.10.254/24 -o ens37 -j SNAT --to-source 192.168.100.254

3.配置负载分配策略

1
2
3
4
5
6
7
8
service ipvsadm stop
ipvsadm -A -t 192.168.100.254:80 -s rr
ipvsadm -a -t 192.168.100.254:80 -r 192.168.10.10:80 -m -w 1
ipvsadm -a -t 192.168.100.254:80 -r 192.168.10.11:80 -m -w 1
service ipvsadm save
chkconfig ipvsadm on
ipvsadm -ln
systemctl stop firewalld

配置NSF服务器

1.安装rpcbind和nfs

1
yum -y install rpcbind nfs-utils

2.创建共享目录和访问控制

1
2
3
4
5
6
7
mkdir /data{1,2}
cat > /etc/exports <<-EOF
/data1 192.168.10.0/24(rw)
/data2 192.168.10.0/24(rw)
EOF
echo “This is apache1” > /data1/index.html
echo “This is apache2” > /data2/index.html

3.开启共享

1
2
3
systemctl stop firewalld
systemctl start rpcbind nfs
showmount -e

配置节点服务器

1.安装httpd,创建测试网页.

1
2
3
4
yum -y install httpd
mount 192.168.10.20:/data1 /var/www/html
mount 192.168.10.20:/data2 /var/www/html
setenforce 0

2.启用httpd服务程序

1
2
3
systemctl start httpd
systemctl stop firewalld
chkconfig httpd on

3.客户端进行访问, 测试LVS群集.

1
curl http://192.168.100.254:80

LVS-DR

准备搭建环境:

服务主机内网(仅主机模式)外网(NAT模式)网关
LVSens33:192.168.100.254/24
ens33:0:192.168.100.253/24
RSens33:192.168.10.10/24ens37:192.168.100.10/24ens33:(VM1)192.168.10.1
RS2ens33:192.168.10.11/24ens37:192.168.100.11/24ens33:(VM1)192.168.10.1
NFSens33:192.168.10.20/24ens33:(VM1)192.168.10.1

配置负载调动器

1.手动开启ip_vs模块并安装ipvsadm管理工具

1
2
modprobe ip_vs
yum -y install ipvsadm

2.配置虚拟IP地址(VIP)

1
ifconfig ens33:0 192.168.100.253/24 up

3.配置

1
2
3
4
5
6
7
8
ipvsadm -C
ipvsadm -A -t 192.168.100.253:80 -s rr
ipvsadm -a -t 192.168.100.253:80 -r 192.168.100.10:80 -g
ipvsadm -a -t 192.168.100.253:80 -r 192.168.100.11:80 -g
ipvsadm-save
chkconfig ipvsadm on
ipvsadm -ln
systemctl stop firewalld

配置NFS服务器

1.安装rpcbind和nfs

1
yum -y install rpcbind nfs-utils

2.创建共享目录和访问控制

1
2
3
4
5
6
7
mkdir /data{1,2}
cat > /etc/exports <<-EOF
/data1 192.168.10.0/24(rw)
/data2 192.168.10.0/24(rw)
EOF
echo “This is apache1” > /data1/index.html
echo “This is apache2” > /data2/index.html

3.开启共享

1
2
3
systemctl stop firewalld
systemctl start rpcbind nfs
showmount -e

配置节点服务器

1.配置虚拟IP地址(VIP)

1
2
ifconfig lo:0 192.168.100.253/32 up
route add -host 192.168.100.253 dev lo

2.调整/proc响应参数

1
2
3
4
echo 1 > /proc/sys/net/ipv4/conf/ens37/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/ens37/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

3.安装httpd, 创建测试网页.

1
2
3
4
yum -y install httpd
mount 192.168.10.20:/data1 /var/www/html
mount 192.168.10.20:/data2 /var/www/html
setenforce 0

4.启用httpd服务程序

1
2
3
systemctl start httpd
systemctl stop firewalld
chkconfig httpd on

5.客户端进行访问, 测试LVS群集.

1
curl http://192.168.100.253:80
-------------------本文结束 感谢阅读-------------------