Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

时间:2021-04-28 03:23:52

一.Haproxy简介

Haproxy是一个使用C语言编写的*及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

 

.HAProxy的特点
1、支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
3、支持url检测后端的服务器出问题的检测会有很好的帮助。
4、更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
5、单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
6HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
9、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie
10、不能做Web服务器即Cache


三.高可用corosync+pacemaker介绍

高可用架构由两个核心部分组成,一个是心跳检测,判断服务器是否正常运行;一个是资源转移,用来将公共资源在正常服务器和故障服务器之间搬动。整个运行模式就是心跳检测不断的在网络中检测各个指定的设备是否能够正常响应,如果一旦发生设备故障,就由资源转移功能进行应用的切换,以继续提供服务。

corosync,心跳信息传输层,它是运行在每一个主机上的一个进程 。
pacemaker是一个集群管理器。它利用推荐集群基础设施(OpenAIS 或heartbeat)提供的消息和成员能力,由辅助节点和系统进行故障检测和回收,实现性群集服务(亦称资源)的高可用性。用于资源转移。


四.环境配置


客户机:172.25.29.250

服务端

server1:172.25.29.1   haproxy  httpd8080  corosync+pacemaker

server4:172.25.29.4   corosync+pacemaker

RS:

server2:172.25.29.2   httpd

server3:172.25.29.3   httpd



1.安装haproxy

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


安装包依赖

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


配置指定路径

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


为了方便创建rpm包,先安装rpmbuild包

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


编译后做成*.rpmLinux的企业-高可用集群Haproxy+corosync+pacemaker+fence


安装做好后的haproxy包

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


2.配置haproxy

复制模版配置文件

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


创建haproxy用户和添加内核最大连接数量8000

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


配置主配置文件

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


3.测试

服务端口已经打开

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


可以轮询

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


haproxy监控页面正常

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


haproxy正常

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


五.Haproxy日志的配置

vim /etc/rsyslog.conf

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


测试显示日志正常

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


六.调度算法的设置


Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

1.默认为rr轮询


2.设置权重weight 2

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


server2的权重变大

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


3.设置source算法原地址保持

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


七.设置动态页面访问php

1.载server1上配置文件

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


2.在server3上安装php,配置httpd

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


设置访问页面vim /var/www/html/index.php

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


设置httpd默认优先访问index.php

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence



3.在客户机测试

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


八.设置acl禁止访问用户

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

客户机172.25.29.250无法访问

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence



九.acl设置重定向


Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


设置访问错误的重定向到本机的8080端口

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

将本机的httpd改为8080端口

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

十.acl设置动态写入

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

1.设置配置

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

2.在server2上安装php,设置好所需要的测试文件

在默认的html下放置上传文件的upload_file.php upload目录


Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


3.设置好权限,并将文件传给server3

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


在server3上设置好权限

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


4.在客户机上测试

可以上传图片

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

可以访问images目录下的图片

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

十一.安装高可用pacemaker+corosync集群


1.安装配置

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


bindnetaddr 设置网段

多波设置改变一个mcastaddr和mcastport

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

底下添加service,0表示自动启动pacemarker

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


server4与server1同样配置

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


2.校验集群配置文件,显示错误,需要安装接口插件crmsh

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


crmsh作为pacemaker的接口,而安装crmsh需要依赖psshLinux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


3.两边启动corosync服务后,在server1上 crm_mon  监控集群健康状态,server1与server4 online

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


启动需要fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


4.在server4上使用crm相关命令管理集群

STONITH
       shoot the other node in the head,这个RA类型主要是做节点隔离的,专为配置stonith设备耐用。
       使用STONITH主要目的就是为了避免由于网络原因,节点之间不能完全通信(比如分为了两部分,左边3台,右边2台),左边的3台能收到各自的心跳信息,右边的2台也可以收到各自的心跳信息,就是左边部分和右边部分收不到各自的心跳信息,因此,它们都各自以为对方故障了,就会各自重新推选出一台做为DC(Designated Coordinator),从而出现了两个集群,这就导致了资源争用;如果恰好双方都往其共享存储写数据,很可能就会导致文件系统崩溃,这种现象就叫做集群分裂(brain-split)。
       为了避免集群分裂,就出现了法定票数(quorum,票数>半数票数的集群成为满足法定票数)这一说法,就是在集群通信故障时,为了避免资源抢占,应该让一方放弃成为集群,具体应该哪方放弃呢?这就是投票的结果了,只有具有法定票数的一方才有资格做为集群,相反的一方就应该退出集群,但它放弃后并不代表服务停止,所以应该让其释放资源,关闭电源。stonith设备就是在这里用的,要让退出集群的设备彻底失效,电源交换机就是这个原理了
       而如果一个集群只有两个节点的话,这又是一种特殊的集群,万一出现集群分裂后,它们双方可能都不会具有法定票数,那结果可想而知,资源不会转移,导致整个资源都故障了,因为没有仲裁设备
       说这么多,就是为了说明下面两个比较重要的概念
       ①、corosync默认启用了stonith功能,而我们要配置的集群并没有stonith设备,因此在配置集群的全局属性时要对其禁用
       ②、当一个集群没有法定票数时,资源是不会正常转移的,当一个节点出现故障时,资源不会正常的转移到正常的节点上,就会导致所有的资源都故障了。所以,应该定义法定票数不足时做忽略而不是停止所有资源

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence



5.安装fence

在server1上安装fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


在客户机上安装fence


Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


端口1229已经开打

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


6.在server4上配置fence机制Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


在server1上crm_mon监控集群健康状态,fence已经启动正常

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


7.在server4上配置虚拟IP,并重启corosync服务

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


在server1上crm_mon监控集群健康状态,vip已经启动正常

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


8.测试fence机制

pacemaker节点数需大于2,因为只有两个节点没有办法提供仲裁,忽略这个系统条件,要不然无法执行

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

关闭server4上节点,服务到server1上

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


附:服务器自带内置fence设置,两台机器的为fence IP 为172.25.254.203    172.25.254.204

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence



十二.添加负载均衡Haproxy

1.server4配置haproxy

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

修改绑定的VIP

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


将server1的haproxy传给server4

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


2.server4安装haproxy

在高可用上配置haproxy

crm node standby操作节点的备用属性以确定资源是否可在此节点上运行

在资源里更新server1 的haproxy

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


3.server4节点上线,集群正常,VIP已经到server4

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence



4.测试,停止server4节点,服务到server1

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence


server4网卡down掉,服务到server1

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence

Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence