dokcer-compose方式部署 mongo集群

声明:本人在单台机器上部署的mongo机器, mongo版本为8.0, 这玩意居然部署了一天,终于搞好了, 希望对后面想要部署的人有帮助

先创建一个mongodb目录, 后续的配置,数据都存放在这个目录中:

1. 创建mongo-secrets目录,mkdir  mongo-secrets

2. 创建keyfile文件, openssl rand -base64 756 > keyfile

3. 设置权限,所属组

chmod 600 mongo-secrets/keyfile

sudo chown 999:999 mongo-secrets/keyfile 

4. 创建docker-compose.yaml,如果你想用,请修改密码,将xxxxxx改成自己的。  文件如下: 

复制代码
services:
  mongo1:
    image: mongo:latest
    hostname: mongo1
    container_name: mongo1
    restart: unless-stopped
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: xxxxxxx
      MONGO_REPLICA_SET_NAME: rs0
    volumes:
      - ./mongo1/data:/data/db
      - ./mongo-secrets/keyfile:/etc/mongo-secrets/keyfile
    ports:
      - "27017:27017"
    networks:
      - mongo-cluster-net
    command: 
      - mongod
      - --replSet=rs0
      - --bind_ip_all
      - --keyFile=/etc/mongo-secrets/keyfile
      - --auth
    depends_on:
      - mongo2
      - mongo3

  mongo2:
    image: mongo:latest
    hostname: mongo2
    container_name: mongo2
    restart: unless-stopped
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: xxxxxxx
      MONGO_REPLICA_SET_NAME: rs0
    volumes:
      - ./mongo2/data:/data/db
      - ./mongo-secrets/keyfile:/etc/mongo-secrets/keyfile
    networks:
      - mongo-cluster-net
    command: 
      - mongod
      - --replSet=rs0
      - --bind_ip_all
      - --keyFile=/etc/mongo-secrets/keyfile
      - --auth

  mongo3:
    image: mongo:latest
    hostname: mongo3
    container_name: mongo3
    restart: unless-stopped
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: xxxxxxx
      MONGO_REPLICA_SET_NAME: rs0
    volumes:
      - ./mongo3/data:/data/db
      - ./mongo-secrets/keyfile:/etc/mongo-secrets/keyfile
    networks:
      - mongo-cluster-net
    command: 
      - mongod
      - --replSet=rs0
      - --bind_ip_all
      - --keyFile=/etc/mongo-secrets/keyfile
      - --auth

networks:
  mongo-cluster-net:
    driver: bridge
复制代码

5. 运行: docker-compose up -d

6. 查看结果:docker-compose ps -a

 状态一定要注意: 是Up状态,而不是restart状态。
7. 初始化集群

docker-compose exec mongo1 mongosh --username admin --password xxxxxx --authenticationDatabase admin --eval 'rs.initiate({_id: "rs0", members: [{_id: 0, host: "mongo1:27017"}, {_id: 1, host: "mongo2:27017"}, {_id: 2, host: "mongo3:27017"}]})'
 
8. 查看集群状态:
sleep 5 && docker-compose exec mongo1 mongosh --username admin --password xxxxxxx --authenticationDatabase admin --eval 'rs.status()'

9. 目录结构如下:

 10. 状态如下, 太长了(部分截图)

 

posted @   Please Call me 小强  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2023-02-24 cocos creator 模拟点击某个节点
点击右上角即可分享
微信分享提示