互联网应用中,随着站点对硬件性能、相应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器力不从心,而且有可能发生单点故障
根据群集所针对的目标差异,可以分为三类:
负载均衡群集是目前企业用的最多的群集类型
硬件防火墙的IP默认是无法ping通的
第一层:负载调度器(代理)
第二层:服务器池(nginx upstream 后端各个服务器的位置,即ip地址)
第三层:共享存储(NFS、GFS)
如图所示:
1.负载接受客户请求、请求分发给资源池
2.服务器池等待调度器分配任务
3.共享存储给与前端负载调度/服务器池提供存储空间
在企业中:
1.属于企业架构中前端的部分
2.负载调度器:对外,由调度器服务器提供一个VIP作为统一入口,对内,按照分流算法分发流量的请求给服务器池
3.服务器池接收、响应/处理负载调度的任务
4.共享存储为服务器提供存储空间
群集的负载调度技术有三种工作模式:
modprobe ip_vs
cat /proc/net/ip_vs #确认内核对LVS的支持
从2.4版本开始,Linux内核默认支持LVS,要使用LVS只需要安装一个LVS的管理工具:ipvsadm。
LVS的结构主要分为两部分:
-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
LVS调度器作为web服务器池的网关,LVS两块网卡,分别连接内外网,使用轮询(RR)调度算法
主机 | 操作系统 | IP地址 | 工具/软件包 |
---|---|---|---|
LVS负载调度器 | centos7 | 内网:192.168.238.11、外网:12.0.0.1 | ipvsadm |
NFS服务器 | centos7 | 192.168.238.12 | rpcbind、nfs-utils |
web节点服务器1 | centos7 | 192.168.238.13 | rpcbind、nfs-utils、httpd |
web节点服务器2 | centos7 | 192.168.238.14 | rpcbind、nfs-utils、httpd |
客户端(外网) | windows | 12.0.0.12 | —— |
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum -y install nfs-utils rpcbind
systemctl start rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
systemctl enable rpcbind.service
mkdir /opt/zzw
mkdir /opt/abab
chmod 777 /opt/zzw
chmod 777 /opt/abab
vim /etc/exports
/usr/share *(ro,sync)
/opt/zzw 192.168.238.0/24(rw,sync)
/opt/abab 192.168.238.0/24(rw,sync)
exportfs -rv
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service
yum -y install nfs-utils rpcbind
showmount -e 192.168.238.12
systemctl start rpcbind
systemctl enable rpcbind
两台web节点服务器都做以上相同的操作
这里开始两台节点服务器就不一样了
mount.nfs 192.168.238.12:/opt/zzw /var/www/html
echo 'this is zzw web!' > /var/www/html/index.html
mount.nfs 192.168.238.14:/opt/abab /var/www/html
echo 'this is abab web!' > /var/www/html/index.html
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
1. 配置SNAT转发规则
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
或
echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p
iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.238.0/24 -o ens36 -j SNAT --to-source 12.0.0.1
2. 加载LVS内核模块
modprobe ip_vs #加载 ip_vs模块
cat /proc/net/ip_vs #查看 ip_vs版本信息
3. 安装ipvsadm 管理工具
yum -y install ipvsadm
启动服务前须保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
或
ipvsadm --save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
4. 配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
ipvsadm -C #清除原有策略
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.238.13:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.238.14:80 -m
ipvsadm #启用策略
ipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略
在一台IP为12.0.0.12的windows客户机使用浏览器访问http://12.0.0.1/,不断刷新查看负载均衡效果,刷新间隔建议长一点。
1.属于企业架构中前端的部分
2.负载调度器:对外,由调度器服务器提供一个VIP作为统一入口,对内,按照分流算法分发流量的请求给服务器池
3.服务器池接收、响应/处理负载调度的任务
4.共享存储为服务器提供存储空间
SLB 包含LVS和Tengine(基于nginx功能开发)
工作模式 | NAT | TUN | DR |
---|---|---|---|
server number(节点数量) | 较低 10-20 | 较高 100 | 较高 100 |
真实网关 | 负载调度器 | 自由路由器 | 自由路由器 |
IP地址 | 公网+私网 | 公网 | 私网 |
优点 | 安全性高 | 安全、速度快 | 性能最好 |
缺点 | 效率低、压力大 | 需要隧道支持 | 不能跨越LAN(局域网) |
启动ipvsadm服务前要保存负载分配策略,不然会报错!