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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence相关的知识,希望对你有一定的参考价值。

一.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

技术分享


安装包依赖

技术分享

技术分享


配置指定路径

技术分享

技术分享


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

技术分享


编译后做成*.rpm技术分享


安装做好后的haproxy包

技术分享


2.配置haproxy

复制模版配置文件

技术分享


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

技术分享

技术分享


配置主配置文件

技术分享

技术分享

技术分享


3.测试

服务端口已经打开

技术分享


可以轮询

技术分享


haproxy监控页面正常

技术分享


haproxy正常

技术分享


五.Haproxy日志的配置

vim /etc/rsyslog.conf

技术分享

技术分享

技术分享


测试显示日志正常

技术分享

技术分享


六.调度算法的设置


技术分享

1.默认为rr轮询


2.设置权重weight 2

技术分享

技术分享


server2的权重变大

技术分享


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

技术分享

技术分享

技术分享


七.设置动态页面访问php

1.载server1上配置文件

技术分享

技术分享


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

技术分享


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

技术分享


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

技术分享

技术分享



3.在客户机测试

技术分享


八.设置acl禁止访问用户

技术分享

技术分享

客户机172.25.29.250无法访问

技术分享



九.acl设置重定向


技术分享


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

技术分享

将本机的httpd改为8080端口

技术分享

技术分享

技术分享

十.acl设置动态写入

技术分享

1.设置配置

技术分享

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

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


技术分享

技术分享


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

技术分享


在server3上设置好权限

技术分享


4.在客户机上测试

可以上传图片

技术分享

可以访问images目录下的图片

技术分享

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


1.安装配置

技术分享

技术分享


bindnetaddr 设置网段

多波设置改变一个mcastaddr和mcastport

技术分享

底下添加service

技术分享


server4与server1同样配置

技术分享

技术分享


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

技术分享


crmsh作为pacemaker的接口,而安装crmsh需要依赖pssh技术分享

技术分享


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

技术分享


技术分享


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设备,因此在配置集群的全局属性时要对其禁用
       ②、当一个集群没有法定票数时,资源是不会正常转移的,当一个节点出现故障时,资源不会正常的转移到正常的节点上,就会导致所有的资源都故障了。所以,应该定义法定票数不足时做忽略而不是停止所有资源

技术分享



5.安装fence

在server1上安装fence

技术分享


在客户机上安装fence


技术分享

技术分享

技术分享


端口1229已经开打

技术分享


6.在server4上配置fence机制技术分享


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

技术分享


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

技术分享


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

技术分享


技术分享


8.测试fence机制

技术分享

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

技术分享

技术分享


技术分享


技术分享

技术分享



十二.添加负载均衡Haproxy

1.server4配置haproxy

技术分享

修改绑定的VIP

技术分享


将server1的haproxy传给server4

技术分享


2.server4安装haproxy

在高可用上配置haproxy

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

在资源里更新server1 的haproxy

技术分享

技术分享


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

技术分享

技术分享



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

技术分享

技术分享

技术分享


server4网卡down掉,服务到server1

技术分享

技术分享

技术分享

技术分享

技术分享



以上是关于Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence的主要内容,如果未能解决你的问题,请参考以下文章

Linux企业运维——K8s高可用集群架构搭建详解

Linux企业运维——K8s高可用集群架构搭建详解

企业实战(22)基于Haproxy负载均衡+Keepalived高可用集群实战详解

Linux运维:测试HAProxy+Keepalived高可用负载均衡集群

Haproxy+keepalived高可用集群实战

Linux运维:搭建HAProxy+Keepalived高可用负载均衡系统