Docker实现postgresql的热备与自动切换

需求描述

新需求新需求,老板又整新活啦,具体如下:
给某厂开发了一套管理软件,部署在他们的机房。一共两台服务器,做灾备和应急切换。两台服务器上都会部署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  \
    --privileged  \
    --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=postgrespassword  \
    --env POSTGRESQL_USERNAME=customuser  \
    --env POSTGRESQL_PASSWORD=custompassword  \
    --env POSTGRESQL_DATABASE=customdatabase  \
    -v /www/postgresql/data:/bitnami/postgresql/  \
    -v /www/postgresql/custom-conf/:/bitnami/repmgr/conf/  \
    -v /www/postgresql/tmp/:/tmp/  \
    bitnami/postgresql-repmgr:14

server-1中运行

docker run -dit --restart always --name pg-1  \
    --privileged  \
    --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=postgrespassword  \
    --env POSTGRESQL_USERNAME=customuser  \
    --env POSTGRESQL_PASSWORD=custompassword  \
    --env POSTGRESQL_DATABASE=customdatabase  \
    -v /www/postgresql/data:/bitnami/postgresql/  \
    -v /www/postgresql/custom-conf/:/bitnami/repmgr/conf/  \
    -v /www/postgresql/tmp/:/tmp/  \
    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=postgrespassword  \
    --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“的地址访问数据库,并且自动读写分离

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇