使用Openais 创建一个高可用集群

                               使用Openais 创建一个高可用集群

1,   节点的信息,和项目的目的

两个node1 ip 192.168.0.140  192.168.10.140

node2    192.168.0.141            

集群服务为apachehttpd服务

提供web服务的地址为192.168.0.142

+> 表示在档中增加,或者修改某行为后面的内容

、安装如下软件包:

libibverbs, librdmacm, lm_sensors, libtool-ltdl, openhpi-libs, openhpi, perl-TimeDate

2、安装corosyncpacemaker,首先下载所需要如下软件包至本地某专用目录(这里为/root/cluster):

cluster-glue

cluster-glue-libs

heartbeat

openaislib

resource-agents

corosync

heartbeat-libs

pacemaker

corosynclib

libesmtp

pacemaker-libs

下载地址:http://clusterlabs.org/rpm/。请根据硬件平台及操作系统类型选择对应的软件包;这里建议每个软件包都使用目前最新的版本。

配置node1

#vim /etc/sysconfig/network

+> HOSTNAME=node1.z.org

#hostname node1.z.org

#vim /etc/hosts

+> 192.168.0.140  node1.z.org node1  编辑hosts档使得可以进行功能变量名称解析

+> 192.168.0.141  node2.z.org node2

#cd /etc/sysconfig/network-scripts/     给节点一个静态的地址

#vim ifcfg-eth0

+>BOOTPROTO=static

  IPADDR=192.168.0.140

  NETMASK=255.255.255.0

  GETWAY=192.168.0.254

# ssh-keygen -t rsa  生成一对密钥档 

#ssh-copy-id  -i  ~/.ssh/id_rsa.pub root@node2 把密钥传送给node2,这次需要输入密码

#lftp 192.168.0.254

           Cd pub/Sources

           Mirror corosync

#cd corosync/

#rpm -ivh libesmtp-1.0.4-5.e

#yum -y --nogpgcheck localinstall *.rpm

配置node2

#vim /etc/sysconfig/network

 +> HOSTNAME=node2.z.org

#vim /etc/sysconfig/network-scripts/ifcfg-eth0

 +>BOOTPROTO=static

  IPADDR=192.168.0.142

  NETMASK=255.255.255.0

  GETWAY=192.168.0.254

#ssh-keygen -t rsa

Node1

 #ssh-copy-id -i .ssh/id_rsa.pub root@node2

 #scp /etc/hosts node2:/etc

 #ssh-copy-id -i .ssh/id_rsa.pub root@node1 在node2上把密钥档

 #yum -y --nogpgcheck localinstall *.rpm    在node2上安装软件包

 #cd /etc/corosync/

 #cp corosync.conf.example corosync.conf

  +> bindnetaddr:192.168.0.0

     Mcastaddr:            多播的地址

     Mcastport             端口

 Compatibility:whitetank  支持

 Totem 定义两个节点之间通过什么协议通信

 Logging  定义日志信息

    Logfile :/var/log/cluster/corosync.log  需要手动创建目录

  +> aisexec {

  +>           User:root

  +>          Group:root

   }  不是必须的

+> service {

+>      ver:0

+>      name:pacemaker

}  必须加上

生成认证档

#mkdir -v /var/log/cluster

#corosync-keygen 在当前目录下叫 authkey

#scp  -p corosync.conf authkey node2:/etc/corosync

#mkdir -v /var/log/cluster 在node2s

#/etc/init.d/corosync start

———————————————————————————————————————

                                    日志信息

# grep -e "Corosync Cluster Engine " -e "configuration file"  /var/logmessage  查看corosync引擎是否启动

Jun 14 19:02:08 node1 corosync[5103]:   [MAIN  ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.

Jun 14 19:02:08 node1 corosync[5103]:   [MAIN  ] Successfully read main configuration file '/etc/corosync/corosync.conf'.

Jun 14 19:02:08 node1 corosync[5103]:   [MAIN  ] Corosync Cluster Engine exiting with status 8 at main.c:1397.

Jun 14 19:03:49 node1 corosync[5120]:   [MAIN  ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.

Jun 14 19:03:49 node1 corosync[5120]:   [MAIN  ] Successfully read main configuration file '/etc/corosync/corosync.conf'.

#grep TOTEM /var/log/messages    查看初始化成员节点通知是否正常发出

Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: CRM: Initialized

Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] Logging: Initialized pcmk_startup

Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: Maximum core file size is: 4294967295

Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: Service: 9

Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: Local hostname: node1.a.org

#grep  ERROR: /var/log/message | grep -v unpack_

#grep pcmk_startup /var/log/messages  查看pacemaker是否正常启动

Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: CRM: Initialized

Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] Logging: Initialized pcmk_startup

Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: Maximum core file size is: 4294967295

Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: Service: 9

Jun 14 19:03:50 node1 corosync[5120]:   [pcmk  ] info: pcmk_startup: Local hostname: node1.a.org

#crm status  查看节点是否正常运行

  

#ssh node1 -- /etc/init.d/corosync stop

#crm status 

 ============

Last updated: Tue Jun 14 19:07:06 2011

Stack: openais

Current DC: node1.a.org - partition with quorum

Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87

2 Nodes configured, 2 expected votes

0 Resources configured.

============

Online: [ node1.a.org node2.a.org ]

#crm   一个命令用于管理节点  所有的命令可以在shell中运行完

     Exit

                              配置一个资源

正常启动node1.a.org后,集群资源WebIP很可能会重新从node2.a.org转移回node1.a.org。资源的这种在节点间每一次的来回流动都会造成那段时间内其无法正常被访问,所以,我们有时候需要在资源因为节点故障转移到其他节点后,即便原来的节点恢复正常也禁止资源再次流转回来。这可以通过定义资源的黏性(stickiness)来实现。在创建资源时或在创建资源后,都可以指定指定资源黏性。

   定义资源约束 

1)  资源位置约束

2)  资源排列约束  多个资源是否在同一个节点上运行,或者两个资源不能再同一个节点上运行。

3)   资源顺序约束

定义约束时候要制定分数,分数越大资源

资源黏性

 默认为0,会自动转移互相流动,基本等同于故障回复,资源可能移动到非之前的活动节点上。

   大于0表示,留在当前的位置,但是如果有更合适的节点可用时会移动,越高表示越愿意呆在当前的位置。

   小于0表示,资源离开当前位置,绝对值越高表示越愿意来开当前位置。

多以要定义默认,黏性值禁用恢复。

Resource Order(资源顺序):顺序约束定义集群资源在节点上启动的顺序;

定义约束时,还需要指定分数。各种分数是集群工作方式的重要组成部分。其实,从迁移资源到决定在已降级集群中停止哪些资源的整个过程是通过以某种方式修改分数来实现的。分数按每个资源来计算,资源分数为负的任何节点都无法运行该资源。在计算出资源分数后,集群选择分数最高的节点。INFINITY(无穷大)目前定义为 1,000,000。加减无穷大遵循以下3个基本规则:

1)任何值 无穷大 无穷大

2)任何值 无穷大 = -无穷大

3)无穷大 无穷大 = -无穷大

定义资源约束时,也可以指定每个约束的分数。分数表示指派给此资源约束的值。分数较高的约束先应用,分数较低的约束后应用。通过使用不同的分数为既定资源创建更多位置约束,可以指定资源要故障转移至的目标节点的顺序。

#crm  ra  classes  资源类型的种类

               Heartbeat

               Lsb

               Ocf / heartbeat pacemaker

               Stonith 

#crm  ra  list  ocf  heartbeat  查看资源代理类型

# crm  ra  list    heartbeat  里面的资源

#crm  ra  info heartbeat:IPaddr  查看某个资源的参数

# crm  ra  info heartbeat:IPaddr2 两个不一样,这个是用IP命令查看的   

#crm configure primitive WebIP ocf:heartbeat:IPaddr params ip=192.168.0.143

   会报错,是stonish的错误  提示我们是否继续,选择否

#crm_vierify  -L  查看是否有错误

crm_verify[5202]: 2011/06/14_19:10:38 ERROR: unpack_resources: Resource start-up disabled since no STONITH resources have been defined

crm_verify[5202]: 2011/06/14_19:10:38 ERROR: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option

crm_verify[5202]: 2011/06/14_19:10:38 ERROR: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity

Errors found during check: config not valid

  -V may provide more details

             会报错 stonith的原因

默认启用stonith 可以使用命令禁用

#crm configure property stonith-enalbed=false 禁用stonith

#crm_vierify -L  这时就不会报错

#crm configure primitive WebIP ocf:heartbeat:IPaddr params ip=192.168.0.143 启动资源,这个时候就不会报错了

#crm status    查看资源是否已经启动

#ifconfig      查看资源启动的那个主机上得eht0的别名是否生效

#crm configure property no-quorm-policy= ignore  继续运行,即使不满足条件

#crm_vierfiy -L

#crm configure show 查看集群的配置档,是否加上配置的参数                                 

#ssh node1 -- /etc/init.d/corosync stop  在node2上停止node1 查看是否资源可以转过去

#crm configure show 查看集群的配置档

node node1.a.org

node node2.a.org

property $id="cib-bootstrap-options" \

dc-version="1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87" \

cluster-infrastructure="openais" \

expected-quorum-votes="2" \

stonith-enabled="false  表示stonith已经被禁用

    

#ssh node1 --/etc/init.d/corosync stop 

#crm status

#crm configure rsc_defaults resource-stickiness=100 定义默认的资源黏性

#ssh node1 --/etc/init.d/corosync stop 

#crm status  查看资源是否流动

#yum -y install httpd 装上服务,两个节点上都,安装httpd服务

#/etc/init.d/httpd start 测试下httpd服务是否可用

#/etc/init.d/httpd stop 停止服务

#chkconfig httpd stop 禁止服务开机自动启动

#crm ra list lsb  查看是否有脚本,其中存在httpd

#crm ra list ocf heartbeat  查看ocf中的脚本,其中为apache,和服务不太匹配

#crm ra info lsb:httpd 查看lsbl类型的httpd资源的语法格式

lsb:httpd

Apache is a World Wide Web server.  It is used to serve \

         HTML files and CGI.

Operations' defaults (advisory minimum):

    start         timeout=15

    stop          timeout=15

    status        timeout=15

    restart       timeout=15

    force-reload  timeout=15

    monitor       interval=15 timeout=15 start-delay=15

#crm configure primitive WebSite lsb:httpd [parms op monitor]  定义资源

             

#crm status 查看资源的状态 ,服务时在两个节点上运行的

#echo " web1" > /var/www/html/index.html

  所以需要强行的把两个资源在一个节点上运行

#crm configure group web WebIP WebSite  把两个资源定义成为一个组,让资源在一个节点上运行

或者执行

#crm configure

Group web WebIP WebSite

Commit  提交

Bye

#crm_verify -L 检查是否存在语法错误

#crm status 是在一个节点上运行的了

#ssh node1 --/etc/init.d/corosync stop

 停止一个节点之后,查看是否查看是否资源转移

因此,对于前述的WebIPWebSite可能会运行于不同节点的问题,可以通过以下命令来解决:

# crm configure colocation website-with-ip INFINITY: WebSite WebIP

接着,我们还得确保WebSite在某节点启动之前得先启动WebIP,这可以使用如下命令实现:

# crm configure order httpd-after-ip mandatory: WebIP WebSite

此外,由于HA集群本身并不强制每个节点的性能相同或相近,所以,某些时候我们可能希望在正常时服务总能在某个性能较强的节点上运行,这可以通过位置约束来实现:

# crm configure location prefer-node1 WebSite rule 200: node1

这条命令实现了将WebSite约束在node1上,且指定其分数为200

----------------------------------------------------------------------------------------------------------------------


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值