集群与负载均衡-ipvsadm
集群的含义
集群的含义集群、集群、组由多个主机组成,但外部性能作为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机。
比如:internet应用的问题,作为站点对硬件性能和稳定性、响应速度、服务、数据可靠性的要求越来越高,如单台服务器无法满足负载均衡和高可用性的要求。
解决问题:使用昂贵的小型机和大型机在相对便宜的服务器上使用多个构建服务集群通过集成多台服务器,使用LVS服务器来实现高可用性和负载均衡,并以相同的IP地址提供相同的服务。在通常用于人群集技术的企业中- LVS (Linux虚拟服务器,Linux虚拟服务器)
集群分类
1. 负载均衡群集
提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能。
LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载。
3. 高可用群集
提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA) 的容错效果。
HA的工作方式包括双工和主从两种模式
4. 高性能运算群集
提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力。
高性能依赖于"分布式运算”、“并行计算” , 通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。
负载均衡架构的组成
负载调度器:访问整个集群系统的唯一入口,外部使用所有服务器的VIP地址,也称为集群IP地址。主调时,通常配置两个调度器实现热备份,当主调度器出现故障时可以滑动替换备用调度器,确保高可用性。
服务器池:由应用服务提供的集群,应由服务器池承担,其中每个节点有一个单独的RIP地址(IP) true,只处理调度程序下发的客户端请求。当一个节点发生故障时,临时进行负载调度。其容错机制可以隔离它们,在等待故障排除后再次进入服务器池。
共享存储:为服务器池中的所有节点提供稳定、一致的文件访问服务,保证整个集群的统一性。共享内存可以使用NAS设备,也可以提供NFS共享服务的专用服务器。
负载均衡集群运行模式分析
NAT模式
与防火墙的专用网络体系结构类似,负载调度器充当所有服务器节点的网关,充当客户机的访问入口和响应客户机的每个节点的访问出口。
服务器节点使用私有IP地址,且加载调度程序位于同一物理网络中,安全性优于其他两种方式。
SNAT:
DNAT:
IP隧道
在开放的网络结构下,加载调度程序仅作为客户端访问,每个节点通过其Internet连续直接响应客户端,而不是加载后分散在Internet上不同位置的调度程序服务器节点,拥有自己的公共IP地址,通过专用IP隧道和加载调度程序来相互通信
直接路由
采用半开放式网络结构,与顶层模型结构类似,但并非所有节点分散在周围,而是与调度程序位于同一物理网络负载调度程序和每个节点服务器通过本地网络连接,不需要建立专用IP隧道
LVS虚拟服务器
基于IP地址的LVS有效地虚拟化了应用程序,提出了基于IP地址的请求分布和内容负载均衡的有效解决方案
lvs现在已经成为一个Linux内核的一部分,ip-vs的默认编译器模块,在必要时自动调用,在CentOS 7系统,以下操作可以手动加载ip-vs模块,和查看当前ip-vs模块系统中版本信息。
LVS负载调度算法
轮询
将接收到的访问请求依次按顺序分配给集群中的每个节点(实服务器),平等地对待每个服务器,而不管服务器的实际连接数和系统负载。
加权轮询
根据调度程序设置的权值来分配请求,节点权值越高优先级的任务,请求的数量越多,保证性能强的服务器承担的流量越多
最少连接
根据与实服务器建立的连接数,将接收访问请求的优先级分配给连接数最少的节点
加权最少连接
服务器节点性能差异越大,可自动调整实服务器性能权重越高的节点将承担更大比例的主动连接负载
配置LVS实例
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 |
搭建NFS服务器
实现共享存储
### 安装服务
yum install -y nfs-utils.x86_64 rpcbind.x86_64
### 启动服务:nfs rpcbind
systemctl restart nfs
systemctl restart rpcbind
### 创建目录作为共享目录
mkdir kgc benet
### 给目录添加权限
chmod 777 kgc benet
### 将目录在指定nfs共享(并设置权限)
vim /etc/exports
#### 查看共享目录
exportfs -rv
### 关闭防火墙,安全机制
systemctl status firewalld
systemctl stop firewalld
setenforce 0
部署WEB服务器
前提在于安装了web服务:http或nginx,这里使用HTTP。
### 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
### 安装服务
yum install httpd -y
systemctl start httpd.service
###
yum -y install nfs-utils rpcbind
showmount -e NFS服务器的IP地址
systemctl start rpcbind
### 挂载到HTTP的网页目录下
mount.nfs 192.168.184.70:/opt/ljm /var/www/html
mount.nfs 192.168.184.70:/opt/lucien /var/www/html
## 创建网页HTML文件
echo “AAAAA” > index.html
搭建负载调度服务:网关服务器
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
### 开启安全策略控制:iptables
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
### 查看策略是否开启
sysctl -p
### 查看安全策略
iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s web所属内网网段/24 -o ens36 -j SNAT --to-source 外网网关IP
modprobe ip_vs #加载 ip_vs模块
cat /proc/net/ip_vs #查看 ip_vs版本信息
### 前提安装本地yum源
yum -y install ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
或
ipvsadm --save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
ipvsadm -C #清除原有策略
ipvsadm -A -t 外网网关IP:80 -s rr
ipvsadm -a -t 外网网关IP:80 -r web所属内网网段:80 -m
ipvsadm #启用策略
ipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略
通过外网IP即可访问内网web服务页面
三种工作模式的区别
工作模式 | NAT | TUN模式 | DR模式 |
---|---|---|---|
server number(节点数量) | low 10-20 | high 100 | hign 100 |
真实网关 | 负载调度器 | 自由路由器 | 自由路由器 |
IP地址 | 公网+私网 | 公网 | 私网 |
优点 | 安全性高 | 安全、速度快 | 性能最好 |
缺点 | 效率低、压力大 | 需要安全隧道、贵 | 不能跨越LAN(局域网) |