新需求新需求,老板又整新活啦,具体如下:
给某厂开发了一套管理软件,部署在他们的机房。一共两台服务器,做灾备和应急切换。两台服务器上都会部署web服务,数据库一主一从。数据库用的是postgresql,网上相关的资料有很多,这边会使用docker来简单部署,只有简单的几条命令!!!
注意:下文中server-0、server-1代表两台宿主服务器,pg-0、pg-1代表postgresql容器
试验中,192.168.77.102为server-0的ip,192.168.77.103为server-1的ip,在下列命令中出现时,需要替换为实际地址
第1步:修改server-0、server-1的hosts文件
server-0中的hosts添加:
127.0.0.1 pg-0
192.168.77.103 pg-1
server-1中的hosts添加:
127.0.0.1 pg-1
192.168.77.102 pg-0
第2步:安装postgresql
这边使用的镜像为bitnami/postgresql-repmgr,有兴趣的可自行查看
server-0中运行
docker run -dit --restart always --name pg-0 \
--net=host \
--env REPMGR_PARTNER_NODES=pg-0,pg-1 \
--env REPMGR_NODE_NAME=pg-0 \
--env REPMGR_NODE_NETWORK_NAME=pg-0 \
--env REPMGR_PRIMARY_HOST=pg-0 \
--env REPMGR_PASSWORD=repmgrpass \
--env POSTGRESQL_POSTGRES_PASSWORD=adminpassword \
--env POSTGRESQL_USERNAME=customuser \
--env POSTGRESQL_PASSWORD=custompassword \
--env POSTGRESQL_DATABASE=customdatabase \
-v /root/postgresql/data:/bitnami/postgresql/ \
-v /root/postgresql/custom-conf/:/bitnami/repmgr/conf/ \
-v /root/postgresql/conf:/opt/bitnami/postgresql/conf \
bitnami/postgresql-repmgr:14
server-1中运行
docker run -dit --restart always --name pg-1 \
--net=host \
--env REPMGR_PARTNER_NODES=pg-0,pg-1 \
--env REPMGR_NODE_NAME=pg-1 \
--env REPMGR_NODE_NETWORK_NAME=pg-1 \
--env REPMGR_PRIMARY_HOST=pg-0 \
--env REPMGR_PASSWORD=repmgrpass \
--env POSTGRESQL_POSTGRES_PASSWORD=adminpassword \
--env POSTGRESQL_USERNAME=customuser \
--env POSTGRESQL_PASSWORD=custompassword \
--env POSTGRESQL_DATABASE=customdatabase \
-v /root/postgresql/data:/bitnami/postgresql/ \
-v /root/postgresql/custom-conf/:/bitnami/repmgr/conf/ \
-v /root/postgresql/conf:/opt/bitnami/postgresql/conf \
bitnami/postgresql-repmgr:14
这步完成之后,其实已经实现了热备与故障自动切换的功能了,有兴趣的同学可自行尝试验证
第3步:安装 pgpool
server-0和server-1中运行
docker run -dit --restart always --name pgpool \
--env PGPOOL_BACKEND_NODES=0:pg-0:5432,1:pg-1:5432 \
--env PGPOOL_SR_CHECK_USER=customuser \
--env PGPOOL_SR_CHECK_PASSWORD=custompassword \
--env PGPOOL_ENABLE_LDAP=no \
--env PGPOOL_POSTGRES_USERNAME=postgres \
--env PGPOOL_POSTGRES_PASSWORD=adminpassword \
--env PGPOOL_ADMIN_USERNAME=admin \
--env PGPOOL_ADMIN_PASSWORD=adminpassword \
--add-host=pg-0:192.168.77.102 \
--add-host=pg-1:192.168.77.103 \
-p 9999:5432 \
bitnami/pgpool:4
这里要注意的是两个--add-host,
END,大功告成
之后,无论server-0还是server-1中的服务都可以用127.0.0.1:9999的地址访问数据库,并且自动读写分离
网友评论