18.1 集群介绍
18.2 keepalived介绍
18.3/18.4/18.5 用keepalived配置高可用集群
18.6 负载均衡集群介绍
18.7 LVS介绍
18.8 LVS调度算法
18.9/18.10 LVS NAT模式搭建
一、集群介绍
集群,简单地说是指一组(若干个)相互独立的计算机,利用高速通信网络组成一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。
集群的特点:高性能(Performance)、价格有效(Cost-effectiveness)、可伸缩性(Scalability)、高可用性(Availability)、透明性(Traansparency)、可管理性(Manageability)、可编程性(Programmability)
集群的分类:
负载均衡集群:Load balancing clusters,简称LBC、LB
高可用集群:High-availability clusters,简称HAC
高性能计算集群:High-performance clusters,简称HPC
网格计算集群:Grid computing clusters
常见的集群开源软件:
高可用: Keepalived、Heartbeat
负载均衡:Keepalived、Nginx、LVS、Haproxy
二、 keepalived介绍
使用keepalived来实现高可用集群,因为heartbeat在centos6上有一些问题,影响实验效果,而且heartbeat软件在2010年停止更新;因此着重讲解keepalived
keepalived通过VRRP(Virtual Router Redundancy Protocl)来实现高可用。
在这个协议里会将多台功能相同的路由器组成一个小组,这个小组里会有1个master角色和N(N>=1)个backup角色。
master会通过组播的形式向各个backup发送VRRP协议的数据包,当backup收不到master发来的VRRP数据包时,就会认为master宕机了。此时就需要根据各个backup的优先级来决定谁成为新的mater。
Keepalived要有三个模块,分别是core、check和vrrp。其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析,check模块负责健康检查,vrrp模块是来实现VRRP协议的。
三、用keepalived配置高可用集群
实验准备
- 准备两台机器ying01和ying02,ying01作为master,ying02作为backup;
- 两台机器都执行yum install -y keepalived;
- 两台机器都安装nginx,其中ying01上已经编译安装过nginx,ying02上需安装nginx。
3.1 准备阶段
ying02上 配置
在ying02客户端上,安装配置ngnix
编辑nginx启动脚本文件
编辑配置文件
检查语法错误,开始启动nginx服务
在ying01上配置
先安装keepalived包;并找到其配置文件
原配置文件清空,并写入以下配置
在配置文件中,定义了check_ng.sh脚本,现在新建如下脚本
给该脚本赋予755权限,否则无法被keepalived调用
开启keepalived服务,停止防火墙,关闭SElinux
同样在ying02上也配置
先安装keepalived包;清空原配置文件,并按以下内容写入配置文件中
在配置文件中,定义了check_ng.sh脚本,现在新建如下脚本
给该脚本赋予755权限,否则无法被keepalived调用
开启keepalived服务,停止防火墙,关闭SElinux
3.2 测试阶段
现在把个机器梳理以下:
192.168.112.136 为master机,ying01
192.168.112.138 为backup机,ying02
192.168.112.100 为VIP
用ip add命令查看,此时VIP 192.168.112.100在ying01上
而backup机上没有.mater给客户端提供服务
在winows浏览器上测试,能够清楚看到提供服务的是master
master 192.168.112.136的主页
虚拟IP 192.168.112.100显示的页面为master的页面
backup 192.168.112.138的页面
现在希望让ying01 master宕机; 关闭keepalived服务即可(关闭它,即连带关闭nginx)
在masters查看VIP,发现不在
在backup上查看,发现VIP已经移到此机上
那么用windouw浏览器观测,与前面对比
此时VIP完美转移到backup上面,不影响用户使用
四、负载均衡集群介绍
负载均衡软件分类:
主流的负载均衡开源软件:LVS、keepalived、haproxy、nginx等
其中,LVS属于4层(网络OSI7层模型),nginx属于7层,haproxy即可以是4层,也可以是7层。
keepalived的负载均衡功能其实就是lvs
lvs这种4层的负载均衡是可以分发除80外的其他端口通信,比如mysql,而nginx仅仅支持http、https、mail
haproxy也可以支持mysql
4层和7层负载比较:
LVS4层的更稳定,能承受更多的请求
nginx 7层的更加灵活,能实现更多的个性化需要
五、lvs介绍
LVS:Linux Virtuer Server,即Linux虚拟服务器,是一个虚拟的服务器集群系统,基于TCP/IP做的路由和转发,稳定性和效率很高。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的开源软件项目之一。
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
一般来说,LVS集群采用三层结构
A、负载调度器(load balancer)或者叫分发器(Load Runner),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
六、LVS调度算法
lvs支持的算法有:
轮询:Round-Robin,简称:rr
加权轮询:Weight Round-Robin,简称:wrr
最小连接:Least-Connection,简称:lc
加权最小连接:Weight Least-Connection,简称:wlc
基于局部性的最小连接:Locality-Based Least Connections,简称:lblc
带复制的基于局部性最小连接:Locality-Based Least Connections with Replication,简称:lblcr
目标地址散列调度:Destination Hashing,简称:dh
源地址散列调度:Source Hashing,简称:sh
七、LVS NAT模式搭建
试验原理:
LVS NAT模式借助iptables的nat表来实现:
用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的rs上去
rs需要设定网关为分发器的内网ip
用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈
在nat模式中,只需要分发器有公网ip即可,所以比较节省公网ip资源
试验准备:
三台机器:
分发器,也叫调度器(简写为dir) 内网:192.168.112.136,外网:192.168.24.128(vmware仅主机模式)
rs1 内网:192.168.112.138,设置网关为192.168.112.136
rs2 内网:192.168.112.139,设置网关为192.168.112.136
三台机器上都执行执行
systemctl stop firewalld; systemc disable firewalld
systemctl start iptables-services; iptables -F; service iptables save
注意:ying01和ying02机器已经存在,现在需要克隆一台ying03机器;其IP定位:192.168.112.139。此处不详细介绍
在ying01上
分发器需要,两个网卡,也就是ying01机器上需要两个网卡
在ying01机器,vmware上配置仅主机模式
此时查看ens37网卡的IP为192.168.24.128
查看网卡网关
保存清空的规则
ying02上
停止防火墙
安装iptables-services服务
开启iptables服务,清空规则后,保存规则
此时把ying02上的IP网关改为192.168.112.136
重启网络服务,查看其网关
在ying03的上
安装iptables-services服务
开启iptables服务,清空规则后,保存规则
此时把ying02上的IP网关改为192.168.112.136
重启网络服务,查看其网关
回到ying01上设置
安装ipvsadm包
[root@ying01 ~]# yum install -y ipvsadm
编辑lvs_nat.sh脚本
ying02上
ying02上开启nginx,把其主页重新定义
ying03上
ying03同ying02一样,开启nginx服务,并重新定义网页内容
ying01上
执行脚本,查看nat规则,发现有网段出现
测试192.168.24.128的主页,发现显示单位为ying02上的主页
进入脚本,把延迟时间去掉
重新执行脚本,此时每测试一次,显示的主页为ying02、ying03;很均衡的显示
ipvsadm -ln 查看其规则