corosync+pacemaker实现openstack HA(一)

使用corosync+pacemaker来实现openstack HA,本文主要介绍了corosync和pacemaker的安装和配置。


0.pacemaker资源介绍
Pacemaker 的资源主要有两类,即 LSB 和 OCF。
其中 LSB 即 Linux 标准服务,通常就是 /etc/init.d 目录下那些脚本。Pacemaker 可以用这些脚本来启停服务。在 crm ra list lsb 中可以看到。
另一类 OCF 实际上是对 LSB 服务的扩展,增加了一些高可用集群管理的功能如故障监控等和更多的元信息。可以通过 crm ra list ocf 看到当前支持的资源。
要让 pacemaker 可以很好的对服务进行高可用保障就得实现一个 OCF 资源。Pacemaker 自带的资源管理程序都在 /usr/lib/ocf/resource.d 下。


环境准备工作
1)各节点之间主机名相互解析
vim /etc/hosts
192.168.100.2 control.nsp.com control
192.168.100.3 compute1.nsp.com compute1
192.168.100.34 compute2.nsp.com compute2
2)各节点之间ssh互信
3)各节点直接ntp时间同步
①在一个节点上面搭建ntp server
在/etc/ntp.conf文件中加入如下行,然后启动ntpd
disable monitor
server 127.127.1.0
fudge 127.127.1.0 stratum 8
②在其他节点上面执行
ntpdate 192.168.100.2




1.安装corosync
yum install corosync
yum install pacemaker


2.安装crmsh(这个是crm命令之所以能够执行的关键)
rpm -ivh crmsh-2.1+git98-1.1.mira1.es.x86_64.rpm pssh-2.3.1-15.2.x86_64.rpm


3.配置corosync
1)生成秘钥
[root@node1corosync]#corosync-keygen  #文件保存于/etc/corosync/authkey
这时,我们将秘钥文件拷贝到node2节点中


2)配置见后面“corosync参考配置”


4.启动corocsync和pacemaker,注意是分别启动,现在用的corosync版本启动时不能把pacemaker拉起来
systemctl start corosync.service
systemctl start pacemaker.service


5.crm命令
crm ra list lsb/ocf #列出对于的lsb/ocf服务,/usr/lib/ocf/resource.d/存放了pacemaker自带的资源管理程序


crm configure edit/show #显示/编辑配置文件


crm status #显示状态


crm_mon  #查看所有的资源信息


crm resource stop vip #停止运行资源,然后才能删除资源


crm node standby compute1 #将节点置为从节点


crm node online compute1 #手动将节点重新上线 


crm resource cleanup p_neutron_agent_ovs


##删除资源时可以直接 crm configure edit 删除对应的资源配置,然后保存退出即可删除


crm ra meta agent_test  #查看名字为agent_test的meta信息


6.配置vip
[root@compute1 ~]# crm
crm(live)# configure
crm(live)configure# 
crm(live)configure# property no-quorum-policy="ignore"
crm(live)configure# property stonith-enabled="false"
crm(live)configure# commit
crm(live)configure# primitive mgt_vip ocf:heartbeat:IPaddr2 params ip="192.168.l00.10"
crm(live)configure# primitive pub_vip ocf:heartbeat:IPaddr2 params ip="10.25.49.10"
crm(live)configure# location vip__mgt-on-control-node mgt_vip 100: control
crm(live)configure# location vip__pug-on-compute1-node pub_vip 100: compute1
crm(live)configure# commit
crm(live)configure# verify  #检查语法错误


7.配置nsp
crm(live)configure# primitive p_neutron_agent_l3 ocf:nsp:neutron-agent-l3 \
   > op monitor interval=30 timeout=60


   
参考资料
1. http://blog.csdn.net/tantexian/article/details/50160159  自定义 Pacemaker OCF 资源
2. 




##corosync参考配置##
#vim /etc/corosync/corosync.conf
compatibility: whitetank


quorum {
  provider: corosync_votequorum
  two_node: 0
}


nodelist {
  node {
    ring0_addr: 10.25.49.2
    nodeid: 1
  }
  node {
    ring0_addr: 10.25.49.3
    nodeid: 2
  }
}
totem {
        version: 2
        secauth: off
        threads: 0
        interface {
                ringnumber: 0
                bindnetaddr: 10.25.49.2
                mcastaddr: 226.94.1.1
                mcastport: 5405
        }
}
logging {
        fileline: off
        to_stderr: no
        to_logfile: yes
        to_syslog: yes
        logfile: /var/log/cluster/corosync.log
        debug: off
        timestamp: on
        logger_subsys {
                subsys: AMF
                debug: off
        }
}
amf {
        mode: disabled
}
service {
    # Load the Pacemaker Cluster Resource Manager
    name: pacemaker
    ver: 0
}


##crm资源参考配置###
crm(live)configure# show


node 1: control
node 2: compute1 \
        attributes standby=off
primitive mgt_vip IPaddr2 \
        params ip=192.168.100.10 \
        meta target-role=Stopped
primitive p_neutron_agent_dhcp ocf:nsp:neutron-agent-dhcp \
        op monitor interval=10 timeout=20 \
        meta target-role=Started
primitive p_neutron_agent_l3 ocf:nsp:neutron-agent-l3 \
        op monitor interval=10 timeout=20 \
        meta target-role=Started
primitive p_neutron_agent_ovs ocf:nsp:neutron-agent-ovs \
        op monitor interval=10 timeout=20 \
        meta target-role=Stopped
primitive pub_vip IPaddr2 \
        params ip=10.25.49.10 \
        meta target-role=Stopped
clone clone_neutron_agent_dhcp p_neutron_agent_dhcp \
        meta interleave=true target-role=Started
location clone_neutron_agent_dhcp-on-compute1 clone_neutron_agent_dhcp 100: compute1
location clone_neutron_agent_dhcp-on-control clone_neutron_agent_dhcp 100: control
location neutron_agent_l3-on-control-node p_neutron_agent_l3 100: control
location vip__mgt-on-control-node mgt_vip 100: compute1
location vip__pug-on-compute1-node pub_vip 100: compute1
property cib-bootstrap-options: \
        have-watchdog=false \
        dc-version=1.1.13-10.el7-44eb2dd \
        cluster-infrastructure=corosync \
        no-quorum-policy=ignore \
        stonith-enabled=false \
        last-lrm-refresh=1473318904
# vim: set filetype=pcmk:

你可能感兴趣的:(openstack)