集群
集群:将多台主机作为一个整体,然后对外提供相同的服务
集群使用场景:高并发的场景
集群的分类
1.负载均衡器集群
减少响应延迟,提高并发处理的能力
2,高可用集群
增强系统的稳定性可靠性,减少服务器的中断时间,减少损失
3,高性能集群
高性能的运算能力,做分布式提高CPU的运算速度,做并发处理
负载均衡集群架构
第一层:负载调度器
通过调度算法以及RIP发送
第二层:服务池
所有服务器使用的资源
第二层:共享存储
提供网站,存储资源
负载均衡器的群集工作模式
NAT模式(地址转换)
调度器作为网关,是访问请求的入口,同样是响应请求的出口,可以提高安全性但是在高并发场景下负载压力很高
TUN模式(IP隧道)
访问请求的入口,响应不经过调度器,但是需要大量的公网IP。还需要建立专用的IP隧道,成本太高,数据的转发受IP隧道的额外影响DR模式(直接路由)
仅是访问请求的入口,响应数据不经过调度器,但是节点服务器和调度器在一个物理网络中,数据进行转发不受额外的影响
LVS虚拟服务器
确认是否支持LVS------modprobe ip_vs
LVS负载均衡集群架构
LVS的基本概念
LVS(Linux Virtual Server)集群架构是一种基于Linux操作系统的负载均衡解决方案。它通过将负载均衡功能实现在操作系统内核层面,将客户端请求分发到后端服务器集群,以提高系统的性能、可靠性和可扩展性。
LVS集群架构具有高性能、高可靠性和可扩展性的特点,可以通过增加后端服务器来扩展系统的处理能力。此外,LVS还支持会话保持、健康检查、故障切换等功能,以提供更好的用户体验和系统可用性。
LVS集群架构的组件
-
负载均衡器(Load Balancer):负载均衡器是LVS集群的核心组件,它接收来自客户端的请求,并根据预定义的负载均衡算法将请求转发给后端服务器。负载均衡器可以是一台物理服务器或者一组虚拟服务器。
-
调度器(Scheduler):调度器是负载均衡器的一部分,负责根据负载均衡算法选择合适的后端服务器来处理客户端请求。常见的调度算法包括轮询、加权轮询、最小连接数等。
-
后端服务器(Real Server):后端服务器是实际处理客户端请求的服务器。它们可以是一组物理服务器或者虚拟服务器,通过负载均衡器接收请求并返回响应。
-
网络设备:LVS集群架构通常还涉及网络设备,如交换机、路由器等,用于连接负载均衡器和后端服务器,以及处理网络流量。
LVS集群架构的工作流程
-
客户端发送请求到负载均衡器。
-
负载均衡器接收到请求后,通过调度器选择一个后端服务器。
-
负载均衡器将请求转发给选定的后端服务器。
-
后端服务器处理请求并生成响应。
-
后端服务器将响应发送回负载均衡器。
-
负载均衡器将响应返回给客户端。
LVS的作用
-
主要用于多服务器的负载均衡
-
工作在网络层,可实现高性能,高可用的服务集群技术
-
廉价, 可以把许多低性能服务器组合在一起形成一个超级服务器
-
易用,配置简单,有多种负载均衡的方式
-
稳定可靠,即使在集群的服务器中某台服务器无法正常工作也不会影响整体效果
-
可扩展性好
LVS负载均衡器的调度算法
轮询
平等的对待每一台服务器
加权轮询
根据调度器设置的权重值来分发请求,权重值越高,被分发的请求越多,主要是为了保证性能比较强的服务器接受的请求最多
最少连接
根据服务器的已建立的连接数确定分发,收到的请求分发给连接数少的节点
加权最少连接
在服务器节点性能有差异时,性能较高的节点承担更多比例的请求
LVS基于内核态的netfilter框架实现的IPVS功能,工作在内核态用户配置vip等相关信息并且传递
IPVS,就需要用到IPVSadm工具
ipvsadm: IPVSadm是lvs用户态的配套的工具,可以实现VIP和RS 增删改查
ipvsadm工具
工具选项
-A:添加虚拟服务器
-D:删除整个虚拟fuwq
-s:指定负载调度算法(轮询,加权轮询,最少连接,加权最少连接,wlc)
-a:表示添加真实服务器(节点服务器)
-d:删除某一个节点
-t:指定VIP地址及TCP端口
-r:指定RIP地址及TCP端口
-m:表示使用NAT群集模式
-g:表示使用DR模式
-i:表示使用TUN模式
-w:设置权重(权重为0时表示暂停节点)
-p60:表示保持长连接60秒
-l:列表查看LVS虚拟服务器(默认为查看所有)
-n:以数字形式显示地址,端口等信息,常与“-l”选项组合使用
LVS-NAT部署实战
创建虚拟服务器
添加删除服务器节点
查看集群节点情况
保存负载分配策略
LVS负载调度器:ens33:20.0.0.50 ens37:10.0.0.1(vmnet3)(添加一个新的网卡进行配置)
Web1 节点服务器1:20.0.0.60
Web2 节点服务器2:20.0.0.70
NFS服务器:20.0.0.80
客户端(win10):10.0.0.12 (Vmnet3)
注意:① win10虚拟机(客户端)网关设置为10.0.0.1
② web服务器 网关设置为 20.0.0.50
部署共享存储(NFS服务器:20.0.0.80)
#关闭安全机制
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0#安装服务
yum install -y nfs-utils rpcbindsystemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service#创建共享目录
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benetvim /etc/exports
/usr/share *(ro,sync)
# 这一行指定了 /usr/share 目录的共享设置。* 表示允许任何客户端访问,(ro,sync) 表示只读权限,并且同步写入/opt/kgc 20.0.0.0/24(rw,sync)
/opt/benet 20.0.0.0/24(rw,sync)
# 指定了 /opt/benet 目录的共享设置,只允许 20.0.0.0/24 网段的客户端访问,具有读写和同步写入。#发布共享
exportfs -rv
showmount -e
配置节点服务器(后端服务器)
20.0.0.60 20.0.0.70
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0#修改网卡网关为LVS服务器
需要将两个节点服务器60和70的网关设置为调度器的地址20.0.0.50
20.0.0.60
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.60
NETMASK=255.255.255.0
GATEWAY=20.0.0.50
#DNS1=114.114.114.114
systemctl restart network20.0.0.70
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.70
NETMASK=255.255.255.0
GATEWAY=20.0.0.50
#DNS1=114.114.114.114
systemctl restart networkyum install -y httpd
systemctl start httpd.service
systemctl enable httpd.serviceyum install -y nfs-utils rpcbindsystemctl start rpcbind.service
systemctl enable rpcbind.serviceshowmount -e 20.0.0.80#web1:20.0.0.60
mount.nfs 20.0.0.80:/opt/kgc /var/www/html/
#用于将远程的NFS共享目录挂载到本地目录echo 'this is kgc' > /var/www/html/index.html#永久配置方法
vim /etc/fstab
20.0.0.80:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a#web2:20.0.0.70
mount.nfs 20.0.0.80:/opt/benet /var/www/html/echo 'this is benet' > /var/www/html/index.html#永久挂载
vim /etc/fstab
20.0.0.80:/opt/benet /var/www/html nfs defaults,_netdev 0 0mount -a
配置负载调度器LVS
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0------(1)、配置SNAT转发规则-------
vim /etc/sysctl.conf
net.ipv4.ip_forward=1sysctl -p
或者:echo '1' > /proc/sys/net/ipv4/ip_forwardiptables -t nat -F
iptables -F
iptables -t nat -nLiptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens37 -j SNAT --to-source 10.0.0.1
#将源IP地址为20.0.0.0/24的数据包的源地址转换为10.0.0.1 指定接口为ens37转发-------(2)、加载LVS内核模块-------------
modprobe ip_vs #手动加载ip_vs模块
cat /proc/net/ip_vs #查看ip_vs版本信息-------(3)、安装ipvsadm管理工具-------------
yum install -y ipvsadm#注意:启动服务前必须保存负载分配策略,否则将会报错
ipvsadm-save > /etc/sysconfig/ipvsadmsystemctl start ipvsadm.service------(4)、配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)-------------
ipvsadm -C #清除原有策略
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.60:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.70:80 -m -w 1
#添加一个虚拟服务器的转发规则
#将来自10.0.0.1:80的请求转发到20.0.0.60:80的实际服务器上,并使用NAT模式进行转发。同时,使用权重1来进行负载均衡ipvsadm #启动策略ipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略