当前位置: 首页 > HA > 正文

Clusters from Scratch 实验笔记

pacemaker 经典文档 Clusters_from_Scratch 的实验笔记,留作以后参考

hosts文件设置

# grep node /etc/hosts
192.168.15.11 node1.cluster.com node1
192.168.15.12 node2.cluster.com node2
192.168.15.13 node3.cluster.com node2

将hosts文件设置成类似上面的样子,并且保证各机器之间网络相通

配置ssh

# ssh-keygen -t dsa --生成公钥文件,在所有的节点执行
# for i in {1..3}; do ssh node${i} cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys; done
# for i in {1..3}; do scp /root/.ssh/authorized_keys node${i}:/root/.ssh; done
# for i in {1..3}; do ssh node${i} hostname; done

设置主机名

# for i in {1..3}; do ssh node${i} sed -i 's/.*//g' /etc/sysconfig/network; done
# for i in {1..3}; do ssh node${i} source /etc/sysconfig/network; done
# for i in {1..3}; do ssh node${i} hostname \$HOSTNAME; done --反斜线很重要,不然所有的机器都长一样啦

最终的效果:

# hostname
node1
# dnsdomainname
cluster.com

配置软件源

软件源的配置比较多样化,可以操作俺的另外一篇文章 centos-使用第三方源(redhat)

安装软件包

# for i in {1..3}; do ssh node${i} yum install -y pacemaker corosync; done

配置corosync

在/etc/corosync/corosync.conf文件中,主要调整这些参数

mcastaddr: 226.94.1.1 --组播地址
mcastport: 4000 --组播端口(UDP比TCP小一个端口,比如目前设置就使用了tcp:4000和udp:3999)
bindnetaddr: 192.168.16.0 --最后一位是掩码,为(256 - your_mask),比如我的掩码是255.255.240.0,则第三个点分十进制是16
rrp_mode: passive --文中的集群是3个节点(如果是两个节点的话,就可以保留rrp_mode为none)

为了让corosync使用pacemaker,需要配置这个文件

# cat /etc/corosync/service.d/pcmk
service {
    # Load the Pacemaker Cluster Resource Manager
    name: pacemaker
    ver: 1
}

完成后,将corosync.conf和pcmk配置文件分发到所有节点上

启动集群

# service pacemaker start
# crm_mon
Last updated: Thu Aug 27 16:54:55 2009Stack: openais
Current DC: node-1 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
3 Nodes configured, 2 expected votes
0 Resources configured.
============
Online: [ node1 node2 node3]

关闭stonith和忽略quorum

(虽然三个节点,但是还是希望剩下一个节点的时候可以工作)

# crm configure property no-quorum-policy=ignore
# crm configure property stonith-enabled=false

配置第一个测试资源

(飘移ip地址)

# crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 \
> params ip=192.168.15.200 cidr_netmask=32 \
> op monitor interval=30s timeout=60s
# crm_mon
============
Last updated: Fri Aug 28 15:23:48 2009
Stack: openais
Current DC: pcmk-1 - partition WITHOUT quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
3 Nodes configured, 3 expected votes
1 Resources configured.
============

Online: [ node1 node2 node3 ]
ClusterIP (ocf::heartbeat:IPaddr): Started node1

添加apache服务

# for i in {1..3}; do ssh node${i} yum install -y httpd wget; done

配置web首页内容

<html>
 <body>My Test Site - node2</body>
</html>

注意,为了测试ip地址在哪个节点,每个节点的首页文件不能相同

开启apache的状态监控功能

<Location /server-status>
   SetHandler server-status
   Order deny,allow
   Deny from all
   Allow from 127.0.0.1
</Location>

添加apache的资源

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

设置colocation约束,将apache和ip地址绑定在一起

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

设置资源的启动和停止顺序

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

修改资源的prefer节点

# crm configure location prefer-node1 WebSite 100: node1

增加gfs2支持

# for i in {1..3}; do ssh node${i} yum install -y cman gfs2-utils ccs; done

修改cman的默认quorum等待时间

# for i in {1..3}; do \
> do ssh node${i} sed -i.sed "s/.*CMAN_QUORUM_TIMEOUT=.*/CMAN_QUORUM_TIMEOUT=0/g" /etc/sysconfig/cman; \
> done

建立cman的配置文件

# ccs -f /etc/cluster/cluster.conf --createcluster cluster
# for i in {1..3}; do \
> ccs -f /etc/cluster/cluster.conf --addnode node{i}; \
> done

分发cluster.conf配置文件到各个节点的相应位置
此时,已经不使用corosync.conf配置文件了,其功能由cluster.conf全权代替,关于 cman 和 corosync 之间的不正常关系,请参考我的另外一篇博文 cman and corosync

启动集群

service pacemaker start --此时pacemaker会自动启动cman

建立 gfs2 文件系统资源

# mkfs.gfs2 -p lock_dlm -j 2 -t pcmk:web /dev/drbd1

关于gfs文件系统的相关问题,可以参考我的另外一篇博文 GFS2 初级

在共享文件系统上建立主页测试文件

# mount /dev/drbd1 /mnt/
# cat /mnt/index.html
<html>
 <body>My Test Site - GFS2</body>
</html>
# umount /mnt

配置文件系统资源

# configure primitive WebFS ocf:heartbeat:Filesystem \
> params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype="gfs2"
# configure colocation WebSite-with-WebFS inf: WebSite WebFS
# configure order WebSite-after-WebFS inf: WebFS WebSite

将系统设置为双active的模式

# configure clone WebIP ClusterIP \
> meta globally-unique="true" clone-max="2" clone-node-max="2"
# configure edit ClusterIP
# crm configure clone WebFSClone WebFS
# crm configure clone WebSiteClone WebSite

至此,整个实验已经搭建完成,整篇博文只是记录了该如何做,没有阐述为什么这么做;关于为什么,可以参考下面的文档,一定会找到比较满意的答案

参考文章
Clusters from Scratch
Configuration Explained

    分享到:

本文固定链接: http://klwang.info/pacemaker-cososync-cman-setup/ | 数据库|Linux|软件开发

该日志由 klwang 于2013年06月06日发表在 HA 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Clusters from Scratch 实验笔记 | 数据库|Linux|软件开发
关键字: , , , ,
【上一篇】
【下一篇】

Clusters from Scratch 实验笔记:等您坐沙发呢!

发表评论

*
快捷键:Ctrl+Enter