1.集群的介绍和keepalived的介绍
- 集群,简单地说是指一组(若干个)相互独立的计算机,利用高速通信网络组成一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器
- keepalived是开源的可以通过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协议的
2.用keepalived配置高可用的集群
1).首先准备两台机器在两台机器上都要安装keepalived其中一台作为master另一台机器作为backup,两台机器上都要安装nginx服务我们这里设置192.168.126.128作为主(master)192.168.126.129作为(从)
2).安装完成之后再/etc/keepalived/keepalived.conf文件里面是我们要配置的文件,我们可以先把其清空掉之后再进行从配置文件清空配置文件的命令是 > /etc/keepalived/keepalived.conf之后再增加我们要配置的文件内容,内容如下,这里需要注意的几个点其中一个点是id 51,这里要和backup的配置文件内容一样还有指定的虚拟ip100结尾的,权重100要比backup上面的权重要高,还有就是不要忘记我们的制定的脚本路径等一下我们要创建一个脚本并增加里面的配置文件
3).配置好文件内容之后要进行创建我们上面配置文件制定的脚本并在脚本里面增加如下内容,并给脚本一个755权限,配置完成之后就要启动keepalived服务。在启动之前先看一下防火墙有没有开启如果开启了就先关闭以免后面影响我们实验,开启可能会导致我们的keepalivid服务不能直接带起nginx服务
配置backup上面的配置
步骤基本和配置master上面的步骤几乎是一模一样就是在配置/etc/keepalived/keepalived.conf里面的配置文件不一样还有执行的脚本,我这里就不一一详解了,我把backup上面的配置给截屏过来,在backup上面配置要先进行安装keepalived和nginx之后编辑/etc/keepalived/keepalived.conf配置文件,先把文件清空之后再进行把下面的配置文件内容给粘贴到backup里面的/keepalived.conf里面的配置文件里面之后创建一个对应的脚本并给定755权限,在backup上面还要检查一下防火墙有没有开启如果开启了就要先关闭掉,还要把nginx服务给开启之后再启动keepalivied服务,为了确认keepalived服务配置是不是正确的我们可以先关闭nginx服务之后再进行检查nginx的进程,如果有nginx进程说明我们的配置是正确的
下面就要进行测试可以通过浏览器上面进行测试也可以通过curl来进行测试
在浏览器上输入共同拥有的虚拟ip发现会放到master上面去,为了演示宕机,我们可以把master上面的keepalived的服务给关闭掉之后再浏览器上进行访问看看到底会不会访问我们的backup
关闭之后再进行访问发现会反问到我们的backup上面去
3.负载均衡集群介绍
- 主流的负载均衡开源软件: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集群采用三层结构
- 负载调度器(load balancer)或者叫分发器(Load Runner),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的
- 服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等
- 共享存储(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
4.LVS NAT模式搭建
试验原理:
LVS NAT模式借助iptables的nat表来实现:
- 用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的rs上去
- rs需要设定网关为分发器的内网ip
- 用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈
- 在nat模式中,只需要分发器有公网ip即可,所以比较节省公网ip资源
1).这里做实验要准备三台虚拟机其中一台机器作为主相当于接收客户端的请求,另外两台机器作为被分发的对象把处理好的数据在返回给主上面的机器,这里就不需要设置外网ip地址,只要有一台机器设置好ip就好了,但需要保证三台机器之间能够相互通信,我们先给主上面的机器在增加一个网卡,这个新增的网卡要设置仅主机模式,然后在电脑的cmd上面进行ping看看能不能ping通我们新设置的网卡,由于之前我已经添加好了新的网卡,具体可以看我的另一篇文章,同时还要把防火墙给关闭掉在三台机器上进行设置还要把另外两台机器上的网关进行设置一下
2).在三台机器上进行配置好了网卡并关闭防火墙之后下面就要进行再主上面进行安装ipvsadm,安装完成之后还要进行编辑一个脚本并给脚本一个755权限,之后再启动脚本,并增加配置内容如下图所示,另外两台机器上面都要进行开启nginx服务否则不能做成功,分别在另外两台机器上设置头文件方便等一下做实验为了方便区分
3).启动在主上面的脚本然后进行测试,如果能够平均访问两台机器说明是正确的,做实验最好不要用浏览器进行测试由于内核原因的干扰,所以在虚拟机上使用curl进行来访问,使用curl进行访问,访问的ip是我们配置新的仅主机模式的ip