前言:

      什么是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类型(压缩包在官网可以下载)

 

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败

Pacemaker程序启动失败 pacemaker架构_资源管理器_02

 

二、进行相关软件的安装

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

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

Pacemaker程序启动失败 pacemaker架构_资源管理器_03

Pacemaker程序启动失败 pacemaker架构_资源管理器_04

 

Pacemaker程序启动失败 pacemaker架构_配置文件_05

Pacemaker程序启动失败 pacemaker架构_vim_06

 

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

Pacemaker程序启动失败 pacemaker架构_vim_07

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_08

 

3、将安装包转换为rpm包

Pacemaker程序启动失败 pacemaker架构_vim_09

Pacemaker程序启动失败 pacemaker架构_配置文件_10

 

4、进行软件的安装

Pacemaker程序启动失败 pacemaker架构_vim_11

Pacemaker程序启动失败 pacemaker架构_资源管理器_12

 

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

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

Pacemaker程序启动失败 pacemaker架构_配置文件_13

Pacemaker程序启动失败 pacemaker架构_资源管理器_14

Pacemaker程序启动失败 pacemaker架构_vim_15

 

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

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

 1、在server2上进行httpd的安装

Pacemaker程序启动失败 pacemaker架构_vim_16

Pacemaker程序启动失败 pacemaker架构_配置文件_17

 

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

Pacemaker程序启动失败 pacemaker架构_vim_18

 

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

Pacemaker程序启动失败 pacemaker架构_资源管理器_19

 

4、在server3上进行httpd的安装

Pacemaker程序启动失败 pacemaker架构_配置文件_20

Pacemaker程序启动失败 pacemaker架构_资源管理器_21

 

5、进行服务的启动

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_22

 

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

Pacemaker程序启动失败 pacemaker架构_vim_23

 

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

1、进行相关的测试

(1)、真机上进行测试

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_24

 

(2)、使用浏览器进行访问

Pacemaker程序启动失败 pacemaker架构_配置文件_25

 

 

2、进行浏览器页面的刷新时间的设置和登陆用户的设定

(1)进行配置文件的编辑

vim /rtv/haproxy/haproxy.cfg         ###进行配置文件的编辑
/etc/init.d/haproxy   reload         ###进行服务配置的重新加载

 

Pacemaker程序启动失败 pacemaker架构_配置文件_26

 

(2)使用浏览器进行验证

Pacemaker程序启动失败 pacemaker架构_配置文件_27

Pacemaker程序启动失败 pacemaker架构_配置文件_25

 

 

3、进行访问黑名单的设定

(1)进行haproxy配置文件的编辑和服务的重新加载

vim /etc/haproxy/haproxy.cfg          ###进行服务配置文件的编辑
/etc/init.d/haproxy                   ###进行服务的重新加载

Pacemaker程序启动失败 pacemaker架构_资源管理器_29

 

(2)在真机上进行相应地测试

Pacemaker程序启动失败 pacemaker架构_资源管理器_30

 

 

4、当访问服务受到限制时进行输出地重定向

(1)进行配置文件地编辑(在server1上进行httpd地下载)

vim /etc/haproxy/haproxy.cfg     ###进行配置文件地编辑
/etc/init.d/haproxy              ###进行服务的重新加载

Pacemaker程序启动失败 pacemaker架构_vim_31

 

(2)进行httpd软件的下载和默认发布文件的编辑

yum install httpd   -y          ###进行httpd软件的安装
vim /var/www/htnl/index.html    ###进行默认发布目录的编辑
vim /etc/httpf/conf/httpd.conf  ###进行httpd服务端口的该版
/etc/init.d/httpd  start        ###进行httpd服务的开启

进行软件的安装

Pacemaker程序启动失败 pacemaker架构_资源管理器_32

Pacemaker程序启动失败 pacemaker架构_资源管理器_33

 

进行端口的改变和服务的启动

Pacemaker程序启动失败 pacemaker架构_vim_34

 

进行默认发布文件的编辑

Pacemaker程序启动失败 pacemaker架构_vim_35

Pacemaker程序启动失败 pacemaker架构_资源管理器_36

 

(3)使用浏览器进行验证

Pacemaker程序启动失败 pacemaker架构_资源管理器_37

 

 

5、实现web服务器的动静分离

(1)进行配置文件的编辑

Pacemaker程序启动失败 pacemaker架构_资源管理器_38

 

(2)在server2上进行php的下载

Pacemaker程序启动失败 pacemaker架构_资源管理器_39

Pacemaker程序启动失败 pacemaker架构_配置文件_40

 

在server2上进行默认发布文件编辑

Pacemaker程序启动失败 pacemaker架构_配置文件_41

 

(3)在浏览器上进行相关的测试

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_42

Pacemaker程序启动失败 pacemaker架构_vim_43

 

6、实现haproxy日志的打开和查看

(1)、进行配置文件的编辑

vim /etc/haproxy/haproxy.cfg          ###进行配置文件的编辑

Pacemaker程序启动失败 pacemaker架构_配置文件_44

 

(2)、在日志配置文件中进行设定

vim /etc/rsyslog.conf               ###进行日志配置文件的编辑
/etc/init.d/rsyslog  restart        ###进行服务的重启

Pacemaker程序启动失败 pacemaker架构_配置文件_45

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_46

 

(3)、在真机上进行测试

Pacemaker程序启动失败 pacemaker架构_资源管理器_47

 

(4)在server1上进行日志的查看

tail -f /var/log/haproxy.log     ###进行haproxy服务日志的查看

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_48

 

 

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

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

 

在server1上

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

Pacemaker程序启动失败 pacemaker架构_vim_49

Pacemaker程序启动失败 pacemaker架构_配置文件_50

 

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

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

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_51

Pacemaker程序启动失败 pacemaker架构_资源管理器_52

 

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

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_53

 

七、进行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)进行进行集群资源管理器软件的安装

Pacemaker程序启动失败 pacemaker架构_资源管理器_54

Pacemaker程序启动失败 pacemaker架构_vim_55

 

(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    ###进行软件的依赖性的安装

Pacemaker程序启动失败 pacemaker架构_配置文件_56

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_57

 

进行软件的安装:

Pacemaker程序启动失败 pacemaker架构_vim_58

Pacemaker程序启动失败 pacemaker架构_资源管理器_59

Pacemaker程序启动失败 pacemaker架构_资源管理器_60

 

Pacemaker程序启动失败 pacemaker架构_资源管理器_61

Pacemaker程序启动失败 pacemaker架构_资源管理器_62

Pacemaker程序启动失败 pacemaker架构_配置文件_63

 

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

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_64

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)进行进行集群资源管理器软件的安装

Pacemaker程序启动失败 pacemaker架构_vim_65

Pacemaker程序启动失败 pacemaker架构_配置文件_66

 

(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

Pacemaker程序启动失败 pacemaker架构_资源管理器_67

Pacemaker程序启动失败 pacemaker架构_配置文件_68

 

Pacemaker程序启动失败 pacemaker架构_vim_69

Pacemaker程序启动失败 pacemaker架构_配置文件_70

 

 

4、同步server1的配置文件

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

Pacemaker程序启动失败 pacemaker架构_资源管理器_71

Pacemaker程序启动失败 pacemaker架构_资源管理器_72

 

 

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

1、进行配置文件的校验

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

Pacemaker程序启动失败 pacemaker架构_资源管理器_73

这是由于enable STONITH的原因

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

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

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

 

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

进行STONITH的关闭

crm               ###进入交互模式

Pacemaker程序启动失败 pacemaker架构_vim_74

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_75

 

3、再次进行校验

Pacemaker程序启动失败 pacemaker架构_vim_76Pacemaker程序启动失败 pacemaker架构_配置文件_77Pacemaker程序启动失败 pacemaker架构_资源管理器_78Pacemaker程序启动失败 pacemaker架构_配置文件_79

Pacemaker程序启动失败 pacemaker架构_资源管理器_80

 

4、进行虚拟IP的添加

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_81

Pacemaker程序启动失败 pacemaker架构_配置文件_82

Pacemaker程序启动失败 pacemaker架构_配置文件_83

 

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

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

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

 

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

Pacemaker程序启动失败 pacemaker架构_资源管理器_84

 

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

Pacemaker程序启动失败 pacemaker架构_vim_85

 

Pacemaker程序启动失败 pacemaker架构_资源管理器_86

 

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

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

Pacemaker程序启动失败 pacemaker架构_配置文件_87

Pacemaker程序启动失败 pacemaker架构_vim_88

Pacemaker程序启动失败 pacemaker架构_配置文件_89

Pacemaker程序启动失败 pacemaker架构_配置文件_90

Pacemaker程序启动失败 pacemaker架构_vim_91

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_92

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_93Pacemaker程序启动失败 pacemaker架构_配置文件_947、向集群添加haproxy 服务;并绑定在一台主机上,避免资源漂移,将他们

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

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

会转移到此节点。

Pacemaker程序启动失败 pacemaker架构_资源管理器_95

 

8、进行监控的查看

Pacemaker程序启动失败 pacemaker架构_资源管理器_96Pacemaker程序启动失败 pacemaker架构_资源管理器_97

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_98Pacemaker程序启动失败 pacemaker架构_配置文件_99

Pacemaker程序启动失败 pacemaker架构_vim_100

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_101

 

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_102

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_103

九、进行测试:

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

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

Pacemaker程序启动失败 pacemaker架构_vim_104

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_105

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_106

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_107Pacemaker程序启动失败 pacemaker架构_vim_108

Pacemaker程序启动失败 pacemaker架构_vim_109

 

进行监控的查看

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_110

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_111

十、含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       ###进行密钥文件的生成

Pacemaker程序启动失败 pacemaker架构_配置文件_112

Pacemaker程序启动失败 pacemaker架构_资源管理器_113

Pacemaker程序启动失败 pacemaker架构_vim_114

Pacemaker程序启动失败 pacemaker架构_资源管理器_115

Pacemaker程序启动失败 pacemaker架构_vim_116

 

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_117

 

 

Pacemaker程序启动失败 pacemaker架构_vim_118

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

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

Pacemaker程序启动失败 pacemaker架构_资源管理器_119

 

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设备的查看

Pacemaker程序启动失败 pacemaker架构_vim_120

Pacemaker程序启动失败 pacemaker架构_配置文件_121Pacemaker程序启动失败 pacemaker架构_vim_122

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_123

 

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

Pacemaker程序启动失败 pacemaker架构_配置文件_124Pacemaker程序启动失败 pacemaker架构_配置文件_125

Pacemaker程序启动失败 pacemaker架构_配置文件_126

 

7、进行监控的查看

crm_mon        ###进行监控的查看

Pacemaker程序启动失败 pacemaker架构_vim_127

 

十一、进行fence代理的测试

Pacemaker程序启动失败 pacemaker架构_Pacemaker程序启动失败_128此时当我们对虚拟机server1使用命令---->echo c> /proc/sysrq-trigger (模拟内核崩溃)

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

 

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

Pacemaker程序启动失败 pacemaker架构_配置文件_129Pacemaker程序启动失败 pacemaker架构_配置文件_129Pacemaker程序启动失败 pacemaker架构_配置文件_129

Pacemaker程序启动失败 pacemaker架构_配置文件_132

Pacemaker程序启动失败 pacemaker架构_配置文件_133

 

 

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

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

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

Pacemaker程序启动失败 pacemaker架构_资源管理器_134

Pacemaker程序启动失败 pacemaker架构_资源管理器_135