文章插图

文章插图

文章插图
./sbin/ rabbitmq 启动rabbitmq-server、插件rabbitmq-plugins、功能rabbitmqctl等脚本位置
./etc/rabbitmq/ rabbitmq 启动配置,包括随启动插件配置、环境配置、应用配置
RabbitMQ 配置文件
- rabbitmq-env.conf 环境配置 key = val 形式
NODENAME=rabbit@cluster1
# 指定端口 默认 5672
NODE_PORT=5672
# 配置持久目录
MNESIA_BASE=/mnt/data1/rabbitmq/store
# 配置日志目录 默认文件名字:${NODENAME}.log 可以用配置修改
LOG_BASE=/mnt/data1/rabbitmq/logs
- rabbitmq.conf 环境配置 key = val 形式
# console log config 主要测试排查问题
log.console = false
log.console.level= debug
# log config
log.file= rabbit.log
log.file.level= info
log.file.rotation.date= $D0
# web port
management.listener.port= 15672
- enabled_plugins 配置相应插件的名字 server start plugin也会启动
具体请看官方配置说明, 详细的讲解了rabbitmq-env.conf 和 rabbitmq.conf 配置 官方配置说明
RabbitMQ 常用命令:
# 后台启动本地服务
./rabbitmq-server –detached
# 开启/关闭 服务
./rabbitmqctl start_app {-n node_name}
./rabbitmqctl stop_app {-n node_name}
# 开启/关闭某个插件 (重启服务器后生效)
./rabbitmq-plugins enable xxx
./rabbitmq-plugins disable xxx
# 更改节点类型
./rabbitmqctl change_cluster_node_type {disc/ram} {-n node_name}
# 配置用户
./rabbitmqctl add_user username password
./rabbitmqctl change_password username newpassword
./rabbitmqctl delete_user username
./rabbitmqctl set_user_tags username administrator
Tag: none、management、policymaker、monitoring、administrator
./rabbitmqctl set_permissions -p /vhost1 username 'conf' 'write' 'read'
conf 一个正则表达式match哪些配置资源能够被该用户配置
write 一个正则表达式match哪些配置资源能够被该用户写入
read 一个正则表达式match哪些配置资源能够被该用户读取
四、高可用的集群搭建基础概念
RabbitMQ 集群分为两种 普通集群 和 镜像集群,可以说 镜像集群 是 普通集群 的晋升版
普通集群:
以两个节点(rabbit01、rabbit02)为例来进行说明 。
rabbit01和rabbit02两个节点仅有相同的元数据,即队列的结构,但消息实体只存在于其中一个节点rabbit01(或者rabbit02)中 。
当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,RabbitMQ会临时在rabbit01、rabbit02间进行消息传输,把A中的消息实体取出并经过B发送给consumer 。所以consumer应尽量连接每一个节点,从中取消息 。即对于同一个逻辑队列,要在多个节点建立物理Queue 。否则无论consumer连rabbit01或rabbit02,出口总在rabbit01,会产生瓶颈 。当rabbit01节点故障后,rabbit02节点无法取到rabbit01节点中还未消费的消息实体 。如果做了消息持久化,那么得等rabbit01节点恢复,然后才可被消费;如果没有持久化的话,就会产生消息丢失的现象 。
镜像集群:
在普通集群的基础上,把需要的队列做成镜像队列,消息实体会主动在镜像节点间同步,而不是在客户端取数据时临时拉取,也就是说多少节点消息就会备份多少份 。该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉 。所以在对可靠性要求较高的场合中适用
由于镜像队列之间消息自动同步,且内部有选举master机制,即使master节点宕机也不会影响整个集群的使用,达到去中心化的目的,从而有效的防止消息丢失及服务不可用等问题
集群搭建
RabbitMQ 集群通信的验证机制是通过 erlang.cookie进行确认的,只有erlang.cookie一致的两个服务才能通信,创建cookie文件:
mkdir ~/.erlang.cookie
echo 'SJJARLYPVRPMWFVGKWZZ' > ~/.erlang.cookie
chmod 400 ~/.erlang.cookie
cluster1=10.0.0.1, cluster2=10.0.0.2 2台服务器为例,本地搭建需修改 tcp端口、web端口
写入hostes:
10.0.0.1 cluster1
10.0.0.2 cluster2
修改rabbitmq-env.conf:
推荐阅读
- 一张图带你理解和实现RabbitMQ的延迟队列功能
- 摩羯座|摩羯座 2022年 职场运势分析
- 使用酸奶抹脸有什么好处
- 杯子沾满茶垢 长期使用不利健康
- 北京市交通委:不要使用任何品牌的共享电动车
- 巴萨开售定制款口罩,18欧元一只可重复使用40次
- 正山小种多少钱斤看着价格表分析
- iPhone系统省电设置
- 电脑怎么截图 截屏快捷键
- 红茶的功效与作用红茶的营养分析
