群集技术概述
群集类型
负载均衡群集(Load Balance Cluster)
高可用群集(High Availability Cluster)
高性能运算群集(High Performance Computer Cluster)
负载均衡的分层结构
第一层 | 负载调度器:访问整个群集系统的唯一入口, 对外使用群集IP地址.所有服务器共有的VIP(Virtual IP)虚拟IP地址 |
第二层 | 服务器池:群集所提供的应用服务由服务器池承担, 其中的每个节点具有独立的RIP(Real IP, 真实IP)地址, 只处理调度器分发过来的客户机请求.当某个节点暂时失效时, 负载调度器的容错机制会将其隔离, 等待错误排除以后再重新纳入服务器池. |
第三层 | 共享存储:为服务器池中的所有节点提供稳定、一致的文件存取服务, 确保整个群集的统一性. |
负载均衡的工作模式
地址转换(Network Address Translation):简称NAT模式
IP隧道(IP Tunnel):简称TUN模式
直接路由(Direct Routing):简称DR模式
LVS虚拟服务器
Linux Virtual Server(LVS)是针对Linux内核开发的一个负载均衡项目, LVS现在已成为Linux内核的一部分, , 默认编译为ip-vs模块, 必要时能够自动调用.
手动加载ip-vs模块和查看ipvs版本信息
1 | modprobe ip_vs |
LVS的负载调度算法
最常用的四种算法包括轮询、加权轮询、最少连接和加权最少连接
轮询(Round Robin):将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器), 均等地对待每一台服务器, 而不管服务器实际的连接数和系统负载.
加权轮询(Weighted Round Robin):根据真实服务器的处理能力轮流分配收到的访问请求, 调度器可以自动查询各节点的负载情况, 并动态调整其权重.
这样可以保证处理能力强的服务器承担更多的访问流量.
最少连接(Least Connections):根据真实服务器已建立的连接数进行分配, 将收到的访问请求优先分配给连接数最少的节点.如果所有的服务器节点性能相近, 采用这种方式可以更好地均衡负载.
加权最少连接(Weighted Least Connections):在服务器节点的性能差异较大的情况下, 可以为真实服务器自动调整权重, 权重较高的节点将承担更大比例的活动连接负载
使用ipvsadm管理工具
ipvsadm是在负载调度器上使用的LVS群集管理工具, 通过调用ip-vs模块来添加、删除服务器节点, 以及查看群集的运行状态.
1 | yum -y install ipvsadm |
LVS群集的管理工作主要包括创建虚拟服务器、添加服务器节点、查看群集节点状态删除服务器节点和保存负载分配策略
创建虚拟服务器
ipvsadm -A -t vip地址:80 -s rr |__ -A 添加虚拟服务器 |__ -t 指定VIP地址及TCP端口, |__ -s 指定负载调度算法 |__ 轮询(rr) |__ 加权轮询(wrr) |__ 最少连接(1c) |__ 加权最少连接(wlc)
添加服务器节点
ipvsadm -a -t vip地址:80 -r rip地址:80 -m -w 1 ipvsadm -a -t vip地址:80 -r rip2地址:80 -m -w 1 ... |__ -a 表示添加真实服务器 |__ -t 用来指定VIP地址及TCP端口 |__ -r 用来指定RIP地址及TCP端口 |__ -m 使用NAT模式 |__ -g DR模式 |__ -i TUN模式 |__ -w 用来设置权重(权重为0时表示暂停节点)
查看群集节点状态
ipvsadm -ln |__ -l 列表查看LVS虚拟服务器 |__ -n 以数字形式显示地址、端口等信息
Forward列下的Masq对应Masquerade(地址伪装), 表示采用为群集模式为NAT.
对应Route, 则表示采用的群集模式为DR.
删除服务器节点
ipvsadm -d -r rip地址:80 -t vip地址:80 |__ -d 从服务器池中删除某一个节点 ipvsadm -D -t 172.16.16.172:80 |__ -D 删除整个虚拟服务器
保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm 保存LVS策略 cat /etc/sysconfig/ipvsadm service ipvsadm stop service ipvsadm start
构建LVS负载均衡群集
LVS-NAT
准备搭建环境:
服务主机 | 内网(仅主机模式) | 外网(NAT模式) | 网关 |
LVS | ens33:192.168.10.254/24 | ens37:192.168.100.254/24 | |
RS | ens33:192.168.10.10/24 | 192.168.10.254 | |
RS2 | ens33:192.168.10.11/24 | 192.168.10.254 | |
NFS | ens33:192.168.10.20/24 | 192.168.10.254 |
配置负载调度器
1.手动开启ip_vs模块并安装ipvsadm管理工具
1 | modprobe ip_vs |
2.配置SNAT转发规则
1 | modprobe ip_vs |
3.配置负载分配策略
1 | service ipvsadm stop |
配置NSF服务器
1.安装rpcbind和nfs
1 | yum -y install rpcbind nfs-utils |
2.创建共享目录和访问控制
1 | mkdir /data{1,2} |
3.开启共享
1 | systemctl stop firewalld |
配置节点服务器
1.安装httpd,创建测试网页.
1 | yum -y install httpd |
2.启用httpd服务程序
1 | systemctl start httpd |
3.客户端进行访问, 测试LVS群集.
1 | curl http://192.168.100.254:80 |
LVS-DR
准备搭建环境:
服务主机 | 内网(仅主机模式) | 外网(NAT模式) | 网关 |
LVS | ens33:192.168.100.254/24 ens33:0:192.168.100.253/24 | ||
RS | ens33:192.168.10.10/24 | ens37:192.168.100.10/24 | ens33:(VM1)192.168.10.1 |
RS2 | ens33:192.168.10.11/24 | ens37:192.168.100.11/24 | ens33:(VM1)192.168.10.1 |
NFS | ens33:192.168.10.20/24 | ens33:(VM1)192.168.10.1 |
配置负载调动器
1.手动开启ip_vs模块并安装ipvsadm管理工具
1 | modprobe ip_vs |
2.配置虚拟IP地址(VIP)
1 | ifconfig ens33:0 192.168.100.253/24 up |
3.配置
1 | ipvsadm -C |
配置NFS服务器
1.安装rpcbind和nfs
1 | yum -y install rpcbind nfs-utils |
2.创建共享目录和访问控制
1 | mkdir /data{1,2} |
3.开启共享
1 | systemctl stop firewalld |
配置节点服务器
1.配置虚拟IP地址(VIP)
1 | ifconfig lo:0 192.168.100.253/32 up |
2.调整/proc响应参数
1 | echo 1 > sys ipv4 ens37/arp_ignore |
3.安装httpd, 创建测试网页.
1 | yum -y install httpd |
4.启用httpd服务程序
1 | systemctl start httpd |
5.客户端进行访问, 测试LVS群集.
1 | curl http://192.168.100.253:80 |