什么是集群 (含义)?
就是将多台主机作为一个整体,对外提供相同的服务
集群使用在哪一个场景
高并发使用
集群的分类
负载均衡器
-----减少响应延迟,提供并发处理能力
高可用
-----系统稳定性防止单点故障,减少服务中断的时间,减少损失
高性能
-----性能运算能力、分布式、并发(大量计算下主调动集群共同处理,处理完后返回主,主再转发到客户端,速度很快)
负载均衡器的集群架构
数据流向:用户----->通过----->VIP ---->访问
负载调度器:通过调度算法,以及RIP发送
节点服务池:所有服务器用的资源通过
共享存储:提供网站,存储资源
负载均衡器的集群工作方式(面试)
地址转换(NAT)
调度作为网关,其为访问请求的入口,也是响应访问的出口,在高并发场景下,负载压力很高,NAT转换可以提高安全性
IP隧道(TUN 模式)
仅去访问请求的入口,响应数据不经过调度器,但是需要大量的公网IP,还需要专用的IP隧道(成本太高);数据转发受IP隧道额外的影响
DR模式(直接路由)
仅访问请求入口,响应数据不经过调度器,节点服务器和调度器子啊一个物理网络中,数据进行转发不受到额外的影响
LVS负载均衡器的调度算法(基本)
1、轮询调度
轮询调度(Round Robin 简称'RR')算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单。轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器。
2、加权轮询调度
加权轮询(Weight Round Robin 简称'WRR')算法主要是对轮询算法的一种优化与补充,LVS会考虑每台服务器的性能,并给每台服务器添加一个权值,如果服务器A的权值为1,服务器B的权值为2,则调度器调度到服务器B的请求会是服务器A的两倍。权值越高的服务器,处理的请求越多。
3、最小连接调度
最小连接调度(Least Connections 简称'LC')算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态的调度算法,它通过服务器当前活跃的连接数来估计服务器的情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中断或者超时,其连接数减1。
(集群系统的真实服务器具有相近的系统性能,采用最小连接调度算法可以比较好地均衡负载。)
4、加权最小连接调度
加权最少连接(Weight Least Connections 简称'WLC')算法是最小连接调度的超集,各个服务器相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
LVS的组成 、作用
组成
1、lvs基于内核态的netfilter框架实现的IPVS功能,工作在内核态,用户配置VIP等相关信息并且传递到IPVS ,就需要用到IPVSadm工具
2、ipvsadm:
是lvs用户态的配套工具,可以实现VIP和RS ,增删改查
就是类似于iptables工具的地位
作用
1、是一个主要用于多服务器的负载均衡,
2、是一个工作在网络层,可实现高性能、高可用的服务集群
3、廉价,可以把许多低性能的服务器组合一起,形成一个超级服务器 设备
4、易用 配置简单 ,有多重负载均衡的方法
5、稳定、可靠 即使在集群的服务器中的某台服务器无法正常工作,也不会影响服务器整体效果
6、可扩展性好
LVS群集创建与管理
步骤
1、创建虚拟服务器
2、添加、删除服务器节点
3、查看群集及节点情况
4、保存负载分配策略
LVS的管理工具是ipvsadm
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-NAT 部署
LVS负载调度器:ens33:20.0.0.30 ens35:10.0.0.1(vmnet3)
Web1 节点服务器1:20.0.0.31
Web2 节点服务器2:20.0.0.32
NFS服务器:20.0.0.33
客户端(win10):10.0.0.10 (Vmnet3)
注:
win10虚拟机(客户端)网关设置为10.0.0.1
web服务器 网关设置为 20.0.0.30
1、部署共享存储(NFS服务器:20.0.0.33)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install -y nfs-utils rpcbind
systemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service
mkdir /opt/zh1 /opt/zh2
chmod 777 /opt/zh1 /opt/zh2
vim /etc/exports
/usr/share *(ro,sync)
/opt/zh1 20.0.0.0/24(rw,sync)
/opt/zh2 20.0.0.0/24(rw,sync)
#发布共享
exportfs -rv
showmount -e
2、配置节点服务器(后端服务器 20.0.0.30 20.0.0.31)
# 20.0.0.31 20.0.0.32
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install -y httpd
systemctl start httpd.service
systemctl enable httpd.service
yum install -y nfs-utils rpcbind
systemctl start rpcbind.service
systemctl enable rpcbind.service
showmount -e 20.0.0.33 #确认是否连通配置NFS的LVS主机
#修改网卡网关为LVS服务器
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=20.0.0.30 #将原先网关替换为配置LVS的主机IP
#web1:20.0.0.31
mount.nfs 20.0.0.31:/opt/test1 /var/www/html/
echo 'this is test1' > /var/www/html/index.html
#配置永久挂载
vim /etc/fstab
20.0.0.31:/opt/test1 /var/www/html nfs defaults,_netdev 0 0
mount -a
#web2:20.0.0.32
mount.nfs 20.0.0.32:/opt/test2 /var/www/html/
echo 'this is test2' > /var/www/html/index.html
vim /etc/fstab
20.0.0.32:/opt/test2 /var/www/html nfs defaults,_netdev 0 0
mount -a
配置负载调度器LVS(ens33:20.0.0.30 ens35:10.0.0.1)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
------(1)、配置SNAT转发规则-------
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
或者:echo '1' > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F #清空原有规则
iptables -F
iptables -t nat -nL #查看规则
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens35 -j SNAT --to-source 10.0.0.1
————————————————————————————————————————————————————————————————————
nat表:修改数据包中的源、目标IP地址或端口
POSTROUTING: 在进行路由判断之"后"所要进行的规则(SNAT/MASQUERADE)
PREROUTING: 在进行路由判断之"前"所要进行的规则(DNAT/REDIRECT)
-A: 在规则链的末尾加入新规则
-s: 匹配来源地址IP/MASK.
-o 网卡名称匹配从这块网卡流出的数据
-i 网卡名称匹配从这块网卡流入的数据
-j 控制类型
——————————————————————————————————————————————————————————————————————
-------(2)、加载LVS内核模块-------------
modprobe ip_vs #手动加载ip_vs模块
cat /proc/net/ip_vs #查看ip_vs版本信息
-------(3)、安装ipvsadm管理工具-------------
yum install -y ipvsadm
#注意:启动服务前必须保存负载分配策略,否则将会报错
ipvsadm-save > /etc/sysconfig/ipvsadm
或者
ipvsadm --save > /etc/sysconfig/ipvsadm
或者
touch /etc/sysconfig/ipvsadm
systemctl 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.31:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.32:80 -m -w 1
——————————————————————————————————————————————————————————————————————————————
-A 添加虚拟服务器
-s 指定负载调度算法 (轮询:rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc )
-a 表示添加真实服务器 (后端节点服务器)
-t 指定 VIP地址及 TCP端口
-m 表示使用 NAT群集模式.
-w 设置权重 (权重为 0 时表示暂停节点)
ipvsadm -d -t 10.0.0.1:80 -r 20.0.0.31:80 -m -w 1 #删除群集中某一节点服务器
ipvsadm -D -t 10.0.0.1:80 #删除整个虚拟服务器
systemctl stop ipvsadm #停止服务(清除策略)
systemctl start ipvsadm #启动服务(重建规则)
ipvsadm-restore > /etc/sysconfig/ipvsadm #恢复LVS策略
——————————————————————————————————————————————————————————————————————————————————
ipvsadm #启动策略
ipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略