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的官方网站下载到其最新版本: http://www.enterprisedb.com
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,如果对分区不熟请看“鸟哥”的文章
也可以到 www.redhat.com/docs下载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手册, http://www.redhat.com/docs
近日发现有网站开始转载我的文章,这个我非常高兴,非常感谢大 家支持!但是我发现好多网站转载时连我的原文出处都没有,文章题目还经常写着“原创”,这个太不厚道了,对于每一个写原创文章的作者这种做法都是不可取 的!借鸟哥的一句话:“原创文章都是作者一个字一个字打出来了,也经过自己一步一步的测试,希望大家给于尊重”!别外我当然是一个”枪手“写的东东大都是 公司的产品啦,哈哈!好了,进入正文:
版权所有,转载请注明出处!
作者:萧少聪 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的官方网站下载到其最新版本: http://www.enterprisedb.com
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,如果对分区不熟请看“鸟哥”的文章
也可以到 www.redhat.com/docs下载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手册, http://www.redhat.com/docs