一、企业群集应用概述
1.1、群集的含义(什么是集群)
①、Cluster(团)、集群、群集
②、由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名与IP地址),相当于一台大型计算机。
1.2、出现的问题
①、互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用性的要求。
1.3、解决方法
①、使用价格昂贵的小型机、大型机。
②、使用多台相对廉价的普通服务器构建服务集群。
通过整合多台服务器,使用LVS来达到服务器的高可用和负载均衡,并且同一个IP地址对外提供相同的服务。
在企业中常用的一种集群技术——LVS(Linux Virtual Server,Linux虚拟服务器)
也就(集群使用在哪个场景 )------>高并发场景
二、企业群集分类
2.1、集群分类三种类型
①、负载均衡群集 (Load Balance Cluster)
- 作用:减少响应延迟 ,提供并发处理能力
提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能,LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载。
②、高可用群集(High Availability Cluster)
- 作用:系统稳定性,减少服务中断时间,减少损失
提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA) 的容错效果。HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。
例如:“故障切换”、“双机热备” 等
③、高性能运算群集(High Performance Computer Cluster)
- 作用:高性能运算群集 分布式 并发
以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力。高性能依赖于"分布式运算”、“并行计算” , 通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
注意:不能混搭使用,比如负载均衡和高可用,负载均衡就已经分配了多台机器,再使用高可用的主备分配就会错误。
2.2、负载均衡集群工作模式
① 地址转换 (NAT模式)
负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。服务器节点使用私有ip地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。
在高并发场景当中负载压力很高,NAT地址转换可以提高安全性。
② IP隧道 (TUN模式)
仅是访问请求的入口,响应数据不经过调度器。但是需要大量公网IP,还需要专用的IP隧道(成本太高),数据转发受IP隧道的影响(几乎不用)。
③ 直接路由 (DR模式)
仅是访问请求的入口,响应数据不经过调度器。节点服务器和调度器在同一个物理网络中数据转发不收额外影响。
2.3、负载均衡的结构
第一层,负载调度器(Load Balancer或Director)
访问整个群集系统的唯一入口, 对外使用所有服务器共有的VIP地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。
第二层,服务器池(Server Pool)
群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
第三层,共享存储(Share Storage)
为服务器池中的所有节点提供稳定、一致的文件存取服务, 确保整个群集的统一性共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。
三、LVS虚拟服务器
3.1、Linux Virtual Server(Linux虚拟服务器)简介
1998年5月,由我国的章文嵩博士创建,针对Linux内核开发的负载均衡解决方案, LVS 实际上相当于基于IP地址的虚拟化应用, 为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法。
● 官方网站: http://www.linuxvirtualserver.orgl
LVS现在已成为Linux内核的一部分,默认编译为ip_ vs模块,必要时能够自动调用。在CentOS 7系统中,以下操作可以手动加载ip_ vs模块,并查看当前系统中ip_ vs模块的版本信息。
modprobe ip_vs
cat /proc/net/ip_vs #确认内核对LVS的支持
3.2、LVS的负载调度算法
①、轮询(Round Robin)
● 将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器) ,均等地对待每一台服务器 ,而不管服务器实际的连接数和系统负载
②、加权轮询 (Weighted Round Robin)
● 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
● 保证性能强的服务器承担更多的访问流量
③、最少连接 (Least Connections )
● 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
④、加权最少连接(Weighted L east Connections )
● 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
● 性能较高的节点将承担更大比例的活动连接负载
3.3、LVS群集创建与管理
LVS的管理工具是ipvsadm
选项 | 说明 |
---|---|
-A | 添加一个虚拟服务器(Virtual Server)到IPVS表中。 |
-D | 从IPVS表中删除一个整个虚拟服务器。 |
-s | 指定虚拟服务器使用的负载调度算法(如:rr 轮询, wrr 加权轮询, lc 最少连接, wlc 加权最少连接)。 |
-a | 向一个已存在的虚拟服务器中添加一个真实服务器(Real Server,即节点服务器)。 |
-d | 从一个虚拟服务器中删除一个真实服务器。 |
-t | 指定虚拟服务器(VIP)的IP地址和TCP端口,格式为IP:Port。 |
-r | 指定真实服务器(RIP)的IP地址和TCP端口,格式为IP:Port。 |
-m | 设置IPVS集群的工作模式为NAT(网络地址转换)模式。 |
-g | 设置IPVS集群的工作模式为DR(直接路由)模式。 |
-i | 设置IPVS集群的工作模式为TUN(隧道)模式。注意,TUN模式在现代LVS环境中已较少使用。 |
-w | 为指定的真实服务器设置权重。权重为0时表示暂停该节点。 |
-p | 设置TCP连接的持久连接超时时间,单位秒。例如,-p 60 表示连接将被保持60秒。 |
-l | 列出IPVS表中的所有虚拟服务器。默认为查看所有。 |
-n | 在列出IPVS表时,以数字形式显示地址和端口信息,常用于与-l 结合使用以获取更简洁的输出。 |
四、NAT模式 LVS负载均衡群集部署
一共需要5台机器
win10客户端 12.0.0.12
LVM调度器 ens37 12.0.0.1 ens33 192.168.88.79
web1和web2服务器 192.168.76 192.168.77
NFS服务器 192.168.88.78
如下图配置
前置关防火墙,selinux
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
A、【首先部署共享存储(NFS服务器)】
配置思路
1 、安装 nfs 和 rpcbind 软件 并且启动,设置开机自启
2 、创建共享目录(给权限)
3 、修改配置文件设置共享
4 、发布共享
5、刷新,列出检验
6 、客户端验证共享目录可访问(可以在后面验证)
安装,设置自启
yum install -y nfs-utils rpcbind
systemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service
建立两个共享文件夹yc和hhh
mkdir /opt/yc /opt/hhh
给权限
chmod 777 /opt/yc /opt/hhh
修改配置文件设置共享
vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.10.0/24(rw,sync)
/opt/benet 192.168.10.0/24(rw,sync)
刷新
exportfs -rv
显示NFS(Network File System)服务器上导出的共享目录列表
showmount -e
B、【配置节点服务器(后端服务器)】
配置思路
1 、安装 http服务器应用 并且启动,设置开机自启
2 、安装nfs客户端 并且启动,设置开机自启(并且验证上一个NFS服务端)
3 、设置NFS系统格式化,永久挂载NFS文件夹
安装http服务器
yum install -y httpd
systemctl start httpd.service
systemctl enable httpd.service
安装nfs客户端
yum install -y nfs-utils rpcbind
systemctl start rpcbind.service
systemctl enable rpcbind.service
显示NFS(Network File System)服务器上导出的共享目录列表
showmount -e 192.168.10.18
设置NFS系统格式化
在76(web1)
mount.nfs 192.168.88.78:/opt/yc /var/www/html/
或者 mount -t nfs 192.168.88.78:/opt/yc /var/www/html/
echo 'this is yc' > /var/www/html/index.html
在77(web2)
mount.nfs 192.168.88.78:/opt/hhh /var/www/html/
echo 'this is hhh' > /var/www/html/index.html
注意web1和web2服务器的网关是负载调度器的地址79
永久挂载
vim /etc/fstab
192.168.10.18:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a
- dump 选项(用于备份,通常设置为0)
- fsck 选项(用于文件系统检查,通常设置为0或1,对于NFS来说,通常是0)
C、【配置负载调度器LVS】
配置思路
1 、启用 IPv4 的数据包转发功能
2 、iptables清除,配置snat
3 、加载LVS内核模块
4 、安装ipvsadm管理工具
5、配置负载分配策略
6、启动策略,保存策略
启用 IPv4 的数据包转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
启用 IPv4 的数据包转发功能的,但是临时启用
或者:echo '1' > /proc/sys/net/ipv4/ip_forward
filter清除
iptables -F
nat清除
iptables -t nat -F
查看
iptables -t nat -nL
SNAT规则
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens37 -j SNAT --to-source 10.0.0.1
加载LVS内核模块
modprobe 是 Linux 系统中的一个命令行工具,用于动态地加载或卸载 Linux 内核模块(也称为驱动程序)
手动加载ip_vs模块
modprobe ip_vs
查看ip_vs版本信息
cat /proc/net/ip_vs
安装ipvsadm管理工具
yum install -y ipvsadm
注意:启动服务前必须保存负载分配策略,否则将会报错
ipvsadm-save > /etc/sysconfig/ipvsadm
或者
ipvsadm --save > /etc/sysconfig/ipvsadm
或者
touch /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
ipvsadm -C #清除原有策略
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 192.168.10.16:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 192.168.10.17:80 -m -w 1
-A 添加虚拟服务器
-s 指定负载调度算法 (轮询:rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc )
-a 表示添加真实服务器 (后端节点服务器)
-t 指定 VIP地址及 TCP端口
-m 表示使用 NAT群集模式.
-w 设置权重 (权重为 0 时表示暂停节点)
启动策略
ipvsadm
查看节点状态,Masq代表 NAT模式
ipvsadm -ln
保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
---------------------------------------------------------------------------------------------------------------
其他用法
删除群集中某一节点服务器
ipvsadm -d -t 10.0.0.1:80 -r 192.168.10.16:80
删除整个虚拟服务器
ipvsadm -D -t 10.0.0.1:80
停止服务(清除策略)
systemctl stop ipvsadm
启动服务(重建规则)
systemctl start ipvsadm
恢复LVS策略
ipvsadm-restore > /etc/sysconfig/ipvsadm
测试:
在win10上使用浏览器访问12.0.0.1,刷新浏览器测试负载均衡
PS:刷新间隔时间需要稍长一点
五、补充面试题
面试题:
1、lvs 三种模式,他们之间区别 (60%-70%)
NAT
TUN
⭐⭐⭐DR : 被延伸出来的第三个面试题
2、LVS 分流算法、分流算法区别
只要确定分流算法 分流依据——》RR WRR ——》访问流量的分配
分流依据——》LC WLC ——》依据后端真实服务器的已连接的连接数
LVS-NAT LVS-TUN LVS-DR 你们公司用不用LVS,以及用什么模式,为什么(DR,假设你的项目,拓扑很简单-》NAT)
路由器网关: 3张表
1、ARP表
目的: 用于广播后,解析MAC-IP映射,并且维护在MAC与路由表中
什么时候用、更新:
① 在接收到请求,需要解析IP-MAC的时候(因为内网是基于二层进行通讯的),
② 并且用于转发时-同步到MAC地址表中 (192.168.226.100---》接口位置 ——》目标mac位置)
2、MAC地址表
3、路由表