docker swarm 搭建生产高可用的postgresql

本文介绍了如何使用Docker Swarm搭建高可用的PostgreSQL数据库集群,通过GlusterFS实现数据和配置共享,以及如何调整最大连接数以应对流量需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

系统连接postgresql的数据量不大,单节点就能满足需求,但是单节点出现故障时,就会很悲催。故用docker swarm搭建一个高可用postgresql数据库,用两个主机节点来组,当一个节点故障自动迁移到另外一个节点,数据和配置文件都存放在glusterfs共享存储中。docker swarm集群的搭建就不细说了。

节点ip
node1192.168.1.60
node2192.168.1.62

前期配置

在共享存储中创建相应的文件夹来存放数据和配置文件,具体可参考下面的stack文件,值得注意的地方是,需在挂载目录下设置适当的权限

sudo chown 1001:1001 /gfs-share/postgresql/data/
sudo chown 1001:1001 /gfs-share/postgresql/conf/

编写stack,并deploy运行服务

该操作是在portainer上执行的

version: '3.7'

services:
  postgresql:
    image: 'bitnami/postgresql:latest'
    hostname: postgresql
    user: root
    ports:
      - '5432:5432'
    volumes:
      - '/gfs-share/postgresql/data:/bitnami/postgresql/data'
      - '/gfs-share/postgresql/conf/:/opt/bitnami/postgresql/conf/'
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    environment:
    - POSTGRESQL_POSTGRES_PASSWORD=demo001@2021!  #超级用户postgres密码
      - POSTGRESQL_USERNAME=demo001
      - POSTGRESQL_PASSWORD=demo001@2021#
      - POSTGRESQL_DATABASE=demo
      - POSTGRESQL_LOG_TIMEZONE=Asia/Shanghai
      - POSTGRESQL_TIMEZONE=Asia/Shanghai
    deploy:
      mode: replicated
      replicas: 1 
      placement:
         constraints: # 添加条件约束
            - node.labels.role==pgsql

编写后,deploy该stack,把服务运行起来。

后期配置

服务正常运行后,会在/gfs-share/postgresql/conf/目录下看到一个postgresql.conf配置文件,现在要修改最大连接数,默认是100,一下子就爆满了,后面的就连不上了,现在改为10000。
打开postgresql.conf
在文件最底部加上

max_connections = 10000

保存退出,在portainer上停止stack,再启动stack,待服务正常运行,进入容器中,psql命令进入数据库,查看最大连接数已经修改成功。

demo=> show max_connections;
 max_connections 
-----------------
 10000
(1 row)

连接

192.168.1.60、192.168.1.60都能连接到数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值