pacemaker corosync 做高可靠的WEB HA

配置部署HA集群

前期环境准备

各节点(即主机)的主机名与“uname -n”的结果保持一致

# pcmk-1+pcmk-2:
vi /etc/hosts
192.168.10.253  pcmk-1.clusterlabs.org pcmk-1
192.168.10.254  pcmk-2.clusterlabs.org pcmk-2
#pcmk-1:
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=pcmk-1
#pcmk-2:
NETWORKING=yes
HOSTNAME=pcmk-2

各节点间可基于密钥进行SSH通信,而无需密码

#产生密钥
ssh-keygen -t dsa -f ~/.ssh/id_dsa -N ""
#拷贝受权密钥
cp .ssh/id_dsa.pub .ssh/authorized_keys
#拷贝密钥到 pcmk-2虚拟机
scp -r .ssh pcmk-2:
#查看ssh 是否免密码登陆
ssh pcmk-2 -- uname -n


关闭防火墙:

#停止防火墙
service iptables stop
#查看防火墙的状态
service iptables status
#开机启动 防火墙停止
chkconfig iptables off
#开机启动 查看防火墙状态

部署方案:

安装配置

yum install pacemaker


配置: pcmk-1 和 pcmk-2 的Corosync 配置文件

修改Corosync的核心模板配置文件 改为corosync.conf
#复制corosync的core文件
cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
#编辑core文件
vi /etc/corosync/corosync.conf

# Please read the corosync.conf.5 manual page
compatibility: whitetank

totem {
        version: 2      #版本号
        secauth: off	#是否启动Corosync认证。使用corosync-keygen命令生成密钥
        threads: 0      #用于安全认证开启的线程,0为不急于线程模式工作。默认就行
        interface {
                ringnumber: 0
                bindnetaddr: 192.168.10.253     #修改心跳线网段
                mcastaddr: 239.255.1.1          #组播传播心跳信息
                mcastport: 5405
                ttl: 1
        }
}

logging {
        fileline: off
        to_stderr: no
        to_logfile: yes
        logfile: /var/log/cluster/corosync.log  #日志输出位置
        to_syslog: no                           #关闭系统日志输出
        debug: off
        timestamp: on
        logger_subsys {
                subsys: AMF
                debug: off
        }
}

aisexec {
 user: root
 group: root
}

#启用pacemaker
service {
 name: pacemaker
 ver: 0
}

启动:pcmk-1 和 pcmk-2 的Corosync

#pcmk-1启动 corosync
service corosync start
#pcmk-2启动 corosync
ssh pcmk-2 "service corosync start"



检查:pcmk-1 和 pcmk-2 的Corosync 是否启动

#查看 Corosync 是否启动 的命令
grep -e "corosync.*network interface" -e "Corosync Cluster Engine" -e "Successfully read main configuration file" /var/log/cluster/corosync.log

grep TOTEM /var/log/cluster/corosync.log

#查看 pacemaker 是否启动 的命令
grep pcmk_startup /var/log/cluster/corosync.log


检查CorosyncHA的状态:

#查看Corosync 集群状态
crm_mon 或 使用 crm status



安装:crmsh

#安装crmsh(注意:yum如果安装失败需要手动安装)
yum install crmsh


手动安装:下载包请点击链接

RHEL自6.4起不再提供集群的命令行配置工具crmsh,要实现对集群资源管理,还需要独立安装crmsh。 
crmsh的rpm安装可从如下地址下载(点击打开链接)http://download.csdn.net/download/qq_18600061/10175176

#需要手动下载这4个包
1. crmsh-3.0.0-6.1.noarch.rpm
2. crmsh-scripts-3.0.0-6.1.noarch.rpm
3. python-parallax-1.0.1-28.1.noarch.rpm
4. python-pssh-2.3.1-7.1.noarch.rpm
安装:

#先安装2、3、4 rpm包 序列为1的rpm有2个包的依赖
rpm -ivh python-p* crmsh-scripts-3.0.0-6.1.noarch.rpm


#安装 crmsh-3.0.0-6.1.noarch.rpm 报错有两个依赖包
rpm -ivh crmsh-3.0.0-6.1.noarch.rpm 

#安装依赖包 python-dateutil redhat-rpm-config
yum install python-dateutil redhat-rpm-config

#重新安装 crmsh-3.0.0-6.1.noarch.rpm
rpm -ivh crmsh-3.0.0-6.1.noarch.rpm
#使用crmsh 命令:这时候能显示corosync的集群状态信息
crm status

查看Pacemaker 的默认配置:

crm configure show


查看Pacemaker 的默认XML配置:

crm configure show xml


检查配置的有效性:

crm_verify -L


关闭STONITH(而我们配置的集群并没有STONITH设备,因为在配置集群的全局属性时要对其禁用):

#关闭stonith属性(默认是开启的)
crm configure property stonith-enabled=false
#然后在检查:这时候就没有错误信息提示
crm_verify -L
#查看 配置多了一个stonith-enabled属性
crm configure show


添加pacemaker resource资源:

#查看 pacemaker 状态,可以看到2个节点,0个资源
crm status


添加VIP:

资源属性描述:

primitive                               :定义资源命令 
myip                                     :资源ID名,可自行定义 
ocf:heartbeat:IPaddr            :资源代理(RA) 
params ip=192.168.0.26      :定义VIP 
op monitor                            :监控该资源 
interval=30s                          :间隔时间 
timeout=20s                          :超时时间 
on-fail=restart                        :如服务非正常关闭,让其重启,如重启不了,再转移至其他节点

#添加crm管理heartbeat,绑定网卡资源(VIP)。

crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 params ip=192.168.0.222 cidr_netmask=32 op monitor interval=30s


添加 pacemaker 选举票数,如果票数只有2票,如果其中一个节点宕机了,防止脑裂不切换:

#不具备法定票数时采取的动作 

crm configure property no-quorum-policy=ignore


添加 资源黏性(防止资源在节点间频繁迁移):

#添加资源黏性
crm configure rsc_defaults resource-stickiness=100

安装httpd服务:

yum install httpd wget


pcmk-1 和 pcmk-2 添加httpd 的默认页面:

#pcmk-1 和 pcmk-2
vi /var/www/html/index.html
#pcmk-1 httpd 内容
<html>
<body>My Test Site - pcmk-1</body>
</html>


添加httpd服务 到pacemaker 资源中:

crm configure primitive WebSite ocf:heartbeat:apache params configfile=/etc/httpd/conf/httpd.conf op monitor interval=1min


添加pacemaker的排列约束(colocation)和顺序约束(order)(一般这两个是成对出现):
添加排列约束(colocation

crm configure colocation website-with-ip INFINITY: WebSite ClusterIP


添加顺序约束(order)

crm configure order apache-after-ip mandatory: ClusterIP WebSite


添加位置约束(location)

crm configure location prefer-pcmk-1 WebSite 50: pcmk-1

测试集群:http://10.157.32.222/ (此图后续上传,忽略地址,根据你实际的vip访问)

此时的集群状态pcmk-1和pcmk-2都是在线,master是pcmk-1服务上

这时候就能看到httpd转发到pcmk-1服务的 index.html



停止pcmk-1: service corosync stop

当前服务pcmk-1已经宕机


这时候可以看到pacemaker 已经切换到pcmk-2服务了



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值