pacemaker+corosync+postgresql

测试环境:

系统Redhat7.3

数据库Postgresql-10

1、环境配置:

配置主机名

hostnamectl set-hostname node1

 

关闭selinux

[root@node1 ~]# cat /etc/selinux/config |grep -v ^#

SELINUX=disabled

SELINUXTYPE=targeted

 

关闭防火墙

[root@node1 ~]# systemctl stop firewalld

[root@node1 ~]# systemctl disable firewalld

[root@node1 ~]# iptables -F

[root@node1 ~]# iptables -L

 

配置域名解析

[root@node1 ~]# cat /etc/hosts

192.168.21.66 node1

192.168.21.67 node2

 

安装软件

[root@node1 ~]#yum install -y pacemaker corosync pcs ipvsadm

 

2、启用pcsd服务

在所有节点执行:

[root@node1 ~]# systemctl start pcsd.service

[root@node1 ~]# systemctl enable pcsd.service

3、设置hacluster用户密码

在所有节点执行:

[root@node1 ~]# echo hacluster | passwd hacluster --stdin

4、集群认证

在任何一个节点上执行:

[root@node1 ~]# pcs cluster auth -u hacluster -p hacluster node1 node2

5、同步配置

在任何一个节点上执行:

[root@node1 ~]# pcs cluster setup --last_man_standing=1 --name pgcluster node1 node2

6、启动集群

在任何一个节点上执行:

[root@node1 ~]# pcs cluster start --all

 

7、安装配置postgresql

所有节点

[root@node1 ~]# useradd postgres

[root@node1 ~]# passwd postgres

[root@node1 ~]# vim /home/postgres/.bash_profile

添加:

export PGDATA=/app/data

export PATH=/app/pgsql/bin:$PATH

[root@node1 ~]# mkdir /app/

[root@node1 ~]# mkdir /app/data

[root@node1 ~]# chown postgres.postgres /app/data/

[root@node1 ~]# tar -zxvf postgresql-10.1.tar.gz

[root@node1 postgresql-10.1]# ./configure --prefix=/app/pgsql

[root@node1 postgresql-10.1]# gmake

[root@node1 postgresql-10.1]# gmake install

[root@node1 ~]# mkdir /app/xlog_archive

[root@node1 ~]# chown postgres.postgres /app/xlog_archive/

主节点

[postgres@node1 ~]$ initdb

修改配置文件

[root@node1 ~]# vim /app/data/postgresql.conf

[root@node1 ~]# cat /app/data/postgresql.conf |grep -v '^#'|grep -v '^$'|grep -v ^$'\t'

listen_addresses = '*'        

port = 5432                            

max_connections = 100                  

shared_buffers = 128MB                 

dynamic_shared_memory_type = posix     

wal_level = hot_standby                 

synchronous_commit = on       

wal_log_hints = on                   

archive_mode = on              

archive_command = 'cp %p /app/xlog_archive/%f'         

max_wal_senders = 5           

wal_keep_segments = 32        

wal_sender_timeout = 5000       

hot_standby = on                      

wal_receiver_status_interval = 2       

hot_standby_feedback = on             

wal_receiver_timeout = 60s             

logging_collector = on         

log_timezone = 'PRC'

datestyle = 'iso, mdy'

timezone = 'PRC'

lc_messages = 'en_US.utf8'                    

lc_monetary = 'en_US.utf8'                     

lc_numeric = 'en_US.utf8'                     

lc_time = 'en_US.utf8'                         

default_text_search_config = 'pg_catalog.english'

restart_after_crash = on 

            

[root@node1 ~]# vim /data/postgresql/data/pg_hba.conf

添加

host   all              all      192.168.21.0/24         md5

host   replication     all     192.168.21.0/24         md5

 

启动数据库,创建用户。

postgres=# alter user postgres with password 'postgres';

postgres=# create user replicator with login  replication password 'replicator';

 

备节点

[root@node2 ~]# chmod 700 /app/data/

[postgres@node2 ~]$ pg_basebackup -h node3 -U postgres -D /app/data/ -X s

 

停掉主节点

7、配置自动切换

[root@node1 ~]# cat /app/cluster_setup.sh

pcs cluster cib pgsql_cfg

pcs -f pgsql_cfg property set no-quorum-policy="ignore"           

pcs -f pgsql_cfg property set stonith-enabled="false"                      

pcs -f pgsql_cfg resource defaults resource-stickiness="INFINITY"      

pcs -f pgsql_cfg resource defaults migration-threshold="3"                

pcs -f pgsql_cfg resource create vip-master IPaddr2 ip="192.168.21.70" cidr_netmask="24" \

op start  timeout="60s" interval="0s"  on-fail="restart"    \

op monitor timeout="60s" interval="10s" on-fail="restart"    \

op stop    timeout="60s" interval="0s"  on-fail="block"                                           

pcs -f pgsql_cfg resource create vip-slave IPaddr2 ip="192.168.21.71" cidr_netmask="24" \

op start   timeout="60s" interval="0s"  on-fail="restart"    \

op monitor timeout="60s" interval="10s" on-fail="restart"    \

op stop    timeout="60s" interval="0s"  on-fail="block"                                                  

pcs -f pgsql_cfg resource create pgsql pgsql \

pgctl="/app/pgsql/bin/pg_ctl" \

psql="/app/pgsql/bin/psql" \

pgdata="/app/pgdata/" \

config="/app/pgdata/postgresql.conf" \

rep_mode="sync" node_list="node1 node2" master_ip="192.168.21.70"  \

repuser="replicator" \

primary_conninfo_opt="password=replicator \

keepalives_idle=60 keepalives_interval=5 keepalives_count=5" \

restart_on_promote='true' \

op start   timeout="60s" interval="0s"  on-fail="restart" \

op monitor timeout="60s" interval="4s" on-fail="restart" \

op monitor timeout="60s" interval="3s" on-fail="restart" role="Master" \

op promote timeout="60s" interval="0s"  on-fail="restart" \

op demote  timeout="60s" interval="0s"  on-fail="stop" \

op stop    timeout="60s" interval="0s"  on-fail="block"      

pcs -f pgsql_cfg resource master pgsql-cluster pgsql master-max=1 master-node-max=1 clone-max=3 clone-node-max=1 notify=true

pcs -f pgsql_cfg resource group add master-group vip-master       

pcs -f pgsql_cfg resource group add slave-group vip-slave                

pcs -f pgsql_cfg constraint colocation add master-group with master pgsql-cluster INFINITY   

pcs -f pgsql_cfg constraint order promote pgsql-cluster then start master-group symmetrical=false score=INFINITY                                                                                                 

pcs -f pgsql_cfg constraint order demote  pgsql-cluster then stop  master-group symmetrical=false score=0                                                                                                               

pcs -f pgsql_cfg constraint colocation add slave-group with slave pgsql-cluster INFINITY        

pcs -f pgsql_cfg constraint order promote pgsql-cluster then start slave-group symmetrical=false score=INFINITY                                                                                                       

pcs -f pgsql_cfg constraint order demote  pgsql-cluster then stop  slave-group symmetrical=false score=0

pcs cluster cib-push pgsql_cfg

执行操作文件

[root@node1 app]# sh cluster_setup.sh

 

查看集群状态

[root@node1 app]# pcs status

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值