美文网首页
Docker实现postgresql的热备与自动切换

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

作者: 芼芼567 | 来源:发表于2022-09-27 15:37 被阅读0次

    新需求新需求,老板又整新活啦,具体如下:

    给某厂开发了一套管理软件,部署在他们的机房。一共两台服务器,做灾备和应急切换。两台服务器上都会部署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的地址访问数据库,并且自动读写分离

    相关文章

      网友评论

          本文标题:Docker实现postgresql的热备与自动切换

          本文链接:https://www.haomeiwen.com/subject/srycartx.html