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. 状态如下, 太长了(部分截图)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2023-02-24 cocos creator 模拟点击某个节点