Pacemaker实现资源管理

CRM集群资源管理器  Pacemaker

环境:rhel6.5    node1192.168.2.228 node1.example.com

 node2: 192.168.2.242 node2.example.com

示例集群会使用以下软件:

1. Fedora 13 as the host operating system

2. Corosync作为通信层和提供关系管理服务

3. Pacemaker来实现资源管理

4. DRBD 作为一个经济的共享存储方案

5. GFS2 作为集群文件系统(/主模式中)

6. crm shell 来显示并修改配置文件


在某些情况下,可能会需要关闭节点的电源来保证共享数据的完整性或是完全地恢复资源。为此

Pacemaker引入了STONITHdSTONITHShoot-The-Other-Node-In-The-Head(爆其他节点的头)的缩写,并且通常是靠远程电源开关来实现的。

下载包crmsh-1.2.6-0.rc2.2.1.x86_64.rpm   pssh-2.3.1-2.1.x86_64.rpm

安装两个包rpm -ivh crmsh-1.2.6-0.rc2.2.1.x86_64.rpm  

yum localinstall crmsh-1.2.6-0.rc2.2.1.x86_64.rpm

node1上:

ssh-keygen #使两节点之间ssh连接不需密码

ssh-copy-id node2.example.com

scp -r .ssh/ node2.example.com:

可尝试连接node2  ssh node2.example.com  不需验证密码

cd /etc/corosync/

cp corosync.conf.example   corosync.conf

vim corosync.conf

totem {

       version: 2

       secauth: off

       threads: 0

       interface {

               ringnumber: 0  #红色为要修改的

              bindnetaddr: 192.168.2.0  #当前为2网段

               mcastaddr: 226.94.1.1

               mcastport: 5798 #注意多播端口或多播地址不要冲突

               ttl: 1

       }

}

service {  #添加pacemaker服务

       name: pacemaker

       ver: 0

}

scp corosync.conf   node2.example.com:/etc/corosync/

两边开启corosync服务,就会开启pacemaker。  /etc/init.d/corosync start

crm_mon #监控

crm node show #显示节点

crm configure show #显示配置文件


crm_verify -LV #校验

交互式访问:

Pacemaker实现资源管理_第1张图片


crmliveconfigure# property  stonith-enabled=false #停掉stonith(相当与节点的电源)

commit #每更改一条配置文件都要提交

crm_verify -LV 第一次会出错,关闭stonith,校验就不会有错了


首先要做的是配置一个IP地址,不管集群服务在哪运行,我们要一个固定的地址来提供服务。在这里我选择192.168.2.29作为浮动IP,给它取一个好记的名字 ClusterIP 并且告诉集群 每30秒检查它一次。

crmliveconfigure# primitive vip ocf:heartbeat:IPaddr2 params ip=192.168.2.29                         cidr_netmask=24 op monitor interval=30s #添加虚拟IP

commit

crm(live)configure#        property no-quorum-policy=ignore  #忽略达不到法定人数的情况,继续运行资源

commit #提交

两个节点机添加apache服务,编辑配置文件,不用开启httpd,交给集群。

为了监控Apache实例的健康状态,并在它挂掉的时候恢复Apache服务,资源agent会假设 server-status  URL是可用的。查看/etc/httpd/conf/httpd.conf并确保下面的选项没有被禁用或注释掉。

vim /etc/httpd/conf/httpd.conf

<Location /server-status>

    SetHandler server-status

   Order deny,allow

    Deny from all

    Allow from 127.0.0.1

</Location>

更新配置文件

crm(live)configure#    primitive website   ocf:heartbeat:apache   params configfile=/etc/httpd/conf/httpd.conf   op   monitor interval=30s

commit

可是,WebSite这个资源跟IP没有跑在同一个节点上面!


确保资源在同一个节点运行

crm(live)configure#   colocation website-with-vip inf: website vip

crm(live)configure#   commit


设置主节点为node1,指定优先的 Location

crm(live)configure#  location master-node website 10:node1.example.com

crm(live)configure#   commit

/etc/init.d/corosync   restart

node2上监控crm_mon

Pacemaker实现资源管理_第2张图片

node1  corosync 停掉,node2会接管,node1恢复后会继续接管。

ip addr show

当前node1接管,node1上可查到虚拟IP

查看添加的资源vip    website


Pacemaker实现资源管理_第3张图片


虚拟机fence

fenceyum install fence-virt fence-virtd fence-virtd-libvirt fence-virtd-multicast -y

fence_virtd -c 设置隔离设备

mkdir /etc/cluster

dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 #生成fence_xvm.key

scp /etc/cluster/fence_xvm.key node1.example.com:/etc/cluster/

scp /etc/cluster/fence_xvm.key node2.example.com:/etc/cluster/

/etc/init.d/fence_virtd start #启动服务

注意:需保证fenceselinux关掉,iptables不用

节点机:

yum install -y fence-agents.x86_64 fence-virt.x86_64

node1:

crm(live)configure#     property stonith-enabled=true  #开启stonith,相当与总开关

crm(live)configure#     primitive vmfence stonith:fence_xvm params pcmk_host_map=node1.example.com:node1;node2.example.com:node2 op monitor interval=60s

注意格式  主机名:域名(虚拟机名称)

crm(live)configure#   commit




查看资源:

Pacemaker实现资源管理_第4张图片



node2监控:

Pacemaker实现资源管理_第5张图片


重启corosynv服务   /etc/init.d/corosync   restart

设置开机自启动     chkconfig    corosync   on


当前fencenode2上接管

若挂掉node2,比如ifdown   eth0echo  c  >  /proc/sysrq-trigger弄崩内核,fence会接管到node1node2会重新启动修复,重启完毕,fence又切到node2.node1网卡挂掉,fence会让node1重启。


iscsi存储

给集群管理加存储服务,在一个存储服务器上共享一块硬盘,作为存储(在实验中,就直接在集群管理的那台服务器上共享一块硬盘)

物理机192.168.2.38上:

yum install -y scsi-*

lvcreate  -L 2G -n iscsi vg0 创建/dev/vg0/iscsi逻辑卷

vim /etc/tgt/targets.conf

<target iqn.2014-05.com.example:server.target1>

   backing-store /dev/vg0/iscsi

   initiator-address 192.168.2.228 //两台节点机IP

   initiator-address 192.168.2.242

</target>

开启服务 /etc/init.d/tgtd start  chkconfig tgtd on

tgt-admin   -s 查看设备共享的信息

两个节点机都要做以下操作:

yum install -y iscsi-*

iscsiadm -m discovery -t st -p 192.168.2.38 //查找iscsi设备是否在1主机上

iscsiadm -m node -l //登录到iscsi设备

fdisk -l 可查看多了一块共享硬盘/dev/sdb

这时在节点1主机node1上创建一个主分区1.现在在一个节点上给此设备做 分区和格式化 (做本地文件系统 ext4)

fdisk -cu /dev/sdb

会同步到node2节点机。

格式化为ext4格式文件系统

mkfs.ext4   /dev/sdb1

在节点2主机node2上执行partprobe,更新内核分区表,cat /proc/partitions查看内核分区。

现在iscsi已经工作了,我们可以配置一个Filesystem资源来使用它。 挂载设备/dev/sda1/var/www/html ,写一个文件index.html

crm(live)configure# primitive webdata ocf:heartbeat:Filesystem params device=/dev/sda1 directory=/var/www/html fstype=ext4 op monitor interval=30s

crm(live)configure#  group webgrp vip webdata website  #按顺序将vip webdata website 添加到组webgrp

crm(live)configure# commit



node1

crm(live)node#    standby

crm(live)node#    online

另一个节点机监控




你可能感兴趣的:(Pacemaker实现资源管理)