赞
踩
我们使用 “节点” 来指代 RabbitMQ 实例,当我们谈到 RabbitMQ 节点时指的是 RabbitMQ 应用程序和其所在的 Erlang 节点。
启动节点有以下几种方式
rabbitmq-server start
或者
service rabbitmq-server start
或者以守护程序的方式在后台运行:
./rabbitmq-server -detached
该命令会同时启动应用程序和 Erlang 节点。
在 RabbitMQ 的安装目录下执行以下命令时,rabbitmqctl 会和本地节点通信并指示其干净的关闭。
rabbitmqctl stop
该命令会同时关闭应用程序和 Erlang 节点。
启动应用程序可输入以下命令:
rabbitmqctl start_app
仅停止应用程序可输入以下命令:
rabbitmqctl stop_app
RabbitMQ 权限系统使得单个用户可以跨越多个 vhost 进行授权。但是必须创建多个控制条目。
RabbitMQ 配置远程连接
远程访问 RabbitMQ 自己增加一个用户,步骤如下:
sudo rabbitmqctl add_user admin 123123
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p '/' admin '.' '.' '.'
sudo service rabbitmq-server restart
之后就能用admin用户远程连接rabbitmq server了。
注意:RabbitMQ 默认使用 5672 端口,如果是在云端部署的话需要确认云端的 5672 端口开启。
rabbitmq-service start // 启动 RabbitMQ 节点
rabbitmq-service stop // 关闭 RabbitMQ 节点
rabbitmq-server restart // 重启 RabbitMQ 节点
rabbitmqctl start_app // 启动应用
rabbitmqctl stop_app // 停止应用
rabbitmqctl reset // 重置应用
rabbitmqctl shutdown // 关闭应用
rabbitmqctl status // 查看状态
rabbitmqctl reset 将 RabbitMQ 节点重置还原到最初状态。包括从原来所在的集群中删除此节点,从管理数据库中删除所有的配置数据,如己配置的用户、vhost 等,以及删除所有的持久化消息。执行 rabbitmqctl reset 命令前必须停止 RabbitMQ 应用(比如先执行 rabbitmqctl stop_app ) 。
在 RabbitMQ 中,用户是访问控制 ( Access Contro l) 的基本单元,且单个用户可以跨越多
个 vhost 进行授权。针对一至多个 vhost,用户可以被赋予不同级别的访问权限,并使用标准的用户名和密码来认证用户。
rabbitmqctl add_user {username} {password} // 添加用户
rabbitmqctl delete_user {username} // 删除用户
rabbitmqctl change_password {username} {newpassword} // 修改密码
rabbitmqctl clear_password {username} // 清除用户密码
rabbitmqctl authentiçate_user {username} {password} // 验证用户
rabbitmqctl set_user_tags {username} administrator // 分配角色,设置用户标签
rabbitmqctl list_users // 列出所有用户
将新虚拟主机授权给新用户: rabbitmqctl set_permissions -p vhost_name username ‘.’ '.’ ‘.*’
用户的角色分为 5 种类型:
设置角色 rabbitmqctl set_user_tags {username} {tag …}
tag 参数用于设置0 个、1 个或者多个的角色,设置之后任何之前现有的身份都会被删除。
rabbitmqctl set_user_tags root policymaker , management
设置用户权限 rabbitmqctl set_permissions -p VHostPath admin ConfP WriteP ReadP
查询所有权限 rabbitmqctl list_permissions [-p vhost]
指定用户权限 rabbitmqctl list_user_permissions {user_name}
清除用户权限 rabbitmqctl clear_permissions [-p vhost] {user_name}
其中 vhost 用于设置禁止用户访问的虚拟主机的名称, 默认为"/" ; username 表示禁止访问特定虚拟主机的用户名称。
添加权限: rabbitmqctl set_permissions -p / username “." ".” “.*”
修改用户角色:rabbitmqctl set_user_tags username administrator
权限设置说明:rabbitmqctl set_permissions [-p vhostpath] {user} {conf} {write} {read}
Vhostpath:授予用户访问权限的 vhost 名称,可以设置为默认值,即 vhost 为 “/”。
user:可以访问指定vhost 的用户名。
Conf:一个正则表达式 match 哪些配置资源能够被该用户访问。
Write:一个正则表达式 match 哪些配置资源能够被该用户读写。
Read:一个正则表达式 match 哪些配置资源能够被该用户访问读。
注:可配直指的是队列和交换器的创建及删除之类的操作;可写指的是发布消息;可读指
与消息有关的操作,包括读取消息及清空整个队列等。
rabbitmqctl add_vhost {vhost_name} // 添加vhost,新增虚拟主机
rabbitmqctl delete_vhost // 删除vhost
rabbitmqctl list_vhost // 列出所有的vhost
rabbitmqctl set_permissions [-p] // 设置用户对应的权限
rabbitmqctl list_user_permissions // 列出用户的权限
rabbitmqctl list_permissions [-p] // 列出vhost的权限
rabbitmqctl clear_permissions [-p] // 清除用户的权限
rabbitmqctl list_queues [-p] // 列出vhsot中对应的queue
rabbitmqctl list_exchanges [-p] // 列出vhsot中对应的交换机
rabbitmqctl list_bindings [-p] // 列出对应的绑定信息
rabbitmqctl list_connections // 列出对应的连接数
rabbitmqctl list_channels // 列出对应的信道
rabbitmqctl list_consumers // 列出对应的消费者
rabbitmqctl list_queues -p vhost_test1 //列出queues
rabbitmqctl list_queues -p vhost_test1 name messages consumers memory //查看queues对应统计信息
wohu@wohu:~$ docker pull rabbitmq
Using default tag: latest
latest: Pulling from library/rabbitmq
7ddbc47eeb70: Pull complete
c1bbdc448b72: Pull complete
8c3b70e39044: Pull complete
45d437916d57: Pull complete
916459a32f87: Pull complete
aba97e76a6d7: Pull complete
6cfc7646d503: Pull complete
5e8c71984192: Pull complete
16722d38aada: Pull complete
b3a7c7a8fb05: Pull complete
Digest: sha256:3c0ebabfb9e8b53b18d4ee060019718f47df17dc4a333f1ae1715963216216bd
Status: Downloaded newer image for rabbitmq:latest
wohu@wohu:~$ docker run -d --log-opt max-size=100m --restart=always --hostname wohu -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone -p 5672:5672 -p 8081:15672 rabbitmq:latest
2aca4e39bb8d5d1fd2373740497c72a1e1ec1638ce98f74dc6aec27c554f1ff2
参数说明:
参数 | 含义 |
---|---|
–log-opt max-size=100m | 指定日志文件大小上限 |
–log-opt max-file=3 | 指定日志文件个数 |
–hostname wohu | 更改容器主机名为 wohu,否则默认显示数字和字母的混合 |
–restart=always | docker 服务重启时,容器能够自动启动 |
-v /etc/localtime:/etc/localtime | 让容器共享主机的 localtime |
-v /etc/timezone:/etc/timezone | 让容器共享主机的 timezone |
-p 5672:5672 | 将主机 5672 端口映射到容器端口 5672 |
说明:
docker 日志默认位置在 /var/lib/docker/containers/containeid 目录下面的 containeid-json.log 文件中
wohu@wohu:~$ docker exec -ti 2a /bin/bash
root@wohu:/# rabbitmqctl list_users
Listing users ...
user tags
guest [administrator]
root@wohu:/# rabbitmqctl add_user admin 123123
Adding user "admin" ...
root@wohu:/# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
root@wohu:/# rabbitmqctl set_permissions -p '/' admin '.' '.' '.'
Setting permissions for user "admin" in vhost "/" ...
root@wohu:/# exit
exit
wohu@wohu:~$ docker restart 2a
2a
wohu@wohu:~$ docker exec -ti 2a /bin/bash
root@wohu:/# rabbitmqctl list_vhosts
Listing vhosts ...
name
/
root@wohu:/# rabbitmqctl list_users
Listing users ...
user tags
admin [administrator]
guest [administrator]
root@wohu:/# rabbitmq-plugins list Listing plugins with pattern ".*" ... Configured: E = explicitly enabled; e = implicitly enabled | Status: * = running on rabbit@wohu |/ [ ] rabbitmq_amqp1_0 3.8.1 [ ] rabbitmq_auth_backend_cache 3.8.1 [ ] rabbitmq_auth_backend_http 3.8.1 [ ] rabbitmq_auth_backend_ldap 3.8.1 [ ] rabbitmq_auth_backend_oauth2 3.8.1 [ ] rabbitmq_auth_mechanism_ssl 3.8.1 [ ] rabbitmq_consistent_hash_exchange 3.8.1 [ ] rabbitmq_event_exchange 3.8.1 [ ] rabbitmq_federation 3.8.1 [ ] rabbitmq_federation_management 3.8.1 [ ] rabbitmq_jms_topic_exchange 3.8.1 [ ] rabbitmq_management 3.8.1 [ ] rabbitmq_management_agent 3.8.1 [ ] rabbitmq_mqtt 3.8.1 [ ] rabbitmq_peer_discovery_aws 3.8.1 [ ] rabbitmq_peer_discovery_common 3.8.1 [ ] rabbitmq_peer_discovery_consul 3.8.1 [ ] rabbitmq_peer_discovery_etcd 3.8.1 [ ] rabbitmq_peer_discovery_k8s 3.8.1 [ ] rabbitmq_prometheus 3.8.1 [ ] rabbitmq_random_exchange 3.8.1 [ ] rabbitmq_recent_history_exchange 3.8.1 [ ] rabbitmq_sharding 3.8.1 [ ] rabbitmq_shovel 3.8.1 [ ] rabbitmq_shovel_management 3.8.1 [ ] rabbitmq_stomp 3.8.1 [ ] rabbitmq_top 3.8.1 [ ] rabbitmq_tracing 3.8.1 [ ] rabbitmq_trust_store 3.8.1 [ ] rabbitmq_web_dispatch 3.8.1 [ ] rabbitmq_web_mqtt 3.8.1 [ ] rabbitmq_web_mqtt_examples 3.8.1 [ ] rabbitmq_web_stomp 3.8.1 [ ] rabbitmq_web_stomp_examples 3.8.1 root@wohu:/#
开启插件 rabbitmq-plugins enable rabbitmq_management
root@wohu:/# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@wohu:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@wohu...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
wohu@wohu:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2aca4e39bb8d rabbitmq:latest "docker-entrypoint.s…" 3 hours ago Up 3 hours 4369/tcp, 5671/tcp, 25672/tcp, 0.0.0.0:5672->5672/tcp, 0.0.0.0:8081->15672/tcp silly_torvalds
wohu@wohu:~$ docker commit -m "add admin account and enable web management" -a "wohu" 2aca4e39bb8d rabbitmq_web
sha256:f8c3c0b1bf6ca6c030d08e08aaa50c1444d01fc46668a5789c43dd87035e5451
wohu@wohu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rabbitmq_web latest f8c3c0b1bf6c 5 seconds ago 150MB
rabbitmq latest 72469b528c2d 9 days ago 150MB
wohu@wohu:~$ docker save -o web_rabbitmq.tar rabbitmq_web
wohu@wohu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rabbitmq_web latest f8c3c0b1bf6c About a minute ago 150MB
rabbitmq latest 72469b528c2d 9 days ago 150MB
wohu@wohu:~$ ls
web_rabbitmq.tar
wohu@wohu:~$ docker load -i web_rabbitmq.tar
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。