scottsiu
RHEL5实现高可用HA集群+GFS+EnterpriseDB
近日发现有网站开始转载我的文章,这个我非常高兴,非常感谢大家支持!但是我发现好多网站转载时连我的原文出处都没有,文章题目还经常写着“原创”,这个太不厚道了,对于每一个写原创文章的作者这种做法都是不可取的!借鸟哥的一句话:“原创文章都是作者一个字一个字打出来了,也经过自己一步一步的测试,希望大家给于尊重”!别外我当然是一个”枪手“写的东东大都是公司的产品啦,哈哈!好了,进入正文:
版权所有,转载请注明出处!
作者:萧少聪 RHCE/CI
BLOG:scottsiu.cublog.cn或blog.csdn.net/scottsiu
前言:
几个大家要注意的地方:
1、做Cluster应该要有Fence设备,当一台机器出现问题时处于正常状态的机器会通过Fence将其重启或关机以释放IP、磁盘等资源。
2、做HA要对服务的启动脚本做一点修改以符合Cluster的要求。
3、GFS要建立在Cluster之上。
4、RHEL5 AP(高级平台版)已经带有Cluster组件,当中包括GFS、Cluster Suite、LVS等,不像RHEL4那样用另外安装。
1、网络
我的IP为
iscsi: 192.168.122.1
edb1: 192.168.122.21
edb2: 192.168.122.22
2.1、Linux中安装iscsi-target
到sf.net下载最新的iscsi-target
# tar zxvf iscsi-target.xxxxx.tar.gz
# cd iscsi-target.xxxxx
# make
# make install
# mkdir /iscsidisk
# dd if=/dev/zero of=/iscsidisk/sharedisk1.img bs=1k count=1 seek=2000K
(以上这句是用dd建立了一个2G大小的映像文件,也就是我们的一个iscsi映像磁盘)
# vim /etc/ietd.conf
找到"Target iqn",注意这行Target后的一串字符,是iscsi的标记
找到"Lun 0"一行,改为
Lun 0 Path=/iscsidisk/sharedisk1.img,Type=fileio
# chkconfig iscsi-target on
# /etc/init.d/iscsi-target start
2.2、在edb1、edb2中连接iscsi
# rpm -ivh iscsi-initiator-utils-6.2.0.742-0.5.el5.rpm
(RHEL5的光盘中有这个文件)
# chkconfig iscsid start
# /etc/init.d/iscsid start
# iscsiadm -m discovery -t sendtargets -p 192.168.122.1:3260
172.16.122.1:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz
(iqn.2001..........这部份应该和iscsi服务器中ietd.conf中的标记一样)
# iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 172.16.122.1:3260 -l
(以上两个iscsiadm的操作只在第一次连接iscsi服务器时要执行,以后每当iscsid启动都会自动连接)
# fdisk -l
(应该可以看到多出来一个/dev/sdx的分区)
3、在edb1、edb2中安装EnterpriseDB
在EnterpriseDB的官方网站下载到其最新版本:[url]http://www.enterprisedb.com[/url]
EnterpriseDB(以下我简写为EDB)是一个基于PostgreSQL并与Oracle语法兼容的数据库在OLTP的多并发性事务处理中比PostgreSQL有了很大的提高!
下载软件包进行解压(安装要有root权限):
#tar zxvf edb-linux-x86_82412.tar.gz
#cd edb-linux-x86_82412
#./pre-Install.sh
如果出现You may now install EnterpriseDB就可以正常安装了,这里主要是针对不同的LINUX版本生成EDB所要的连接的
#./edb-linux-x86_82412.bin -console
安装过程中会要求序列号
Select License Type:
[X] 1 - Install Full or Evaluation License
[ ] 2 - Install Express License
To select an item enter its number, or 0 when you are finished: [0]
这里如果你有在EDB官网上注册的话会收到一个30天无限制试用的SN,如果没有的话可以选2安装限制为1 CPU/1G RAM/6G Data的版本。
其它的选项默认就好了!
4、双节点HA集群
4.1 Fence
做HA的话就要有fence设备,这是什么东东,如APC、HP ilo、IPMI等等
这里以HP ilo为列,当前edb1、edb2的ilo IP分别是10.11.0.1、10.11.0.2用户名密码为redhat,在edb1中测试:
# fence_ilo -a 10.11.0.2 -l redhat -p redhat -o status
在edb2中测试:
# fence_ilo -a 10.11.0.1 -l redhat -p redhat -o status
如果返回正确,证明fence已经正常
4.2 HA Cluster
在REDHAT中配置Cluster可以通过GUI下的Cluster Manager进行非常简单以下我只给出配置文件
以下文件CP到每个节点上
/etc/cluster/cluster.conf
<?xml version="1.0"?>
<cluster alias="edb_ha" config_version="6" name="edb_ha">
<fence_daemon post_fail_delay="0" post_join_delay="3"/>
<clusternodes>
<clusternode name="edb1" nodeid="1" votes="1">
<fence>
<method name="1">
<device name="ilo1"/>
</method>
</fence>
</clusternode>
<clusternode name="edb2" nodeid="2" votes="1">
<fence>
<method name="1">
<device name="ilo2"/>
</method>
</fence>
</clusternode>
</clusternodes>
<cman expected_votes="1" two_node="1">
<multicast addr="224.0.0.1"/>
</cman>
<fencedevices>
<fencedevice agent="fence_ilo" hostname="10.11.0.1" login="redhat" name="ilo1" passwd="redhat"/>
<fencedevice agent="fence_ilo" hostname="10.11.0.2" login="redhat" name="ilo2" passwd="redhat"/>
</fencedevices>
<rm>
<failoverdomains>
<failoverdomain name="edb_domain" ordered="0" restricted="0">
<failoverdomainnode name="edb1" priority="1"/>
<failoverdomainnode name="edb2" priority="1"/>
</failoverdomain>
</failoverdomains>
<resources>
<ip address="192.168.122.20" monitor_link="1"/>
<clusterfs device="/dev/sdx1" force_unmount="0" fsid="10617" fstype="gfs" mountpoint="/data" name="Data_GFS" options=""/>
</resources>
<service autostart="1" domain="edb_domain" name="enterpriseDB" recovery="relocate">
<script file="/etc/init.d/edb_8.2" name="edb_script"/>
<ip ref="192.168.122.20"/>
<clusterfs ref="Data_GFS"/>
</service>
</rm>
</cluster>
/etc/hosts加入以下
192.168.122.21 edb1
192.168.122.22 edb2
4.3为了使EDB可以实现HA,我们要对EDB的启动脚本进行一点修改,如果我们要做其它数据库或服务的集群也是一样,具体随要求为:脚本要有start、stop、status、restart指令,并要求运行正常时返回"0",运行出错时返回"非0"。
5、GFS
上面的HA Cluster的配置文件当中已经有GFS的设定了,GFS要求建立在CLUSTER之上,所以只有在CLUSTER中的节点才能正常地挂载GFS分区,下来我们格式化一个GFS的分区
5.1
在edb1中执行以下操作
把/dev/sdx分为一个分区/dev/sdx1,如果对分区不熟请看“鸟哥”的文章
也可以到[url]www.redhat.com/docs[/url]下载REDHAT的官方管理手册进行参考
# mkfs.gfs2 -p lock_dlm -t edb_ha:gfs1 -j 3 /dev/sdx1
-p lock_dlm 定义为DLM锁方式,如果不加此参数,当在两个系统中同时挂载此分区时就会像EXT3格式一样,两个系统的信息不能同步
-t edb_ha:gfs1 DLM锁所在的表名字,edb_ha应与cluster.conf中Cluster的name相同,gfs1为一个自定义的名字我认为可以理解为分区的卷标
-j 3 GFS分区中最多支持多少个节点同时挂载,这个可以在使用中动态调整
/dev/sdx1 要格式化的分区
#make /data
#mount /dev/sdx1 /data
#cp /opt/EnterpriseDB/8.2/data/ /data/edb_data/ -rp
#/etc/init.d/cman start
5.2
在edb2中
# /etc/init.d/iscsid restart
# fdisk -l (看看是否与edb1一样)
# mount /dev/sdx1 /data
# ll /data (看看是否与edb1一样)
5.3测试
在edb1、edb2中
# /etc/init.d/cman start
# /etc/init.d/rgmanager start
(起动集群)
# clustat
(查看集群状态)
可以通过/etc/init.d/edb_8.2 stop关闭edb服务、拔网线、重启系统等对集群进行测试
5.4
在edb1、edb2中
# chkconfig cman on
# chkconfig rgmanager on
以使系统启动时自动开启HA集群
关于REDHAT的集群,请先阅读REDHAT官方的CLUSTER手册,[url]http://www.redhat.com/docs[/url]
qheart
[quote]原帖由 [i]scottsiu[/i] 于 2007-10-30 09:51 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6415154&ptid=911781][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
问题不错,后面有时间写一个有关的介绍出来 [/quote]
555...:em16:
多谢大大理解我们这些新手。期待拜读大作之日!
好像HEARTBEAT配置里面没有提到FENCING DEVICE这个设备。如果项目里面没有配这个设备是不是只能用HEARTBEAT做双机了?
另外,HEARTBEAT的帖子里面所举的/etc/ha.d/haresources这个文件配置里都少有提到共享SAN存储时的设置,是否是在此文件里用Filesystem::/dev/sdb1::/FS::ext3类似语句便可指定可切换的共享存储了?
jerrywjl
如果是RHEL5原光盘上的GFS和CLUSTER包在未更新到最新版本之前,配置cluster有点问题。比如说system-config-cluster,保存配置文件启动集群之后无法看到集群状态。这好像是一个bug,只有最新的system-config-cluster可以修复。
下面这些包,都应该升级到最新版本,我已经升级了:
rpm -ihv modcluster-0.9.2-6.el5.i386.rpm
rpm -ihv system-config-cluster-1.0.39-1.0.1.noarch.rpm
rpm -ihv cman-2.0.64-1.el5.i386.rpm
rpm -ihv rgmanager-2.0.24-1.el5.i386.rpm
rpm -ihv gfs-utils-0.1.11-3.el5.i386.rpm
启动 cman 服务:
[root@dom-0 ~]# service cman restart
Stopping cluster:
Stopping virtual machine fencing host... done
Stopping fencing... done
Stopping cman... done
Stopping ccsd... done
Unmounting configfs... done [ OK ]
Starting cluster:
Enabling workaround for Xend bridged networking... done
Loading modules... done
Mounting configfs... done
Starting ccsd... done
Starting cman... done
Starting daemons... done
Starting fencing... done
Starting virtual machine fencing host... done [ OK ]
第三个问题是我较真了!抱歉!
scottsiu
[quote]原帖由 [i]jerrywjl[/i] 于 2007-10-31 17:22 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6416042&ptid=911781][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
如果是RHEL5原光盘上的GFS和CLUSTER包在未更新到最新版本之前,配置cluster有点问题。比如说system-config-cluster,保存配置文件启动集群之后无法看到集群状态。这好像是一个bug,只有最新的system-config-clu ... [/quote]
前于RHEL5.0中的这个BUG。。。。
可以用以下方式解决:
ln -s /usr/sbin/cman_tool /sbin/cman_tool