(1)负载均衡群集
(2)高可用群集
(3)高性能运算群集
以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
LB的负载分配依赖于主节点的分流算法
以提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
HA的工作方式包括双工和主从两种模式
以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
高性能运算群集的高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
群集的负载调度技术有三种工作模式
地址转换
IP隧道
直接路由
简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信
简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
准备环境
一台调度器:配置双网卡 VM1:192.168.100.41 桥接网卡:10.0.2.73
两台WEB服务器集群池:
内网:192.168.131.130 外网192.168.211.201 调度服务器
192.168.131.128 wed服务器
这边的网关必须指向192.168.100.42这个地址
一台windos10测试机
modprobe ip_vs //加载ip_vs模块
cat /proc/net/ip_vs //查看ip_vs 信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
翻译:
IP虚拟服务器版本1.2.1(大小=4096)
端口调度器标志
—> RemoteAddress:端口转发权重ActiveConn InActConn
yum install -y ipvsadm //安装ipvsadm 管理工具
[root@localhost ~]# ipvsadm -v //查看版本
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
ipvsadm -A -t 192.168.211.201:80 -s rr // 创建虚拟服务器
对于负载均衡调度器来说,VIP 必须是本机实际已启用的IP地址,若群集的VIP地址为192.168.211.201,针对80 端口提供分流服务,使用轮询的调度算法
注:-A 表示添加虚拟服务
-t用来指定VIP地址及tcp端口,
-s用来指定负载调度算法{(轮询:rr),(加权轮询:wrr),(最少连接:lc),(加权最少连接:wlc).
ipvsadm -a -t 192.168.211.201:80 -r 192.168.131.128:80 -m -w 1
ipvsadm -ln //查看添加的节点
默认是80端口
上述输出结果,FORWARD列下Masq 对应Masquerade (地址伪装),表示采用的群集模式为NAT; 如果是Route,则表示采用的群集模式为DR。
删除服务节点
ipvsadm -d -r192.168.211.135:80 -t 192.168.211.201:80
需要删除某一个节点时,使用选项-d
需要删除整个虚拟服务器时,使用选项-D
保存负载分配策略
使用 导入/导出 工具 ipvsadm-restore / ipvsadm-save
[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost ~]# cat /etc/sysconfig/ipvsadm
-A -t www.b.com:http -s rr
-a -t www.b.com:http -r 192.168.131.128:http -m -w 1
配置负载调度器
(1)配置SNAT转发规则
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p //*刷新一下*
到wed服务器中部署http服务
浏览器访问测试
主机 | 系统 | ip地址 | 服务 |
---|---|---|---|
wed服务器1 | centos7 | 外:192.168.211.10 内:192.168.131.10 | http |
wed服务器2 | centos7 | 外:192.168.211.11 内:192.168.131.11 | nginx |
调度器 | centos7 | 外:192.168.211.12 内:192.168.131.12 | |
备用调度器 | centos7 | 外:192.168.211.13 内:192.168.131.13 | nfs |
测试机 | windos10 |
安装 yum -y install net-tools 使用netstat 查看端口
安装http
yum install -y httpd
安装 nginx
解压
tar -zxf nginx-1.18.0.tar.gz -C /usr/src/
cd /usr/src/nginx-1.18.0/
配置:编译:安装
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
搭建nfs服务
rpm -qa nfs-utils rpcbind //查询是否安装
yum install nfs-utils rpcbind //安装nfs(两个软件)
systemctl start rpcbind && systemctl start nfs //启动(注意按顺序)
vim /etc/exports //进入文件指定共享目录
/home/nfs_wed 192.168.131.0/24(rw,sync,no_root_squash)
保存退出
exportfs -a //加载文件
showmount -e //查看共享目录
注:关闭防火墙
cd /home/nfs_wed/
vim index.html
wed服务器1
挂载nfs共享目录
yum install -y rpcbind nfs-utils //下载rpcbind(必须)
systemctl restart rpcbind //开启
mount 192.168.131.13:/home/nfs_wed /var/www/html/ //挂载
df //查看挂载情况
wed服务器2
挂载nfs共享目录
(方法一样,只有挂载目录不一样,这里就不解释了)
yum install -y rpcbind nfs-utils
systemctl restart rpcbind
mount 192.168.131.13:/home/nfs_wed /usr/local/nginx/html/
df
查看效果
wed服务1
http要关闭 setenforce 0 (不然会失败)
注::nginx会乱码是正常的
yum install -y ipvsadm //安装管理工具
配置虚拟接口地址(vip)
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33:0
UUID=7b353156-27b0-455c-a01c-8cbcb5f18e41
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.211.20 //是你的vip地址
NETMASK=255.255.255.0 //这个以后的都不要
ifup ens33:0 //开启
ifconfig ens33:0 //查看与自己配置是否匹配
对于DR群集来说,由于lvs负载调度器和各节点需要公用一个vip地址,需要修改linux内核的重定向参数不然不知道那台机器响应
vim /etc/sysctl.conf
//添加到末尾
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p //刷新一下
modprobe ip_vs //加载模块
ipvsadm -A -t 192.168.211.20:80 -s rr //生成虚拟服务器
编写策略
ipvsadm -a -t 192.168.211.20:80 -r 192.168.211.10 -g -w 1
ipvsadm -a -t 192.168.211.20:80 -r 192.168.211.11 -g -w 1
保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadm //重启ipvsadm
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
修改
DEVICE=lo:0
IPADDR=192.168.211.20
NETMASK=255.255.255.255
ONBOOT=yes
ifup lo:0 //开启
ifconfig lo:0 //查看与自己配置是否匹配
route add -host 192.168.211.20 dev lo:0 //添加一条路由
调整/proc 响应参数
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
修改
DEVICE=lo:0
IPADDR=192.168.211.20
NETMASK=255.255.255.255
ONBOOT=yes
ifup lo:0 //开启
ifconfig lo:0 //查看与自己配置是否匹配
route add -host 192.168.211.20 dev lo:0 //添加一条路由
调整/proc 响应参数
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
测试(使用两个浏览器)
注:多刷几遍可能会有缓存
命令测试