LVS负载均衡群集——NAT模式实例
1.集群
1.1企业群集
企业集群的含义
- Cluster , 集群、群集
- 由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机
企业集群分类
- 根据群集所针对的目标差异,可分为三种类型
- 负载均衡群集
- 高可用群集
- 高性能运算群集
- 高可用群集
- 提高应用系统的可靠性,尽可能的减少中断时间为目标,确保服务的连续性,达到高可用的容错效果
- HA工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但是当出现故障时从节点能自动切换为主节点。
- 高性能运算群集
- 以提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用的容错效果
- 高性能依赖于“分布式运算”、“并行计算”通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算力
- 负载均衡群集架构
-
第一层,负载调度器(Load Balancer或Director)
-
第二层,服务器池(Server Pool)
-
第三层,共享存储(Share Storage)
1.2 集群负载调度技术的三种工作模式
- NAT模式
地址转换
- Network Address Translation,简称NAT模式
- 类似于防火墙的私有网络结构,负责调度器作为所有服务器节点的网关,及作为客户机的访问入口也是个节点回应客户机的访问出口,也就是说这个负载调度器会承受双倍的负载压力也是NAT模式最大的缺陷
- 服务器节点使用私有IP地址转换,与负载调度器位于同一个物理网络,安全性要优于其他两种模式
- TUN模式
IP隧道
- IP Tunnel ,简称TUP模式
- 采用开放式的网络结构,负载调度器仅作为客户机的访问入口个节点通过internet连接直接回应客户机,而不经过负载调度器
- 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信
- DR模式
直接路由
- Direct Routing,简称DR模式
- 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于一个物理网络
- 负载调度器与各节点服务器通过本地网络连接,不需要建立专业的IP隧道
1.3 lvs的负载调度算法
- 轮询(Round Robin)
- 将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
- 加权轮询(Weighted Round Robin)
- 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
- 保证性能强的服务器承担更多的访问流量
- 最少连接(Least Connections)
- 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
- 加权最少连接(Weighted Least Connections)
- 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
- 性能较高的节点将承担更大比例的活动连接负载
ipvsadm工具
部署两台节点web服务器(192.168.80.20、192.168.80.30 )
- 第一台部署(192.168.80.20)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#安装apache web服务
yum install -y httpd
#将共享目录挂载到apache服务站点目录
mount 192.168.80.40:/opt/nfs/geng /var/www/html/
#重启服务
systemctl restart httpd
systemctl enable httpd
#修改网卡配置文件将网关地址指向负载调度器并重启网卡服务
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.80.10
systemctl restart network
第二台部署(192.168.80.20)
与第一台一致挂载文件不同
mount 192.168.80.40:/opt/nfs/wang /var/www/html/
负载调度器配置
#添加一块网卡
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
ifconfig #可以查看到以添加的网卡记住名字
cd /etc/sysconfig/network-scripts #切换到网卡配置文件目录
cp ifcfg-ens33 ifcfg-ens37 #复制已有的网卡配置文件进行修改
vim ifcfg-ens37 #删除uuid行修改以下几行NAME=ens37
DEVICE=ens37
IPADDR=12.0.0.1
#GATEWAY=192.168.80.2
#DNS1=8.8.8.8
systemctl restart network #重启网卡服务
vim /etc/sysctl.conf #编辑配置文件开启路由转发功能
net.ipv4.ip_forward = 1
sysctl -p #加载一下
#清空原有防火墙规则添加新的规则
iptables -F
iptables -F -t nat
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens37 -j SNAT --to 12.0.0.1
iptables -nL -t nat #查看指定表规则
yum install -y ipvsadm #安装ipvsadm
#开启ipvsadm服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl restart ipvsadm.service
systemctl enable ipvsadm.service
#加载模块
modprobe ip_vs
cat /proc/net/ip_vs
ipvsadm -C #清空策略
#指定此策略
ipvsadm -A -t 12.0.0.1:80 -s rr #添加虚拟服务器指定vip地址指定调度策略为轮询
ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.20:80 -m #添加节点服务器及IP地址指定模式lvs
ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.30:80 -m
ipvsadm #加载
ipvsadm -ln #查看状态