文章目录
- 1. 群集概述
- 1.1 什么是群集
- 1.2 群集的分类
- 1.2.1 负载均衡集群(Load Balance Cluster)
- 1.2.2 高可用群集 (High Availbility Cluster)
- 1.2.3 高性能运输群集 (High Performance Computer Cluster)
- 1.3 群集的目的
- 2. 负载均衡集群
- 2.1 集群架构
- 2.1.1 第一层,负载调度器 (Load Balancer)
- 2.1.2 第二层,服务器池 (Server Pool)
- 2.1.3 第三层,共享存储 (Share Storage)
- 2.2 负载均衡群集的三种工作模式
- 2.2.1 NAT模式 (地址转换)
- 2.2.2 TUN模式 (IP隧道)
- 2.2.3 DR模式 (直连路由)
- 3. LVS (Linux虚拟服务器)
- 3.1 LVS简介
- 3.2 LVS相关术语
- 3.2 LVS的负载调度算法
- 3.2.1 轮询 (Round Robin)
- 3.2.2 加权轮询(Weighted Round Robin)
- 3.2.3 目的地址哈希调度(destination hashing)
- 3.2.4 源地址哈希调度(source hashing)
- 3.2.5 最少连接 (Least Connections)
- 3.2.6 加权最少连接(Weighted Least Connections)
- 3.2.7 基于地址的最小连接数调度(locality-based least-connection)
- 3.3 ipvsadm工具
- 3.3.1 作用
- 3.3.2 选项及其功能
- 4. LVS-NAT地址转换实操
- 4.1 前置准备
- 4.2 NFS文件存储共享服务器配置
- 4.3 节点服务器1配置
- 4.4 节点服务器2配置
- 4.5 LVS调度器配置
- 4.6 客户端配置
1. 群集概述
1.1 什么是群集
- Cluster,集群、群集
- 由多台主机构成,但对外只表现为一个整体,只提供一个访问入口,相当于一台大型计算机
1.2 群集的分类
根据群集所针对的目标差异和适用场景,可分为3种类型
1.2.1 负载均衡集群(Load Balance Cluster)
-
提高系统响应效率,处理更多的访问请求,减少延迟,实现高并发、高负载的能力
-
LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。
1.2.2 高可用群集 (High Availbility Cluster)
-
提高系统可靠性,减少中断时间,确保服务的连续性(通常使用 N 个 9 来代表高可用的指标)
-
HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点
1.2.3 高性能运输群集 (High Performance Computer Cluster)
-
通过云计算或分布式计算获取高性能的CPU、内存等资源,来提高整体运算能力
-
“并行计算”,通过专用硬件和软件将高性能依赖于“分布式运算”多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
1.3 群集的目的
- 提高性能:计算密集应用。如天气预报,核试验模拟。
- 降低成本:相对百万美元的超级计算机,价格便宜。
- 提高可扩展性:只要增加集群节点即可。
- 增强可靠性:多个节点完成相同功能,避免单点失败。
2. 负载均衡集群
2.1 集群架构
2.1.1 第一层,负载调度器 (Load Balancer)
访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP 地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。
2.1.2 第二层,服务器池 (Server Pool)
群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
2.1.3 第三层,共享存储 (Share Storage)
为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器
2.2 负载均衡群集的三种工作模式
2.2.1 NAT模式 (地址转换)
- 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。
- 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
2.2.2 TUN模式 (IP隧道)
-
采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
-
服务器节点分散在互联网中的不同位置具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信,安全性要差一些
2.2.3 DR模式 (直连路由)
-
采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络(与NAT模式的区别)
-
负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道(与TUN模式的区别)
3. LVS (Linux虚拟服务器)
3.1 LVS简介
LVS实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法
3.2 LVS相关术语
- DS:Director Server。指的是前端负载均衡器。
- RS:Real Server。节点服务器,后端真实的工作服务器。
- VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
- DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
- RIP:Real Server IP,后端服务器的IP地址。
- CIP:Client IP,访问客户端的IP地址。
3.2 LVS的负载调度算法
固定调度算法
3.2.1 轮询 (Round Robin)
- 将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
3.2.2 加权轮询(Weighted Round Robin)
- 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
- 保证性能强的服务器承担更多的访问流量
3.2.3 目的地址哈希调度(destination hashing)
- 以目的地址为关键字查找一个静态hash表来获得所需节点。
3.2.4 源地址哈希调度(source hashing)
- 以源地址为关键字查找一个静态hash表来获得需要的节点。
动态调度算法
3.2.5 最少连接 (Least Connections)
- 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
3.2.6 加权最少连接(Weighted Least Connections)
- 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
- 性能较高的节点将承担更大比例的活动连接负载
3.2.7 基于地址的最小连接数调度(locality-based least-connection)
将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的节点,并以它作为下一次分配的首先考虑。
3.3 ipvsadm工具
3.3.1 作用
- 创建虚拟服务器
- 添加、删除服务器节点
- 查看群集及节点情况
- 保存负载均衡分配策略
3.3.2 选项及其功能
选项 | 功能 |
---|---|
-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”选项组合使用 |
4. LVS-NAT地址转换实操
4.1 前置准备
192.168.67.100 #LVS调度器
192.168.67.101 #节点服务器1
192.168.67.102 #节点服务器2
192.168.67.103 #NFS文件存储共享服务器
192.168.67.104 #客户端
systemctl stop firewalld
setenforce 0
#所有机器关闭防火墙和selinux策略
4.2 NFS文件存储共享服务器配置
rpm -q rpcbind nfs-utils
#查看是否安装rpcbind nfs
#如果没有安装
yum install -y nfs-utils
yum install -y rpcbind
mkdir /opt/scj1 /opt/scj2
#创建共享目录
cd /opt
echo 'this is scj1 test web page!' > scj1/test.html
echo 'this is scj2 test web page!' > scj2/test.html
#添加文件内容
vi /etc/exports
#添加共享策略
opt/lzq1 192.168.67.0/24(rw,sync,no_root_squash)
#设置读写权限,直接读到磁盘中,客户端root用户不进行降权
/opt/lzq2 192.168.6、.0/24(rw,sync,no_root_squash)
exportfs -rv
#发布共享
#前往两个节点服务器
showmount -e 192.168.67.103
#查看共享情况
4.3 节点服务器1配置
yum install -y httpd
#安装web服务
vim /etc/httpd/httpd.conf
#修改配置文件
mount 192.168.67.103:/opt/scj1 /var/www/html
#挂载共享文件夹
df -hT
#查看挂载情况
cat /var/www/html/test.html
#查看当前主页文件是否存在
vim /etc/httpd/conf/httpd.conf
#编辑配置文件
#添加
KeepAlive off
#关闭长连接
systemctl enable --now httpd
#开启httpd服务开机自启
ss -natp |grep 80
#检测是否成功开启
或
lsof -i :80
#配置网关
GATWAY=192.168.67.100
4.4 节点服务器2配置
yum install -y epel-release
#安装epel库
yum install -y nginx
#安装nginx服务软件
vim /etc/nginx/conf.d/default.conf
cd /usr/share/nginx/html
mv * /opt
#将主要文件转移到/opt目录下
mount 192.168.67.103:/opt/scj2 /usr/share/nginx/html
#挂载共享文件
df -Th
#查看挂载情况
ls /usr/share/nginx/nginx
#查看是否有共享的主页文件
mv /opt/*.html/ .
#将原网页文件转移回来
systemctl start nginx
#开启服务
#在浏览器测试
http://192.168.67.101/test.html
http://192.168.67.102/test.html
#配置网关
GATWAY=192.168.67.100
4.5 LVS调度器配置
#添加第二张网卡
1. cd /etc/sysconfig/network-scripts/
#前往网卡配置所在目录
2. cp ifcfg-ens33 ifcfg-ens36
#拷贝33网卡配置文件
3. vim ifcfg-ens36
#编辑网卡文件
systemctl restart network
#重启网卡
ifconfig ens36
vim /etc/sysctl.conf
#添加路由转发功能
#添加
net.ipv4.ip_forward = 1
sysctl -p
#刷新状态
iptables -F
#删除默认规则
iptables -F -t nat
#删除nat表规则
iptables -t nat -A POSTROUTING -s 192.168.67.0/24 -o ens33 -j SNAT --to 12.0.0.10
cd /user/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs
ls
#查看ip_vs模块
modprobe ip_vs
#加载ip_vs通用模块
或
for i in `ls /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs |grep -o "^[^.]*"> do
> modprobe $i
> done
#使用一个for循环直接全部搞定
#安装ipvsadm工具
yum install -y ipvsadm
systemctl start ipvsadm
#直接启动
vim /var/log/messages
#查看系统日志
touch /etc/sysconfig/ipvsadm
或
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
#再次启动
ipvsadm -ln
#查看当前有无策略
#如果有
ipvsadm -C #清空策略
#如果没有
ipvsadm -A -t 12.0.0.10:80 -s rr
#指定虚拟服务器IP地址为12.0.0.10和80端口使用轮询算法
ipvsadm -a -t 12.0.0.10:80 -r 192.168.67.101:80 -m
#指定虚拟服务器IP地址为12.0.0.10,真实服务器地址为192.168.67.101,及使用nat模式
ipvsadm -a -t 12.0.0.10:80 -r 192.168.67.102:80 -m
#指定虚拟服务器IP地址为12.0.0.10,真实服务器地址为192.168.67.101,及使用nat模式
ipvsadm -ln
#查看当前策略
ipvsadm
#激活策略
4.6 客户端配置
#设置和调度器相同网段网址和网关
ifconfig ens33
route -n
#测试
curl 12.0.0.10/test.html