version: "3.7"
services:
rabbit1:
image: rabbitmq:3.8.1
networks:
- dms
volumes:
- rabbitmq-data1:/var/lib/rabbitmq
environment:
- RABBITMQ_ERLANG_COOKIE="xxl_civic_xxl"
- RABBITMQ_DEFAULT_USER="dms"
- RABBITMQ_DEFAULT_PASS="sco2018cass"
ports:
- 5672:5672
- 15672:15672
hostname: rabbit1
deploy:
replicas: 1
placement:
constraints:
- node.hostname == master
rabbit2:
image: rabbitmq:3.8.1
networks:
- dms
volumes:
- rabbitmq-data2:/var/lib/rabbitmq
environment:
- RABBITMQ_ERLANG_COOKIE="xxl_civic_xxl"
- RABBITMQ_DEFAULT_USER="dms"
- RABBITMQ_DEFAULT_PASS="sco2018cass"
hostname: rabbit2
ports:
- 5673:5672
- 15673:15672
deploy:
replicas: 1
placement:
constraints:
- node.hostname == node1
rabbit3:
image: rabbitmq:3.8.1
networks:
- dms
volumes:
- rabbitmq-data3:/var/lib/rabbitmq
environment:
- RABBITMQ_ERLANG_COOKIE="xxl_civic_xxl"
- RABBITMQ_DEFAULT_USER="dms"
- RABBITMQ_DEFAULT_PASS="sco2018cass"
hostname: rabbit3
ports:
- 5674:5672
- 15674:15672
deploy:
replicas: 1
placement:
constraints:
- node.hostname == node2
volumes:
rabbitmq-data1:
driver: local
rabbitmq-data2:
driver: local
rabbitmq-data3:
driver: local
networks:
#定义服务网桥名称
dms:
#指定网桥驱动,有bridge/overlay,默认是bridge
driver: overlay
#false-统自动创建网桥名,格式为: 目录名_网桥名,默认为false; true-使用外部创建的网桥,需要自己手动创建
external: true
创建集群
docker stack deploy -c rabbitmq.yml rabbitmq
分别进去3个pod中,重置加入集群
//进入rabbit1容器,作为集群基准
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
//进入rabbit2容器
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app
//进入rabbit3容器
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app
常见操作
# 添加账号
rabbitmqctl add_user 账号 密码
# 设置用户级别/角色
rabbitmqctl set_user_tags 账号 administrator
# 修改密码
rabbitmqctl change_password Username Newpassword
# 删除用户
rabbitmqctl delete_user Username
# 查看用户清单
rabbitmqctl list_users
# 为用户设置administrator角色
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
问题无法登陆
rabbitmqctl add_user admin admin
# 为用户 admin 设置 administrator 级别
rabbitmqctl set_user_tags admin administrator
# 超级用户级别拥有所有资源权限,不需要设置
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
问题2,页面15672无法打开
rabbitmq-plugins list
rabbitmq-plugins enable rabbitmq_management 启动后15672才能打开