[原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(三)
五、准备HA环境
1、准备yum源
a、安装vsftp服务,将光盘镜像copy到本地ftp目录作为yum源。
[root@s1 ~]# mount
可以看到cdrom已经挂载了,首先安装vsftp服务
[root@s1 ~]# cd /media/RHEL_6.3\ x86_64\ Disc\ 1/Packages/
[root@s1 Packages]# rpm -ivh vsftpd-2.2.2-11.el6.x86_64.rpm
[root@s1 Packages]# rpm -ivh ftp*
b、启动vsftp服务
[root@s1 Packages]# /etc/init.d/vsftpd start
设置vsftpd服务开机启动
[root@s1 ~]# chkconfig vsftpd on
c、将光盘镜像copy到vsftp的目录
ftp安装完成后,默认创建/var/ftp/pub目录,我们就把RHEL的ISO中所有文件copy到这个目录:
[root@s1 pub]# cp -a /media/RHEL_6.3\ x86_64\ Disc\ 1/* /var/ftp/pub/
2、配置s1的yum源
[root@s1 ~]# vim /etc/yum.repos.d/rhel-source.repo
#-------------------------yum源的内容 begin--------------------
[rhel-main]
name=Red Hat Enterprise Linux $Main
baseurl=ftp://192.168.1.221/pub/
enabled=1
gpgcheck=0
[rhel-Server]
name=Server
baseurl=ftp://192.168.1.221/pub/Server
enabled=1
gpgcheck=0
[HighAvailability]
name=HighAvailability
baseurl=ftp://192.168.1.221/pub/HighAvailability
enabled=1
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=ftp://192.168.1.221/pub/LoadBalancer
enabled=1
gpgcheck=0
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=ftp://192.168.1.221/pub/ScalableFileSystem
enabled=1
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=ftp://192.168.1.221/pub/ResilientStorage
enabled=1
gpgcheck=0
#-------------------------yum源的内容 end--------------------
关闭selinux
[root@s2 ~]# setenforce 0
禁用selinux,编辑selinux配置文件
[root@s2 ~]# vim /etc/selinux/config
设置SELINUX=disabled。
停止iptables服务,禁止iptables开机启动
[root@s2 ~]# /etc/init.d/iptables stop
[root@s2 ~]# chkconfig iptables off
更新yum源
[root@s1 ~]# yum clean all
[root@s1 ~]# yum update
2、配置s2的yum源
将s1的yum源配置文件copy到s2即可。
[root@s2 ~]# scp root@192.168.1.221:/etc/yum.repos.d/rhel-source.repo /etc/yum.repos.d/
同样的,关闭selinux,设置SELINUX=disabled,停止iptables服务,禁止iptables开机启动,之后更新yum源。
3、编辑s1和s2的hosts文件
[root@s1 ~]# vim /etc/hosts
增加以下内容,IP地址均为心跳线IP地址
192.168.0.221 s1 s1
192.168.0.222 s2 s2
4、安装iscsi组件,挂载存储设备
a、安装iscsi组件
[root@s1 ~]# yum install iscsi*
b、扫描和连接iscsi设备
扫描iscsi设备
[root@s1 ~]# iscsiadm -m discovery -t st -p 192.168.0.100 -discovery
连接iscsi设备
[root@s1 ~]# iscsiadm -m node -p 192.168.0.100 -l
fdisk -l查看分区情况
/dev/sdf就是存储上我需要挂载的盘符
这里把s1重启,验证iscsi设备是否可以开机自动连接。启动之后fdisk -l查看分区情况,看到/dev/sdf仍然可以连接,继续下一步。SUSE中可能还需要修改iscsi的配置文件,暂时跳过不做验证了。
c、创建挂载目录,挂载iscsi盘
首先格式化
[root@s1 /]# mkfs.ext3 /dev/sdf
再挂载
[root@s1 ~]# mkdir /mnt/iscsi
[root@s1 ~]# mount /dev/sdf /mnt/iscsi
d、umount之后,在s2上重复上面的步骤4
[root@s1 mnt]# umount /dev/sdf
5、停止Network NetworkManager服务,设为开机不自动启动
[root@s1 ~]# /etc/init.d/ NetworkManager stop
[root@s1 ~]# chkconfig NetworkManager off
六、迁移EDB的data目录到iscsi存储设备
1、停止ppas服务
[root@s1 edbdata]# /etc/init.d/ppas-9.2 stop
2、修改/etc/init.d/ppas-9.2启动脚本中的data目录指向
[root@s1 ~]# vim /etc/init.d/ppas-9.2
在文件中修改data路径和日志路径为iscsi设备在本地挂载的路径,我这里修改为/mnt/iscsi/edb/data和/mnt/iscsi/edb/data/pg_log
3、将原来的data目录完整copy到iscsi设备
[root@s1 ~]# cp -rcp /opt/PostgresPlus/9.2AS/data /mnt/iscsi/edb/
这里的权限需要与默认安装时的一样
4、在s1上删除旧有的data目录,尝试启动data目录迁移后的ppas服务
[root@s1 ~]# mv /opt/PostgresPlus/9.2AS/data /opt/PostgresPlus/9.2AS/data_bak
[root@s1 ~]# /etc/init.d/ppas-9.2 start
在s1上的ppas服务成功启动,说明edb的data目录迁移成功!
5、设置s1和s2的ppas服务不要开机启动
[root@s1 ~]# chkconfig ppas-9.2 off
[root@s2 ~]# chkconfig ppas-9.2 off
6、在s2上重复步骤1、步骤2、步骤4。
修改/etc/init.d/ppas-9.2文件时,直接从s1上scp到s2即可。另外需要注意的是,在s2上安装edb时,应该将s1的数据目录清空后再安装。因为我之前在s1上做了s1到s3的Stream Replication的配置,在s2安装完后,应当将数据目录情况,再次还原一次s1的数据目录,否则会造成s1无法启动。
七、安装HA包和配置HA的准备工作
1、安装HA所需的包
该操作需要在s1和s2上都做一遍。
[root@s1 ~]# yum groupinstall –y High*
安装过程很快,立等可取。
2、启动ricci服务,并设为开机启动
该操作需要在s1和s2上都做一遍。
[root@s1 ~]# /etc/init.d/ricci start & chkconfig ricci on
3、设置用户ricci的密码
[root@s1 ~]# passwd ricci //6个0
4、在s1上配置HA
a、创建集群名称
[root@s1 ~]# ccs -h s1 --createcluster edb_cluster
这里我创建的集群名称为edb_cluster
b、添加集群节点
[root@s1 ~]# ccs -h s1 --addnode s1
[root@s1 ~]# ccs -h s1 --addnode s2
查看节点
[root@s1 ~]# ccs -h s1 --lsnodes
c、添加fence设备
添加s1上的fence设备:
[root@s1 /]# ccs -h s1 --addfencedev fence_01 agent=fence_ipmilan ipaddr=192.168.0.200 login=USERID passwd=PASSW0RD
添加s2上的fence设备:
[root@s1 /]# ccs -h s1 --addfencedev fence_02 agent=fence_ipmilan ipaddr=192.168.0.201 login=USERID passwd=PASSW0RD
为s1节点添加fence设备
[root@s1 /]# ccs -h s1 --addmethod fence_s1 s1
为s1节点添加fence设备
[root@s1 /]# ccs -h s1 --addmethod fence_s2 s2
关联s1节点fence
[root@s1 /]# ccs -h s1 --addfenceinst fence_01 s1 fence_s1
关联s2节点fence
[root@s1 /]# ccs -h s1 --addfenceinst fence_02 s2 fence_s2
查看刚刚创建的fence设备
[root@s1 ~]# ccs -h s1 --lsfenceinst
d、创建故障域
创建故障域edb_ domain,有限制无序,且失效节点重新加入集群后服务无需返回该节点
[root@s1 ~]# ccs -h s1 --addfailoverdomain edb_domain restricted ordered=0 nofailback
[root@s1 ~]# ccs -h s1 --addfailoverdomainnode edb_domain s1 1
[root@s1 ~]# ccs -h s1 --addfailoverdomainnode edb_domain s2 1
查看故障域
e、创建资源与服务
创建VIP资源,并且监控资源
[root@s1 /]# ccs -h s1 --addresource ip address=192.168.1.228 monitor_link=1
[root@s1 /]# ccs -h s1 --addresource fs name=edb_share fstype=ext4 device=/dev/sdf mountpoint=/mnt/iscsi force_unmount=1 self_fence=1
// force_unmount表示节点失效后强制卸载,self_fence表示强制卸载无效后对该节点做fence动作
创建edb服务启动脚本
[root@s1 /]# ccs -h s1 --addresource script name=edb_script file=/etc/init.d/ppas-9.2
f、创建服务
[root@s1 /]# ccs -h s1 --addservice edb_service domain=edb_domain recovery=relocate
//edb_service表示服务名称,relocate表示若节点失效先尝试在该节点重启服务再切换节点重启服务
[root@s1 /]# ccs -h s1 --addsubservice edb_service ip ref=192.168.1.228
//添加服务的子服务VIP
[root@s1 /]# ccs -h s1 --addsubservice edb_service ip:fs ref=edb_share
//添加子服务的下级子服务
[root@s1 /]# ccs -h s1 --addsubservice edb_service ip:fs:script ref=edb_script
//同上
最后的结构是edb_service服务先启VIP,再挂载iscsi,最后启动edb
查看创建的所有服务与资源
[root@s1 /]# ccs -h s1 --lsservices
还要告诉集群是双节点
[root@s1 /]# ccs –h s1 two_node=1 expected_votes=1
5、将HA的配置文件同步到集群的每个节点
[root@s1 /]# ccs -h s1 --sync --activate
最好是将配置文件手动copy到其他节点!
s1与s2同步开启cman服务,分别开启rgmanager服务,并将cman和rgmanager服务都设为开机自启。
[root@s1 /]# /etc/init.d/cman start
[root@s1 ~]# /etc/init.d/rgmanager start
[root@s1 ~]# chkconfig cman on
[root@s1 ~]# chkconfig rgmanager on
至此,RHEL HA搭建完毕,但是还要做一件事情:为edb做一次归档
[root@s1 ~]# mkdir /mnt/iscsi/archivedir/
[root@s1 ~]# chown enterprisedb.enterprisedb /mnt/iscsi/archivedir/
修改配置文件:
[root@s8 ~]# vim /mnt/iscsi/edb/data/postgresql.conf
postgresql.conf:
wal_level = archive
archive_mode = on
archive_command = 'cp -i %p /mnt/iscsi/archivedir/%f < /dev/null'
[root@s8 ~]# /etc/init.d/ppas-9.2 restart
6、集群测试
[root@s1 ~]# clustat
使用watch命令可以更方便的以固定间隔时间查看
[root@s1 ~]# watch -n1 clustat
其中,n后的时间单位为秒。
使用fence命令,手动fense节点s2
[root@s1 ~]# fence_node s2
节点s2重启。
拔业务线,其他节点可以接管服务。
手动切换节点:
[root@s2 ~]# clusvcadm -r edb_service -m s1
HA配置完成。
作者:vincent zhang
出处:http://ode.cnblogs.com http://odevincent.blog.51cto.com
Email:wensheng.zhang#postgres.cn
本作品由vincent zh创作,采用知识共享署名-非商业性使用-禁止演绎 3.0 中国大陆许可协议进行许可。