docker swarm 搭建生产高可用的postgresql

15 篇文章 0 订阅
1 篇文章 0 订阅

前言

系统连接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都能连接到数据库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是基于 Docker Swarm 搭建 LNMP 环境的步骤: 1. 安装 DockerDocker Swarm 2. 创建一个 Docker Swarm 集群 3. 创建一个 overlay 网络,用于容器之间的通信 ```bash docker network create --driver overlay my-network ``` 4. 创建一个 MySQL 服务 ```bash docker service create \ --name mysql \ --network my-network \ -e MYSQL_ROOT_PASSWORD=<password> \ -e MYSQL_DATABASE=<database> \ mysql:5.7 ``` 其中,`<password>` 是 MySQL 的 root 密码,`<database>` 是要创建的数据库名称。 5. 创建一个 Nginx 服务 ```bash docker service create \ --name nginx \ --network my-network \ -p 80:80 \ -p 443:443 \ -v /path/to/nginx.conf:/etc/nginx/nginx.conf \ --mount type=bind,source=/path/to/html,target=/usr/share/nginx/html \ nginx:latest ``` 其中,`/path/to/nginx.conf` 是自定义的 Nginx 配置文件路径,`/path/to/html` 是自定义的静态文件路径。 6. 创建一个 PHP-FPM 服务 ```bash docker service create \ --name php-fpm \ --network my-network \ --mount type=bind,source=/path/to/php,target=/var/www/html \ php:7-fpm ``` 其中,`/path/to/php` 是自定义的 PHP 代码路径。 7. 创建一个 Redis 服务 ```bash docker service create \ --name redis \ --network my-network \ redis:latest ``` 8. 创建一个运行 PHP 代码的服务 ```bash docker service create \ --name php \ --network my-network \ --mount type=bind,source=/path/to/php,target=/var/www/html \ --mount type=bind,source=/path/to/nginx.conf,target=/etc/nginx/nginx.conf \ --mount type=bind,source=/path/to/logs,target=/var/log/nginx \ --mount type=bind,source=/path/to/sessions,target=/var/lib/php/sessions \ --mount type=bind,source=/path/to/config,target=/usr/local/etc/php/conf.d \ php:7-fpm ``` 其中,`/path/to/logs` 是自定义的 Nginx 日志路径,`/path/to/sessions` 是自定义的 PHP 会话路径,`/path/to/config` 是自定义的 PHP 配置路径。 9. 验证 LNMP 环境是否正常工作 在浏览器中输入服务器的 IP 地址,应该能够看到 Nginx 的欢迎页面。在 PHP 代码中连接 MySQL 和 Redis 数据库,应该能够正常工作。 以上是基于 Docker Swarm 搭建 LNMP 环境的步骤,希望对你有帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值