LVS负载均衡集群
目录
一、群集的类型及含义
1.群集的含义Cluster:集群、群集
由多台主机构成,但对外只表现为一个整体,只提供一个访问入口 (域名或IP地址),相当于一台大型计算机。
2.问题
互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求
解决方法
使用价格昂贵的小型机、大型机
使用多台相对廉价的普通服务器构建服务群集
通过整合多台服务器,使用 LVS来达到服务器的高可用和负载均衡,并以同一个IP地址对外提供相同的服务
3.负载均衡群集(LB)
提高系统响应效率,处理更多的访问请求,减少响应延迟,实现高并发,高负载的能力
典型代表:
软件类:nginx,LVS,HAProxy,SLB
硬件类:F5,绿盟
4.高可用群集(HA)
提高系统可靠性,减少中断时间,确保服务的连续性(通常使用n个9代表指标)
典型代表:keepalived,heaetbeat
5.高性能运算群集(HPC)
通过云计算或分布式计算将硬性资源整合成资源池获取高性能的cpu,内存等资源,来提高整体运算能力
二、LVS的三种工作模式
一、根据群集所针对的目标差异,可分为三种类型
负载均群集
高可用群集
高性能运算群集
1.负载均衡群集 (Load Balance Cluster)提高应用系统的响应能力、尽可能处理更多的访问请求减少延迟为目标,获得高并发、高负载(LB)的整体性能LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,“DNS轮询”“反向代理”等
2.高可用群集(High Availability Cluster)。提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果·HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点“故障切换”“双机热备” 等例如,高性能运算群集(High Performance Computer Cluster)。以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如,“云计算”“网格计算”等
3.直接路由
Direct Routing,简称DR模式采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
二、LVS的负载调度算法
1.轮询 (Round Robin)
将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器)均等地对待每一台服务器,而不管服务器实际的连接数和系统负载加权轮询 (Weighted Round Robin)
根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
保证性能强的服务器承担更多的访问流量
2.最少连接 (Least Connections)
根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
加权最少连接(Weighted Least Connections)
在服务器节点的性能差异较大时,可以为真实服务器自动调整权重性能较高的节点将承担更大比例的活动连接负载
rr(轮询) ?wrr(加权轮询) ? sh(源地址哈希) ? dh(目的地址哈希) ? lc(最小连接) ??
wlc(加权最小连接):优先分配请求给 <连接数>/<权重值> 的值最小的节点服务器
lblc(基于地址的最小连接):优先根据目的地址哈希将请求分配给同一个节点服务器,若此节点服务器满负荷了则优先将请求分配当前连接数最小的节点服务器
三、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
四、NAT模式 LVS负载均衡群集部署
LVS-NAT模式部署:
1)部署NFS共享存储
2)部署Web节点服务器,注意:节点服务器的默认网关要指向调度器的内网IP,测试的时候可关闭连接保持
3)部署调度器,配置双网卡,开启IP路由转发功能,如果内网中的节点服务器需要访问外网则要配置SNAT规则,安装ipvsadm工具,添加虚拟服务器和真实服务器的相关配置,使用-m选项选择NAT模式
4)客户端设置默认网关指向调度器的外网IP,并使用客户端工具测试
部署共享存储(nfs服务器)
systemctl disable --now firewalld
setenforce 0
mkdir /var/www/html/{accp,benet} -p
cd /var/www/html
echo '<h1>this is test web1 page!</h1>' > accp/text.html
echo '<h1>this is test web2 page!</h1>' > benet/text.html
vim /etc/exports
/var/www/html/accp 172.16.114.0/24(rw,sync,no_root_squash)
/var/www/html/benet 172.16.114.0/24(rw,sync,no_root_squash)
systemctl enable --now rpcbind nfs
showmount -e
配置节点服务器1
systemctl disable --now firewalld
setenforce 0
showmount -e 172.16.114.20
cd /etc/yum.repos.d/
rz -E
yum install -y nginx
cd /etc/nginx/
vim nginx.conf
keepalive_timeout 0; 长连接时间修改为0
cd /usr/share/nginx/html/
mv * /opt/
vim /etc/fstab
172.16.114.20:/var/www/html/accp /usr/share/nginx/html nfs defaults,_netdev 0 0
mount -a
df -h
ls /usr/share/nginx/html/
cd /opt
mv *.html /usr/share/nginx/html/
cd /usr/share/nginx/html/
cat text.html
systemctl restart nginx
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.114.30
NETMASK=255.255.255.0
GATEWAY=172.16.114.70
DNS1=218.2.135.1
systemctl restart network nginx
配置节点服务器2
systemctl disable --now firewalld
setenforce 0
showmount -e 172.16.114.20
cd /etc/yum.repos.d/
rz -E
yum install -y nginx
vim /etc/nginx/nginx.conf
keepalive_timeout 0; 长连接时间修改为0
172.16.114.20:/var/www/html/benet /usr/share/nginx/html nfs defaults,_netdev 0 0
mount -a
cd /opt
mv *.html /usr/share/nginx/html/
df -h
systemctl restart nginx
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.114.60
NETMASK=255.255.255.0
GATEWAY=172.16.114.70
DNS1=218.2.135.1
systemctl restart network nginx
配置负载调度器
yum install -y ipvsadm
添加新网卡36
ifconfig
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.100
NETMASK=255.255.255.0
vim ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=172.16.114.70
NETMASK=255.255.255.0
systemctl restart network
ifconfig
systemctl disable --now firewalld
setenforce 0
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
modprobe ip_vs
cat /proc/net/ip_vs
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C
ipvsadm -A -t 12.0.0.100:80 -s rr
ipvsadm -a -t 12.0.0.100:80 -r 172.16.114.30:80 -m
ipvsadm -a -t 12.0.0.100:80 -r 172.16.114.60:80 -m
ipvsadm -ln
1.共享服务器配置:
共享文件配置
2.节点服务器1配置
nginx配置文件
共享挂载
网卡配置
3.节点服务器2
nginx配置文件
共享挂载
网卡配置
4.配置负载调度器
先添加网卡
网卡配置33
网卡配置36
开启路由转发功能
5.windows测试
先设置windows的网卡地址
测试结果:
先ping
再测试主页
最后查看最终结果
这样就部署成功了
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!