corosync+pacemaker安装并通过crmsh配置

一、简单介绍:

  • corosync是高可用集群的底层信息传递层, 主要负责与上层交互并完成心跳和上层所要发送的事务信息。还有,为了防止发生Split brain以后所带来的问题,还有法定票数(quorum)这一概念。这里所要安装的是1.4版本的,负责集群票数的统计,每个节点一张票,到了2.*版本以后有了投票的功能,可以设定某节点可以持有多少张票。 最后完成票数的统计并交于CRM层来决策节点集群是否还要运行。 更多概念朋友们自己去查吧, 我自己对这方面了解的也少。而且我打字真的很慢。

  • pacemaker是高可用集群中的CRM(Cluster Resource Manager)资源管理层,它是一个服务,可以做为一个单独的服务启动,  不过在我们使用corosync-1.4的版本中,可以设置为corosync来启动pacemaker.  

  • pacemaker的配置接口可以在任意节点上安装crmsh或者pcs还有一些GUI界面的软件来完成。crmsh好像在RrdHat6.4以后都不是官方自带的了,官方的是pcs。  而crmsh好像是OpenSUSE所开发的。 

  • 两个节点在集群中是一种很特殊集群。在正常的情况下,两个节点集群工作正常,一个完整的集群也就拥有了两张票。  但在发生Split brain以后,每个集群只有持有大于半数的票才可以继续工作。而两个节点在发生Split brain以后每个集群都只有1张票,所以都不再工作。 解决方式:要么有仲裁设备(1、ping节点,2、仲裁盘),要么就是大于两个节点并且是奇数节点。或者在我们这种实验环境中可以在集群中定义参数,修改在发生Split brain以后所作的动作,如 ignore。

  • 可以用这个命令:crm configure property no-quorum-policy=ignore

说明:文中所出现的网址只是做实验时随便起的,跟互联网上的域名无关。


二、环境:

  • 两个节点,都是CentOS6.5-x86_64


三、安装:

  • 在所有节点上安装。直接yum 安装 corosync和pacemaker即可。有可能要用到epel源。


yum install corosync pacemaker -y
  • crmsh 依赖于pssh. 下载地址:crmsh,pssh都在这里。 epel源中也有pssh

  • http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/

yum install crmsh-2.1-1.6.x86_64.rpm pssh-2.3.1-2.el6.x86_64.rpm
  • 所有节点的主机都必须要能够解析所有节点的IP,并且解析名称要跟节点的主机名称一致

  • 为了防止DNS单点故障引起不能解析, 最好的作法就是在各个节点的/etc/hosts文件中添加各个节点的解析记录,并发到所有节点。

  • 为了传配置文件方便,最好是所有节点都ssh密钥登录。可以在一个节点生成私钥和公钥,并对自己完成用密钥登录,这样本节点就有了私钥和公钥还有authorized_keys文件。再把私钥和公钥还有authorized_keys发给所有节点。  这样就完成了所有节点的互信,以后传东西也方便点。 这只是我们的实验环境, 在线上就不知道可否了, 毕竟越方便可能就越不安全。

  • 集群各节点的时间一定要同步,可以在别的电脑上装个ntp服务,来让各个节点同步时间。

  • 要查看网卡是否开启了多播功能。ip link show   看是否有MLTICAST。或者是ifconfig看是否有MLTICAST相关的字眼。

  • corosync配置文件: /etc/corosync/corosync.conf

  • cp corosync.conf.example corosync.conf

        把注释信息去掉以后就下面这些了:

  • compatibility: whitetank    #是否要兼容0.8以前的。
    totem {                     #totem是corosync之间传输信息的协议 
            version: 2          #totem协议版本号
            secauth: off        #是否打开安全认证,这里我们要打开,on就可以。
            threads: 0          #认证线程数,0表示默认
            interface {
                    ringnumber: 0        #环号吗,为了防止本机网卡发出的心跳
                                         #被另一网卡接受到,所作的识别。
                    bindnetaddr: 192.168.1.0    #绑定到哪个网络,
                                                #工作在哪个网络。
                    mcastaddr: 239.255.1.1      #组播地址。
                    mcastport: 5405             #组播端口。
                    ttl: 1                      #ttl,转发次数。1表示只本机
                                                #发送一次,其它设备不会转发。
            }
    }
    logging {
            fileline: off
            to_stderr: no                        #是否发送到标准错误输出
            to_logfile: yes                      #是否要保存到日志文件。
            logfile: /var/log/cluster/corosync.log    #日志文件
            to_syslog: yes                       #是否要发给rsyslog来管理日志。
                                                 #这两个日志输出只一个就好。
            debug: off                           #是否开启调试
            timestamp: on                        #是否打开日志的时间戳。
            logger_subsys {
                    subsys: AMF
                    debug: off
            }
    }
  • 然后再添加以下参数:

  • }
    
    service {
            var: 0
            name: pacemaker            #表示启动pacemaker
    }
    
    aisexec {                          #表示以哪个身份去启动CRM
            user: root
            group: root
    }
  • 最后我这里的配置去掉注释以后是这个样子的:

  • compatibility: whitetank
    totem {
            version: 2
            secauth: on
            threads: 0
            interface {
                    ringnumber: 0
                    bindnetaddr: 172.16.0.0
                    #bindnetaddr: 192.168.1.0
                    mcastaddr: 239.255.100.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
            }
    }
    service {
            var: 0
            name: pacemaker
    }
    aisexec {
            user: root
            group: root
    }
    ~
  • ok,配置文件搞定, 因为我们上面的secauth: on 所以执行命令  corosync-keygen  来生成authkey文件, 

  • [root@node1 ~]# corosync-keygen
    Corosync Cluster Engine Authentication key generator.
    Gathering 1024 bits for key from /dev/random.
    Press keys on your keyboard to generate entropy.
    Press keys on your keyboard to generate entropy (bits = 208).
    Press keys on your keyboard to generate entropy (bits = 272).
    Press keys on your keyboard to generate entropy (bits = 336).
    Press keys on your keyboard to generate entropy (bits = 400).
  • 哇,这里要用到一些随机数,而我这里随机数不够用,要等一会儿了。

  • 终于好了, 然后我们把配置文件和刚才所生成的authkey文件发给另一个节点。

  • scp -p /etc/corosync/authkey node2.star.com:/etc/corosync/
    scp -p /etc/corosync/corosync.conf node2.star.com:/etc/corosync/
  • 完成安装。


四、启动corosync。

  • [root@node1 ~]# service corosync start
    Starting Corosync Cluster Engine (corosync):               [  OK  ]
  • 确认是否启动可以通过查看日志文件:

  • [root@node1 ~]# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/cluster/corosync.log                         #查看corosync是否启动
    Jun 17 13:00:21 corosync [MAIN  ] Corosync Cluster Engine ('1.4.7'): started and ready to provide service.                     #corosync 集群引擎启动
    Jun 17 13:00:21 corosync [MAIN  ] Successfully read main configuration file '/etc/corosync/corosync.conf'.                     #并且成功读取配置文件
  • 确认是否正常发出节点通知

  • [root@node1 ~]# grep  TOTEM  /var/log/cluster/corosync.log    #totem协议
    Jun 17 13:00:21 corosync [TOTEM ] Initializing transport (UDP/IP Multicast).
    Jun 17 13:00:21 corosync [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).
    Jun 17 13:00:21 corosync [TOTEM ] The network interface [172.16.5.11] is now up.
    Jun 17 13:00:21 corosync [TOTEM ] A processor joined or left the membership and a new membership was formed.
  • 查看是否有错误发生

  • [root@node1 ~]# grep ERROR: /var/log/cluster/corosync.log
    Jun 17 13:00:21 corosync [pcmk  ] ERROR: process_ais_conf: You have configured a cluster using the Pacemaker plugin for Corosync. The plugin is not supported in this environment and will be removed very soon.
    Jun 17 13:00:21 corosync [pcmk  ] ERROR: process_ais_conf:  Please see Chapter 8 of 'Clusters from Scratch' (http://www.clusterlabs.org/doc) for details on using Pacemaker with CMAN
  •      以上错误只是在提示:pacemaker很快将不再作为corosync的插件启动, 只是说明以后的版件将是单独的服务启动。跟我们这里没有关系。  而第二个错误也只是说可以用CMAN来代替corosync,跟我们这里也没有关系。


  • 查看pacemaker是否启动

  • [root@node1 ~]# grep pcmk_startup /var/log/cluster/corosync.log
    Jun 17 13:00:21 corosync [pcmk  ] info: pcmk_startup: CRM: Initialized
    Jun 17 13:00:21 corosync [pcmk  ] Logging: Initialized pcmk_startup
    Jun 17 13:00:21 corosync [pcmk  ] info: pcmk_startup: Maximum core file size is: 18446744073709551615
    Jun 17 13:00:21 corosync [pcmk  ] info: pcmk_startup: Service: 9
    Jun 17 13:00:21 corosync [pcmk  ] info: pcmk_startup: Local hostname: node1.star.com



如果一切正常就可以启动第二个节点了,在当前节点用ssh来启动其它的节点可以在日志里看到更多的一些信息。 这个也无所谓了,  只要查看日志发现没问题。 再用crm查看一下节点状态。


五、crm配置pacemaker。

  • crmsh安装完成以后的执行文件名称就是crm.  crm可以直接在shell界面命令行执行,也可以在交互式模式下执行,我也是初学者,当然要在交互式下啦。

  • 直接键入命令就可以进入下一级菜单,cd ..  或 up,就可以返回上级菜单。 

  • 资源不可以自动启动,要由集群来调度启动。

说明:以下节点名称只是随便起的,跟互联网上的域名无关。

wKioL1WBDySyHgaeAAD7cldspKg224.jpg

在主菜单下执行status用来查看集群状态,上面我们可以看到集群各节点和资源的大概信息还有DC节点。

可以用ls来查看此菜单的各个命令,也可以用help来详细查看。 ls 和 help自身也是其中的命令。

wKiom1WBDzqhpYADAACJJXKzB-0751.jpg

也可以help一个命令,来查看下一级的命令。  

简单介绍下在主菜单中常用到的各个命令的信息吧:

ra      里面可以查看资源代理信息,resource agent的简写。

configure  主要用到的就这个了, 定义资源。

node    管理节点,如,删除一个不再上线,不再使用的节点。

resource  管理资源。


在configure中可以用verify来校验当前的配置。

wKioL1WBFMazy5WMAAE4GFTrITE198.jpg

出问题啦,什么也没有配置就出问题了。 没有STONITH资源被定义, 可以在stonith-enabled中关闭STONITH,   集群中的共享数据需要STONITH来保证数据的完整性。

STONITH主要是用来把失败的节点给kill掉(如:停止供电)。 防止它再使用资源,或者资源终止不掉,而带来的各种恐怖的后果。

当然了,我们的实验可没有STONITH设备。 所以就要关闭STONITH设备。

在configure下用property命令来配置, 可以用双TAB来查看参数的,单TAB来补全命令。

wKioL1WBF5jD4yeJAAFZZtmBEFM004.jpgverify 用来校验当前配置, commit用来提交。  注意一点:命令执行完成以后 就会写入xml文档,verify就是用来校验这个文档,而commit是用来生效的。 定义这些参数错误了,可以重新定义即可, 如果在定义资源的时候出现了问题,就要删除资源,然后再重新定义。

我们定义一个资源尝试一下:就来定义web服务吧, 首先是要定义vip(Virtual IP).

定义一个资源可以通过primitive来定义。 可以help一下这个命令看看格式,关键是还有很多例子。


定义资源要用到资源代理,CRM其中的一个组件LRM通过资源代理来管理资源。


我们主要用到两种: OCF 和 LSB的。  ocf就是软件自带的,lsb就是我们在/etc/init.d/下面的服务脚本啦。 当然不是所有的服务脚本都可以使用的,比如要可以识别 start stop status 而且会返回 stopped running才行。 LRM就是通过执行那些资源代理来启动、停止还有监控资源的。


而我们定义资源的时候要定义的一些值就是要让LRM运行资源代理的时候所要用到的参数。


好啦,废话说太多了。试一下就知道了。

wKiom1WBHkuivlAFAAFoNdQyW1M640.jpg

webip 是给这个资源起的名称, 后面的就是资源代理, params关键字, ip= 就是参数了。


so easy否?show来显示所定的资源或一些参数,也可以通过edit来直接打开xml文件查看。

上面所定义的ip就是给资源代理的参数啦。而这些参数都是可以在主菜单的ra里面查看的。

wKiom1WBH4vw6SmEAAGmmFDi-aE811.jpg

classes  可以显示有哪些类的资源代理。

wKiom1WBIL3QrJelAABYDx2Wfrg248.jpg

lsb和ocf上面介绍到了。 其它的那两种这里用不到,可以用info或meta来查看详细信息。用list来查看所有的或是各个类的资源代理。

上面我们说的lsb、ocf就是class了,而heartbeat、pacemaker就是provider(供应商)了。


wKiom1WBIs3ziUIWAAA2mT4hN3M032.jpg


太多了,这里就不帖了, 第一列的 ip*,nic等等都是参数,有*号的是必须的。

我们来定义第二个资源, 已经有ip了,再有就是httpd了。

wKiom1WBJ57zWe_mAAFfvy1oMOw424.jpg

LSB类型的资源代理没有任何的参数。 直接像这样加上就可以。 我们返回主菜单查看一下现在的状态。

wKiom1WBKCqjLbGpAAFE98NcYRo554.jpg

嗯,ip在node1上, httpd在node2上。这也不能正常访问啊。 

注意:资源不能在集群调度之前就已经启动,要由集群来调度启动。

如:上边的ip,节点上面不能本来就已经有这个ip了。 httpd也不能本来就是启动着的。

要在系统上查看Ip是否生效,要用 ip 命令,ifconfig是看不到的,除非在定义Ip的时候有参数Iflabel。

[root@node1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:4c:12:89 brd ff:ff:ff:ff:ff:ff
    inet 172.16.5.11/16 brd 172.16.255.255 scope global eth0
    inet 172.16.5.5/16 brd 172.16.255.255 scope global secondary eth0   #在这里
    inet6 fe80::20c:29ff:fe4c:1289/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever

可以用两种方式来让资源在同一个节点上启动。 1,资源组。  2,colocation(排列约束)


我们先试试定义一个colocation看看。

Usage:    #role我们暂时用不到

colocation <id> <score>: <rsc>[:<role>] <with-rsc>[:<role>]
colocation 约束名称 分数: 资源 资源

wKioL1WBL_qiuCqMAAGULS4GY1k255.jpg

注意:在分数后面的冒号后面可是有一个空格的

现在两个资源都在node1上了。 分数可以用数字来表示也可以用inf来表示无穷大。还有-inf负无穷大。

那么有时候我们可能要让ip先启动,然后才是httpd, 这样有顺序的去启动资源。  可以用order约束。

wKiom1WBMBbg6pDsAACo3ylIKNc427.jpg

这里来约束的值可以用score也可以用kind。 kind有Manadatory表示强制。 后面的两个看来可能是看情况的意思。 也可以用分数来表示。 强制的力度好像更强, 我们就用Manadatory吧。

不知道score中的inf跟kind中的Manadatory一样不。不过都是可以正常生效的,可能力度不一样吧。


wKioL1WBM6iR4fLKAAGTdeq8SQA846.jpg

上面一开始写错了,所以下面要用delete把所定义的资源删除了, 在edit中直接删除也可以。


然后还有位置约束location。我这个现在在node1上面,如果我希望它们在node2上面。

Usage:

location <id> rsc [role=<role>] {node_pref|rules}

rsc :: /<rsc-pattern>/
        | { resource_sets }
        | <rsc>

node_pref :: <score>: <node>

我们只定义个简单位置约束, 所以用简单的就行啦。  

location <id> rsc <score>: <node>

wKiom1WBNJujmvxDAAGKvSSBMTU229.jpg

webip与webserver已经约束在一起了, 所以只定义一个资源到别的位置就可以了。 

分数是一个度量值,如果在node1上的约束数值是大于50的,那么就回去了。 而且以现在这种状态,node2离线了以后,资源都转移到node1上,但是node2上线以后,资源就又会转移回来。

每一次转移都代表着业条中断。  so, 我们可以定义资源粘性。

所谓资源粘性就是指: 资源到一个节点以后本身就拥有在这个节点的倾向值。 就好像资源本身就有粘性,到哪一个节点就粘在哪个节点。

资源粘性我们可以定义成资源默认值,让资源生来就拥有粘性,而不至于因为很低分数的位置约束就让资源转移。


wKiom1WBOZnggS-jAAHh0du7UfY479.jpg

上面我们所定义的webip和webserver因为排列约束在一起,它们在一起的数值是无穷大的。

 而每个资源的粘性是50,它们两个就是100,没有超过100的位置约束值,是不会转移的。

而如果它们每个的排列约束只有50,两个资源分别有一个100的不同位置的约束值, 它们也就分开了。

这就是这些分数的意义,集群计算这些分数来决定资源的位置。


上面定义完成以后,node2再次上线以后,资源还会停在当前节点。而当当前节点挂了的话,才会转移到一个位置约束高的节点node2。而不会转移到一个配置差,运行慢的节点。

当然了我们这里只有两个节点,再转也转不到哪去。


模拟节点离线:可以用 node下面的standby。  上线就用 online.

也可以直接在shell行中执行: 

[root@node2 ~]# crm node standby node2.star.com        #node2离线
[root@node2 ~]# crm node online node2.star.com         #node2上线
[root@node2 ~]# crm node online node1.star.com       
[root@node2 ~]# crm node standby node2.star.com       
[root@node2 ~]# crm node onliine node2.star.com


group组来约束几个资源更简单一点,而且看起来也更清楚一点。

我们先把colocation删了,然后再定义一个位置约束把两个资源分开:

crm(live)configure# delete webip_with_webserver
crm(live)configure# location conn_node1 webserver 100: node1.star.com
crm(live)configure# cd
There are changes pending. Do you want to commit them (y/n)? y
crm(live)# status
Last updated: Wed Jun 17 20:03:09 2015
Last change: Wed Jun 17 20:02:41 2015
Stack: classic openais (with plugin)
Current DC: node1.star.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 3 expected votes
2 Resources configured


Online: [ node1.star.com node2.star.com ]

 webip	(ocf::heartbeat:IPaddr):	Started node2.star.com 
 webserver	(lsb:httpd):	Started node1.star.com
crm(live)#

二个资源,一个资源对node2的位置约束为50,一个资源对node1的位置约束为100。

定义组以后应该会去node1上面: 

wKioL1WBZU_xzWbiAABV6Oi_xLE425.jpg

crm(live)# cd
crm(live)# configure
crm(live)configure# group webip_webserver webip webserver
INFO: resource references in location:conn_node2 updated
INFO: resource references in order:webip_before_webserver updated
INFO: resource references in location:conn_node1 updated
INFO: resource references in order:webip_before_webserver updated
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure# show
node node1.star.com \
	attributes standby=off
node node2.star.com \
	attributes standby=off
primitive webip IPaddr \
	params ip=172.16.5.5
primitive webserver lsb:httpd
group webip_webserver webip webserver
location conn_node1 webip_webserver 100: node1.star.com
location conn_node2 webip_webserver 50: node2.star.com
property cib-bootstrap-options: \
	dc-version=1.1.11-97629de \
	cluster-infrastructure="classic openais (with plugin)" \
	expected-quorum-votes=3 \
	last-lrm-refresh=1434504714 \
	stonith-enabled=false
rsc_defaults rsc-options: \
	resource-stickiness=50
crm(live)configure# cd 
crm(live)# status
Last updated: Wed Jun 17 20:09:36 2015
Last change: Wed Jun 17 20:08:46 2015
Stack: classic openais (with plugin)
Current DC: node1.star.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 3 expected votes
2 Resources configured


Online: [ node1.star.com node2.star.com ]

 Resource Group: webip_webserver
     webip	(ocf::heartbeat:IPaddr):	Started node1.star.com 
     webserver	(lsb:httpd):	Started node1.star.com

上面提示了一些INFO信息, 因为组是自身就有启动顺序的,所以order约束就自动失效了,自动删除了order约束, 而location约束由原来对单个资源的,自动变成了对组的约束了。

还有对于组里面资源的启动顺序,刚才试了一下, 确实是第一个资源先启动的, 我把httpd的执行文件给删了,这样如果httpd先启动的话,启动失败就不再启动IP了。 如果IP先启动,那么IP就启动了,然后httpd失败。    可能对于不同版本的配置工具,也会有所不同吧。


wKiom1WBbEyCkcTQAAMOB9ZWtCU596.jpg


有时候资源出现问题,如:我上面把httpd程序移回去以后,资源还是不会自动启动,或是想要清除上面资源的错误信息。  可以用resource cleanup webserver

wKiom1WBchTgdPGVAAI-1X6DbIo771.jpg


如果是在系统界面下,就直接执行:  crm resource cleanup webserver  就可以了,清理信息,重新部署资源。

在系统界面下面执行的crm 就是在交互式模式里的各个菜单加上参数。


资源监控

以现在我们的配置来看运行的还算可以,但是如果httpd程序突然挂了,或IP地址出问题了怎么办。默认情况下pacemaker是不会去监控资源状态的, 这个需要我们自己来指定。 用monitor来给资源添加监控。

wKiom1WBc9fgAImwAABUeDeMzVw053.jpg

我们来试试加上监控,让pacemaker发现资源停止以后可以自动重启资源。

wKiom1WBdFyDRyGbAAJrhiq-rT8984.jpg


监控是作为资源的选项而存在的。 我们在指定资源的时候可以直接指定监控了。

interval监控区间,  timeout获取资源状态超时时间。

然后就可以试试把httpd给kill或者service httpd stop。  如果查看集群日志可以看到监控信息。


在定义资源时直接添加监控。

wKioL1WBgBThAQ71AAGc52QUNq0618.jpg


说到这里,还有一点就是timeout的问题, 如果timeout超时了怎么办, 系统默认是ignore。

我们可以在定义监控的时候用on-fail=来指定。它的参数有: ignore、restart、stop、block、fence、standby。

ignore:忽略,

restart:重启资源,也许会转移资源(可能是在重启不成功的情况下)。

stop:停止资源。

block:好像跟stop差不多,刚学完就给忘了@_@。

fence:隔离这个节点,STONITH来一下,。

standby:standby节点,并转移此节点上的所有资源。


wKiom1WCLJCSVHKYAABzSYDZ-k0285.jpg

这样在获取一个资源状态超时的时候就会重启资源。 在测试这个的时候把httpd脚本的status给注释了,然后资源就会一直在重启,但是不会转移,不知道什么原因,不知道是不是因为重启httpd的时候所返回的信息已经让pacemaker知道这个资源启动成功了呢。#_#

standby会standby节点,在做实验的时候有可能会发现所有节点都standby了。


简单应用也就这些了,简单定义资源、约束还有监控。


例:定义ip和nfs资源还有httpd。 并且在同一个节点,启动顺序:ip-nfs-server。倾向于node1节点。

注意:我们还有资源粘性值,三个资源在一起就是150。 如果想让它们从node2移到node1就要有大于150的位置约束了。我们这里只是练练手,不要在意资源粘性的作用啊,如果真是在工作中,可就要好好规划这些东西了。

crm(live)configure# primitive webip ocf:heartbeat:IPaddr params ip=172.16.5.5 nic=eth0 op monitor interval=30s timeout=20s on-fail=restart
crm(live)configure# verify
crm(live)configure# primitive webstore ocf:heartbeat:Filesystem params device="172.16.5.20:/webdata" directory="/var/www/html" fstype=nfs op start timeout=60s op stop timeout=60s op monitor interval=30s timeout=40s on-fail=restart
crm(live)configure# verify
crm(live)configure# primitive webserver lsb:httpd op monitor interval=30s timeout=20s on-fail=restart
crm(live)configure# verify
crm(live)configure# 
crm(live)configure# group webip_webstore_webserver webip webstore webserver
crm(live)configure# verify
crm(live)configure# location web webip_webstore_webserver 200: node1.star.com
crm(live)configure# verify
crm(live)configure# commit

wKiom1WCOpyhRAOXAAJg4ZZQYtQ364.jpg

wKiom1WCOybBC_crAAHL_IGyYew093.jpg

上面所定义的资源在ra菜单info中可以查看,而且可以在定义的时候双TAB键也会显示出来。

而且在定义监控分数的时候,verify会提示:推荐的分数。 



写这点东西一来便于自己的记忆和查看;二来呢也是为了朋友们如果发现写的不好或是错误的地方,希望可以指点一下; 最后如果这点东西还可以帮助到大家的话,那看来自己没有白学啊。y_0034.gif


你可能感兴趣的:(corosync+pacemaker安装并通过crmsh配置)