Pacemaker + Haproxy+fence实现高可用集群

前言:

      什么是Pacemaker。

Pacemaker是Linux环境中使用最为广泛的开源集群资源管理器。

Pacemaker是一个集群资源管理器。它利用集群基础构件(Op

enAIS 、heartbeat或corosync)提供的消息和成员管理能力来

探测并从节点或资源级别的中恢复,以实现群集服务(亦称资源

)的最大可用性。pacemaker就是Heartbeat 到了V3版本后拆分

出来的资源管理器(CRM),用来管理整个HA的控制中心,要想使

用pacemaker配置的话需要安装一个pacemaker的接口,它的这

个程序的接口叫crmshell,它版本的pacemaker已经被独立出来了

,不再是pacemaker的组成部分。

什么是HAproxy

HAProxy 提供高可用负载均衡以及基于TCP 和 HTTP 应用的代理,

haproxy是轻量级的擅长处理并发。但与nginx不同的是Haproxy并

不是Http服务器。很多带反向代理均衡负载的产品,如nginx,apach

eproxy,都是清一色是WEB服务器。简单说,就是他们能自身提供静

态(html,jpg,gif..)或动态(PHP,cgi..)文件的传输以及处理。而Haproxy

仅仅专门是一款的用于均衡负载的应用代理。其自身并不能提供http

服务。

正文:

客户端:172.25.68.250

后台服务器:web1 : 172.25.68.2

                        web2 : 172.25.68.3

轮询调度器1:172.25.68.1

轮询调度器2:172.25.68.4

虚拟主机IP : 172.25.68.100

 

一、进行Haproxy软件包的解压和软件的安装(这里我们使用rpm包进行软件的

安装)

 1、进行压缩包的解压和软件包转换为rpm类型(压缩包在官网可以下载)

二、进行相关软件的安装

yum  install -y rpm-build     ###进行rpm转换包软件的下载
yum install pcre-devel        ###进行软件依赖性的安装
yum install gcc -y
rpmbuild -th haproxy-1.7.3.tar.gz     ###将安装包转换为rpm包
rpm -ivh hsproxy-1.7.3-1.x86_64.rpm   ###进行haproxy软件的安装

1、进行rpm转换包软件的下载

2、进行软件依赖性的安装

3、将安装包转换为rpm包

4、进行软件的安装

三、进行配置文件的复制和编辑

cp content-sw-sample.cfg /etc/haproxy/haproxy.cfg  ###进行配置文
                                                   摸版的复制
vim /etc/haproxy/haproxy.cfg      ###进行配置文件的编辑
/etc/init.d/haproxy start         ###进行服务的重启

四、在server2和server3上进行httpd的安装和服务的启动

yum install httpd -y       ###进行服务的启动
/etc/init.d/httpd start    ###进行服务的重启

 1、在server2上进行httpd的安装

2、在server2上进行服务的启动

3、进行配置文件默认发布文件的编辑

4、在server3上进行httpd的安装

5、进行服务的启动

6、进行配置文件默认发布文件的编辑

四、在真机上进行相关的测试

五、在server4作和server1相同的配置

1、将server1中rpm复制给server4,再进行软件的安装

在server1上

scp haproxy.cfg server4:/etc/haproxy/haproxy.cfg  ###进行软件包的复制
scp /etc/haproxy/haproxy.cfg         ###进行配置文件的复制

在server4上进行软件的安装和服务的重启

rpm -ivh haproxy-1.7.3-1.x86_64.rpm -y  ###进行软件的安装
/etc/init.d/haproxy start    ###进行服务的启动

六、在真机上进行验证(是否server1和server4完成相同的服务)

七、进行Pacemaker的安装与配置

在server1上

1、进行相关软件的安装

yum install corosync.x86_64 0:1.4.1-17.el6   -y ###进行Corosync是集群管理套件部分
                                                软件的安装
yum install pacemaker.x86_64 0:1.1.10-14.el6 -y ###进行集群资源管理器软件的安装
rpm -ivh crmsh-1.2.6-0.rc2.2.1.x86_64.rpm       ###安装crm shell管理
yum install pssh-2.3.1-2.1.x86_64.rpm           ###进行依赖性的安装

(1)进行进行集群资源管理器软件的安装

(2)进行crm shell 管理软件的安装(该软件包的下载地址:http://rpm.pbone.net/index.php3/stat/4/idpl/23861008/dir/RedHat%C2%A0EL%C2%A06/com/crmsh-1.2.6-0.rc2.2.1.x86_64.rpm.html

其中需要进行包的依赖性的安装

 yum install redhat-rpm-config -y    ###进行软件的依赖性的安装

进行软件的安装:

2、进行服务的配置

cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf  ###进行配置
                                                                   文件摸版的复制
vim /etc/corosync/corosync.conf    ###进行配置文件的编辑
/etc/init.d/corosync start         ###进行服务的启动

编辑内容如下:

# Plearead the corosync.conf.5 manual page
compatibility: whitetank

totem {
        version: 2
        secauth: off
        threads: 0
        interface {
                ringnumber: 0
                bindnetaddr: 172.25.68.1
                mcastaddr: 226.94.1.1
                mcastport: 5405
                ttl: 1
        }
}

logging {
        fileline: off
        to_stderr: no
        to_logfile: yes
                                                                        1,6           Top
        to_syslog: yes
        logfile: /var/log/cluster/corosync.log
        debug: off
        timestamp: on
        logger_subsys {
                subsys: AMF
                debug: off
        }
}

amf {
        mode: disabled
}

service {
        name:pacemaker
        ver:0 1

}
                                                                        39,1          Bot

3、在server4上进行相同的动作

yum install corosync.x86_64 0:1.4.1-17.el6   -y ###进行Corosync是集群管理套件部分
                                                软件的安装
yum install pacemaker.x86_64 0:1.1.10-14.el6 -y ###进行集群资源管理器软件的安装
rpm -ivh crmsh-1.2.6-0.rc2.2.1.x86_64.rpm       ###安装crm shell管理
yum install pssh-2.3.1-2.1.x86_64.rpm           ###进行依赖性的安装

(1)进行进行集群资源管理器软件的安装

(2)进行crm shell 管理软件的安装(该软件包的下载地址:http://rpm.pbone.net/index.php3/stat/4/idpl/23861008/dir/RedHat%C2%A0EL%C2%A06/com/crmsh-1.2.6-0.rc2.2.1.x86_64.rpm.html

4、同步server1的配置文件

 scp corosync.conf server4:/etc/corosync/corosync.conf   ###进行配置文件的复制
 /etc/init.d/corosync  start        ###进行服务的启动

八、对当前的配置进行检查和进行虚拟IP的添加

1、进行配置文件的校验

crm_verify -LV   ###进行配置文件的检查

这是由于enable STONITH的原因

STONITH 是Shoot-The-Other-Node-In-The-Head(爆头)的简称,

并且它能够保护数据使其不会因为节点异常或者同时访问而遭到损坏.

property stonith-enabled=false 表示资源不会迁移

2、使用server1和server4使用交互式配置使集群校验不进行报错

进行STONITH的关闭

crm               ###进入交互模式

3、再次进行校验

4、进行虚拟IP的添加

其中property no-quorum-policy=ignore关闭集群对节点数量的检查,

节点server1如果故障,节点server4收不到心跳请求,直接接管程序,

保证正常运行,不至于一个节点崩掉而使整个集群崩掉.

5、进行节点之间情况的查看

6、进行虚拟IP漂移的测试

关闭server4中的corosync服务的关闭,查看虚拟主机IP是否发生漂移

/etc/init.d/corosync  stop    ###进行服务的关闭

7、向集群添加haproxy 服务;并绑定在一台主机上,避免资源漂移,将他们

绑定在一个组上如果其中有一个节点挂了,还剩一个节点,那么crm不会把资

源分配给它,crm认为这是单机,这里忽略他的检查,只有一个节点时,资源

会转移到此节点。

8、进行监控的查看

九、进行测试:

/etc/init.d/corosync   stop            ###关闭server1的服务

使用真机进行访问(保证server2和server3的httpd处于启动状态,server1 corosynce服务处于开启状态)

进行监控的查看

十、含fence设备的高可用实现

1、在真机上进行软件的安装

yum search fence-cirtd     ###进行软件的查找
yum install fence-virt-libvirt.x86_64 fence-virtd-multicast.x86_64 
fence-virtd.x86_64         ###进行软件的安装
mkdir /etc/cluster         ###创建密码生成目录

2、进行密钥的生成

fence_virtd -c       ###进行密钥文件的生成

3、如果密钥文件没有生成(可以进行手动的生成)

dd  if=/dev/urandom  of=fence_xvm.key  bs=128  count=1   ###随即生成密钥文件的大小
ls /etc/cluster/fence_xvm.key   

4、将生成的密钥文件发送给server1和server4(注意在发送之前分别在

server1和server4上进行/etc/cluster/目录的创建)

scp fence_xvm.key server1:/etc/cluster/fence_xvm.key      ###进行密钥文件的发送
scp fence_xvm.key server4:/etc/cluster/fence_xvm.key      ###进行密钥文件的发送
systemctl start fence_virtd.service     ###在真机上进行服务的启动

5、在server1和server4中执行stonith_admin -l  查看是否具有fence代理

即fence_xvm.如果没有发现该设备则需要安装fence-virt-0.2.3-15.el6.x86_64,  

stonith_admin -I    ###进行fence设备的查看

6、在corosync策略中添加fence(当节点出现问题时,会进行节点的自启动)

在server1中添加即可:

crm                           ###进入管理模式
property stomith-enabled=true
primitive vmfence stonith:fence_xvm params pcmk_host_map="server1:vn1;server4:vm4" op monitor interval=30s       ###进行策略的添加
s

7、进行监控的查看

crm_mon        ###进行监控的查看

十一、进行fence代理的测试

此时当我们对虚拟机server1使用命令---->echo c> /proc/sysrq-trigger (模拟内核崩溃)

的时候,它会进行重启并且添加在可用节点中。

 echo c> /proc/sysrq-trigger    ###进行内核崩溃的测试,验证fence是否生效

注意的是:  注意:当添加vmfence时,出现 vmfence_start_0 on server1 'unknown error' (

1)错误的时候,我们可以进行如下操作:(对之前的数据进行清除)使用delete vmfence进行之

前部署的删除,再进行vmfence策略的重新添加

猜你喜欢

转载自blog.csdn.net/weixin_43831670/article/details/89461072