LVS负载均衡群集---NAT
群集(或集群)的称呼来自于英语单词“Cluster”,表示一群、一串的意思,用在服务器领域,则表示大量的服务器的集合。
1 群集的类型
无论是那种群集,至少包括两台节点服务器,而对外表现为一个整体,只能提供一个访问入口(域名或IP地址)
根据群集所针对的目标差异,可分为三种类型。
负载均衡群集(Load Balance Cluster);以提高系统的相应能力,尽可能处理更多大的访问请求。减少延迟为目标,获得高并发、高负载(LB)的整体性能。例如“DNS轮询”“应用层交换”“反向代理”等都可用在负载均衡群集。LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。
高可用群集(High Availability Cluster); 以提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果。例如“故障切换”“双机热备”等都属于高可用群集技术。HA的工作方式包括双工和主从两种。双工:所有节点同时在线,主从则只有主节点在线,当出现故障时从节点能自动切换为主节点。
高性能运算群集(High Performance Computer Cluster);以提高应用系统的CPU运算速度扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力,例如“云计算”“网络计算”也可视为高性能运算的一种。高性能运算群集的高性能依赖于“分布式运算”“并行计算”通过专用硬件和软件将多个服务器的CPU。内存等资源整合在一起,实现只有大型,超级计算机才具备的计算能力。
2 负载均衡的分层结构
第一层 负载调度器:负责相应并分发来自客户机的访问请求,是整个群集系统的唯一入口,对外使用所有的服务器共有的VIP (Virtual ip ,虚拟ip)地址,也可称为群集ip地址,通常会配置主、备两台调度器实现热备,确保高可用性能。
第二层 服务器池;群集所提供的应用服务(如 HTTP、FTP)由服务器池承担,其中每个节点具有独立的RIP(Real ip ,真是ip)地址,只处理调度器分发过来的客户请求,当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除后重新纳入服务器池。
第三层,共享存储;为服务池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。共享存储可使用NAS设备,或者NFS(网络文件系统)共享服务的专用服务器
3、负载均衡的工作模式
关于群集的负载调度技术,可以基于ip 端口,内容等进行分发,其中基于ip的负载调度是效率最高的,基于ip的负载均衡模式中,常见的有地址转换、ip隧道、直接路由三种模式。
地址转换(Network Address Translation);简称NAT模式。类似于防火墙的私有网络结构。负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口,服务器节点使用私有ip地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。
ip隧道Tunnel);简称 TUN 模式,采用开放式的网络结构负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器,服务器节点分散在互联网中的不同位置具有独立的公网Ip地址,通过专用ip隧道与负载调度器相互通信。
直接路由(Direct Routing);简称DR模式。采用半开放式的网络结构,与TUN模式的结构类似,但各个节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的ip隧道。
以上三种工作模式中,NAT方式只需要一个公网IP地址,从而成为最易用的一种负载均衡模式,安全性也比较好。许多硬件负载均衡设备就是采用这种方式,相比而而言,DR模式与TUN模式的负载均衡能力更加强大,适用范围更广,但节点的安全性要稍差一些。
4、LVS的负载调度算法
轮询(Round Robin):将收到的访问请求按照顺序轮流分配给群集的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际连接数和系统负载。
加权轮询(Weighted Round Robin): 根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重。保证处理能力强的服务器承担更多的访问流量。
最少连接(Least Connections):根据真实服务器已建立的连接数进行分配,将受到的访问请求优先分配给连接数最少的节点。如所有的服务器节点性能相近,采用这种方式可以更好地负载均衡。
加权最少连接(WeightedLeast Connections ):在服务器节点性能差异较大的情况下,可以为真实服务器自动调整权重,权重较高的节点将承担更大比例的活动连接负载。
环境搭建
lvs: 需要2块网卡,一块和外网相连 ip:192.168.221.151 一块和服务器池在同一网段 ip 192.168.1.1
web1 ip:
web2 ip:
此时web1和web2是能ping通lvs 192.168.1.1
注:关闭 lvs调度器的selinux,开启路由转发。关闭web服务器的防火墙
[[email protected] ~]# setenforce 0
在vim /etc/sysctl.conf 中添加 net.ipv4.ip_forward = 1 执行sysctr -p 生效
1、 在lvs调度器上安装ipvsadm管理工具
[[email protected] ~]# yum -y install ipvsadm
使用 ipvsadm -v 可查看
2、在web1、2上分别安装httpd(这里只演示安装web1)
这里使用本地yum源安装
[[email protected] yum.repos.d]# vim gy.repo
web1、web2 安装完成以后,为了测试分别给web1、web2创建测试页,并启动httpd服务
[[email protected] ~]# echo "192.168.1.2" >> /var/www/html/index.html
[[email protected] ~]# systemctl start httpd.service
[[email protected] ~]# echo "192.168.1.3" >> /var/www/html/index.html
[[email protected] ~]# systemctl start httpd.service
访问 web1
访问 web2
3、配置lvs调度服务器
1)创建虚拟服务器
[[email protected] ~]# ipvsadm -A -t 192.168.221.151:80 -s rr
-A:表示添加虚拟服务器 -t:指定VIP地址及tcp端口 -s:指定负载均衡调度算法
rr:轮询 wrr:加权轮询 lc:最少连接 wlc:加权最少连接
2)添加服务器节点
[[email protected] ~]# ipvsadm -a -t 192.168.221.151:80 -r 192.168.1.2:80 -m -w 1
[[email protected] ~]# ipvsadm -a -t 192.168.221.151:80 -r 192.168.1.3:80 -m -w 1
-a :真实服务器 -t : 指定VIP地址及tcp端口 -r :指定RIP(服务器池)地址及tcp端口
-m :表示NAT群集模式 (-g DR 模式 、 -i TUN模式) -w :设置权重(权重为0,表示暂停节点)
3)查看群集节点状态
[[email protected] ~]# ipvsadm -ln
从上面结果中,Foreard列下的Masq对应Masquerade(地址伪装),表示采用的群集模式为NAT,如果是Rount ,则表示采用的群集模式为DR。
4)删除服务器节点
例如:删除lvs群集192.168.221.151中的节点192.168.1.3
[[email protected] ~]# ipvsadm -d -r 192.168.1.3:80 -t 192.168.221.151:80
-d:删除一个节点
或
删除整个虚拟服务器使用-D并指定虚拟IP地址即可,无需指定节点。
[[email protected] ~]# ipvsadm -D -t 192.168.221.151:80
4、访问http://192.168.221.151出现以下页面。
刷新一下