• [原创]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配置完成。

  • 相关阅读:
    安装chrome driver(14)
    爬虫-selenium实现验证码自动登录(14)
    爬虫-反爬与反反爬(12)
    爬虫-模拟登录(13)
    爬虫-GIL与线程同步问题(11)
    爬虫-多进程(10)
    爬取csdn的数据与解析存储(9)
    Exchange Server 2016邮件系统建设方案
    Exchange 2016高可用及容灾架构选型参考
    Installing Exchange 2016 on Windows Server 2016 Step by Step
  • 原文地址:https://www.cnblogs.com/ode/p/3200799.html
Copyright © 2020-2023  润新知