在三个节点:172.29.154.8、172.29.154.9、172.29.154.10部署MongoDB 1主2从副本集、RabbitMQ主-主、MySQL主-从复制。这些节点是在同一个内网环境下的,节点间互通,各节点部署的服务器关系如下表,其中,MySQL的主节点是172.29.154.9,与其他的服务反过来了,目的是减轻单节点的压力。
本文采用docker-compose同时启动多台服务,如果只需要部署某一个服务,在后文中docker-compose.yml删除掉其他服务,然后仅参考关于该服务的相关配置即可。
节点 | MongoDB | RabbitMQ | MySQL |
---|---|---|---|
172.29.154.8 | 主 | 主 | 从 |
172.29.154.9 | 从 | 主 | 主 |
172.29.154.10 | 从 | / | / |
文章目录
镜像下载
本文各服务均采用docker库的最新版本,下载镜像时分别使用如下命令:
docker pull mongo
docker pull mysql
docker pull rabbitmq:management
编写docker-compose.yml文件
因为一次要部署的服务器较多,使用docker run也不便于保存,所以本文采用docker-compose的方式部署服务器。各节点的docker-compose.yml
文件如下。
节点172.29.154.8
version: "3"
services:
rabbitmq:
image: "rabbitmq:management"
restart: always
hostname: rabbit1
container_name: "rabbit1"
ports:
- "5672:5672"
- "15672:15672"
- "4369:4369"
- "1883:1883"
- "25672:25672"
volumes:
- /home/ubuntu/docker/db/rabbitmq/data:/var/lib/rabbitmq
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
RABBITMQ_NODENAME: rabbit1
RABBITMQ_ERLANG_COOKIE: mqerlangcookie
mongodb:
image: "mongo"
restart: always
container_name: "mongo1"
ports:
- "27017:27017"
environment:
- MONGO_INITDB_ROOT_USERNAME=ubuntu
- MONGO_INITDB_ROOT_PASSWORD=ubuntu
volumes:
- /home/ubuntu/docker/db/keydata:/opt/keyfile
- /home/ubuntu/docker/db/mongodb/data:/data/db
command: mongod --replSet rs --keyFile /opt/keyfile/mongo.key --auth
mysql:
image: "mysql"
restart: always
container_name: "mysql2"
network_mode: "host"
ports:
- "3306:3306"
volumes:
- /home/ubuntu/docker/db/mysql/conf:/etc/mysql/conf.d
- /home/ubuntu/docker/db/mysql/data:/var/lib/mysql
environment: