群集
群集表示大量服务器的集合体,以区分于单个服务器。通常只提供一个访问入口(域名或者IP地址),对外表现为一个整体。
群集的三种类型:
- 负载均衡群集: 以提高应用系统的响应能力,尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载的整理性能。例如,DNS轮询、应用层交换、反向代理。
- 高可用群集: 以提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用的容错效果。例如,故障切换、双机热备、多机热备。
- 高性能运算群集: 以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算能力。例如,云计算、网格计算。高性能运算群集的高性能依赖于分布式运算和并行计算,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。
负载均衡的分层结构:
典型的负载均衡群集中,包括三个层次的组件。前端至少有一个负载调度器负责响应并分发来自客户端的访问请求,后端有大量真实服务器构成的服务器池来提供实际的应用服务,整个群集的伸缩性通过增加、删除服务器节点来完成,而这些过程对客户机是透明的,为了保持服务的一致性,所有节点使用共享存储设备。
- 第一层,负载调度器:这是整个群集的唯一入口,对外使用所有服务器共有的VIP(虚拟IP)地址,也称为群集IP地址。
- 第二层,服务器池:群集所提供的应用服务由服务器池承担,其中的每个节点具有独立的RIP(真实IP)地址,只处理调度器分发来的客户机请求。
- 第三层,共享存储:为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。
负载均衡的工作模式
群集的负载调度技术可以基于IP、端口、内容等进行分发,其中基于IP的效率最高。基于IP的负载均衡模式中,常见的有地址转换、IP隧道和直接路由三种工作模式。
- 地址转换:简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。服务器节点使用私有IP地址与负载调度器位于同一个物理网络,安全性要优于其他方式。
- IP隧道:简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信。
- 直接路由:简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。
在以上三种模式中,NAT方式只需要一个公网IP地址,从而成为最易用的一种负载均衡模式,安全性也比较好,许多硬件负载均衡设备就是采用这种方式;相比较而言,DR模式和TUN模式的负载能力更加强大、适用范围更广,但是节点的安全性要稍差一些。
LVS虚拟服务器
LVS虚拟服务器是针对Linux内核开发的一个负载均衡项目,它实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法。
LVS现在已经是Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。
系统环境
- 负载调度器(网关):内网:192.168.100.1 外网:12.0.0.1
- web服务器1:192.168.100.26 web:apache
- web服务器2:192.168.100.27 web:apache
- NFS服务器(存储):192.168.100.29
- win7客户端:12.0.0.10
NFS服务器:192.1688.100.29
1. 安装(默认已经安装)
#先查询系统是否已经安装该软件包
rpm -q nfs-utils rpcbind
2. 没有安装,则使用以下命令安装
yum install -y nfs-utils rpcbind
3. 启动服务
systemctl start rpcbind.service
systemctl restart nfs.service
4. 创建共享目录并修改用户权限
mkdir -p /data/web1 /data/web2
chmod 777 /data/web1 /data/web2
5. 编辑配置文件
vi /etc/exports
/data/web1 192.168.100.0/24(rw,sync) #192.168.100.0/24网段可以读写、同步/data/web1目录
/data/web2 192.168.100.0/24(rw,sync) #192.168.100.0/24网段可以读写、同步/data/web2目录
6. 发布共享
exportfs -rv
7. 关闭防火墙及selinux
setenforce 0
systemctl stop firewalld.service
web服务器1:192.168.100.26
1. 安装apache
yum install -y httpd
2. 客户端查看、挂载
showmount -e 192.168.100.29
mount.nfs 192.168.100.29:/data/web1 /var/www/html
3. 创建默认首页文件
echo "<h1>this is web1 site.</h1>" > /var/www/html/index.html
4. 启动服务
systemctl enable httpd.service
systemctl start httpd.service
5. 关闭防火墙及selinux
setenforce 0
systemctl stop firewalld.service
测试
web服务器2:192.168.100.27 web:apache
1. 安装apache
yum install -y httpd
2. 客户端查看、挂载
showmount -e 192.168.100.29
mount.nfs 192.168.100.29:/data/web2 /var/www/html
3. 创建默认首页文件
echo "<h1>this is web2 site.</h1>" > /var/www/html/index.html
4. 启动服务
systemctl enable httpd.service
systemctl start httpd.service
5. 关闭防火墙及selinux
setenforce 0
systemctl stop firewalld.service
测试
负载调度器(网关):外网:12.0.0.1 内网:192.168.100.1
1. 开启路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
2. 使配置生效
sysctl -p
3. 清空防火墙及设置snat地址转换
iptables -t nat -F
iptable -F
iptables -t nat -A POSTROUTING -o ens36 -s 192.168.100.0/24 -j SNAT --to-sourcec 12.0.0.1
4. 加载LVS内核模块
modprobe ip_vs
5. 查看ip_vs模块版本
cat /proc/net/ip_vs
6. 安装管理软件
rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm
7. centos7之后必须先保存后才可以启动服务,不然会报错
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
8. 创建虚拟服务器
#清空
ipvsadm -C
#添加虚拟服务器采用rr(轮询)的负载均衡算法
ipvsadm -A -t 12.0.0.1:80 -s rr
#添加真实服务器节点,分别为web1、web2服务器
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.26:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.27:80 -m
9. 查看群集节点状态(Masq:表示群集模式为NAT;若为Router则表示为DR模式)
ipvsadm -ln
10. 关闭selinux
setenforce 0
测试
win7测试客户机:
客户机能够ping通调度服务器
客户机对调度服务器进行访问,已实现了轮询访问