RabbitMQ安装及使用

  • 时间:
  • 浏览:3
  • 来源:大发快三_快三新平台_大发快三新平台
  • 下载

不可能 RabbitMQ是基于Erlang语言开发,什么都有 在安装RabbitMQ完后 ,也能先安装Erlang。好在RabbitMQ官网不可能 为亲戚亲戚亲戚让他们让他们让他们让他们提供了Erlang的安装包

Erlang下载地址:http://www.rabbitmq.com/releases/erlang/

当时人使用的操作系统为:CentOS7

下载的Erlang安装包为:erlang-19.0.4-1.el7.centos.x86_64.rpm

RabbitMQ下载地址:https://www.rabbitmq.com/download.html

下载的RabbitMQ安装包为:rabbitmq-server-3.6.8-1.el7.noarch.rpm

  •  安装

将下载的有另有有一个 文件上传到/usr/local目录,先安装Erlang

yum install erlang-19.0.4-1.el7.centos.x86_64.rpm

测试Erlang否有安装成功

经常 老出以下信息则表示安装成功:Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 8.0.3

安装RabbitMQ

yum install rabbitmq-server-3.6.8-1.el7.noarch.rpm

运行RabbitMQ

cd /usr/sbin
./rabbitmq-server start

经常 老出以下信息,则表示启动成功:


RabbitMQ 3.6.8. Copyright (C) 807-2016 Pivotal Software, Inc.

## ## Licensed under the MPL. See http://www.rabbitmq.com/ ## ## ########## Logs: /var/log/rabbitmq/rabbit@mq01.log ###### ## /var/log/rabbitmq/rabbit@mq01-sasl.log ########## Starting broker... completed with 0 plugins.


后台启动可使用:

./rabbitmq-server -detached

停止服务可使用:

  • 插件安装

查看目前RabbitMQ已安装的插件

cd /usr/sbin
./rabbitmq-plugins list
  • 安装web管理端

./rabbitmq-plugins enable rabbitmq_management

安装成功后,启动MQ

通过浏览器访问地址:http://192.168.120.129:15672/#/

不可能 guest用户被限制,也能通过localhost访问,某些亲戚亲戚亲戚让他们让他们让他们让他们也能新建有另有有一个 用户,并授予管理员权限。

新建有另有有一个 用户名为admin,密码为admin的用户,并授予管理员(administrator)权限

./rabbitmqctl add_user admin admin
./rabbitmqctl set_user_tags admin administrator
  • 安装mqtt

./rabbitmq-plugins enable rabbitmq_mqtt
  • 安装websocket

./rabbitmq-plugins enable rabbitmq_web_stomp
./rabbitmq-plugins enable rabbitmq_web_stomp_examples
  •  配置

不可能 也能修改RabbitMQ的默认配置,先查找配置文件样例位置

find / -name "rabbitmq.config.example"

某些将样例配置克隆qq到制定目录

cp /usr/share/doc/rabbitmq-server-3.6.8/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

修改样例文件,并保存,重启MQ生效。

  • 权限

主某些set_permissions的使用,先看下命令的格式:

set_permissions [-p vhost] {user} {conf} {write} {read}

首先也能注意以下几点的理解:

1.这里的权限,某些针对一般用户的访问权限,注意和角色的区分。举个例子来说,非管理用户(普通用户),角色设置为none,某些在这里配置conf、write、read的权限。

2.conf、write、read采用正则表达式,这里的正则主某些针对exchange和queue。主要2种特殊的表达式:

^$:表示全部不匹配(即那么 权限)

.*:表示匹配所有(即所有权限)

不可能 使用RabbitMQ作为消息推送服务,也能授予用户只读访问Stomp主题权限,一块儿授予原先用户对同一主题的读写访问权限。

原先句子主题订阅者就也能发布消息,从而补救安全性大问题。

某些不可能 直接原先授权:

rabbitmqctl set_permissions read-only-user '.*' '^$' '.*' 

会报如下错误:

 ERROR message:access_refused content-type:text/plain version:1.0,1.1,1.2 content-length:114 ACCESS_REFUSED - access to queue 'stomp-subscription-APK3zkvXFqxvSiZ9ztmxYQ' in vhost '/' refused for user 'test' Whoops! Lost connection to ws://221.0.80.202:15674/ws

原先配置所处有另有有一个 大问题,将阻止任何写入,阻止任何写入将原应 那么 权限连接到RabbitMQ的服务

也能对可读用户权限做如下调整:

rabbitmqctl set_permissions read-only-user '^stomp-subscription.*$' '^stomp-subscription.*$' '.*' 

  • 集群模式

 RabbitMQ集群模式分为某种生活:普通模式,镜像模式(HA)

  普通模式:默认的集群模式

对于Queue来说,消息实体只所处于其涵盖另有有一个 节点,A、B有另有有一个 节点仅有相同的元数据,即队列行态。

当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。

什么都有 consumer应尽量连接每有另有有一个 节点,从中归还息。即对于同有另有有一个 逻辑队列,要在多个节点建立物理Queue。某些无论consumer连A或B,出口总在A,会产生瓶颈。

该模式所处有另有有一个 大问题某些当A节点故障后,B节点无法取到A节点中还未消费的消息实体。

不可能 做了消息持久化,那么 得等A节点恢复,某些才可被消费;不可能 那么 持久化句子,某些就那么 某些了……

  镜像模式:把也能的队列做成镜像队列,所处于多个节点,属于RabbitMQ的HA方案

该模式补救了上述大问题,虽然质和普通模式不同之所处于,消息实体会主动在镜像节点间同步,而都在在consumer取数据时临时拉取。

该模式带来的副作用也很明显,除了降低系统性能外,不可能 镜像队列数量太久,加之一定量的消息进入,集群实物的网络传输速率不可能 被这一块儿步通讯大大消耗掉。

什么都有 在对可靠性要求较高的场合中适用。

  • 服务器信息:

 亲戚亲戚亲戚让他们让他们让他们让他们准备了两台服务器,系统为Centos7,对应的ip跟hostname分别为

192.168.1.242    mq01
192.168.1.243    mq02

 在安装好的两台节点服务器中,分别修改/etc/hosts文件,指定mq01,mq02的hosts,如:

192.168.1.242    mq01
192.168.1.243    mq02

 注意:hostname文件也要正确,分别是mq01、mq02,不可能 修改hostname建议在安装rabbitmq前修改。

  • 设置 Erlang Cookie:

Rabbitmq的集群是依赖于erlang的集群来工作的,什么都有 也能先构建起erlang的集群环境。Erlang的集群中各节点是通过有另有有一个 magic cookie来实现的,这一cookie存放到 /var/lib/rabbitmq/.erlang.cookie 中,文件是80的权限。什么都有 也能保证各节点cookie保持一致,某些节点之间就无法通信。

查看文件权限的命令为:

ls -l /var/lib/rabbitmq/.erlang.cookie

这里将 mq01的 /var/lib/rabbitmq/.erlang.cookie文件克隆qq到 mq02,不可能 这一文件权限是 80,什么都有 也能先修改该文件权限为 777:

chmod 777 /var/lib/rabbitmq/.erlang.cookie

使用scp或某些办法将该文件克隆qq到mq02服务器的相同目录,并覆盖。

某些将mq01的 /var/lib/rabbitmq/.erlang.cookie文件权限修改回来

chmod 80 /var/lib/rabbitmq/.erlang.cookie
  • 组成集群

重启RabbitMQ服务:

rabbitmqctl stop
rabbitmq-server -detached

将mq02与mq01组成集群:

./rabbitmqctl stop_app
./rabbitmqctl join_cluster rabbit@mq01

./rabbitmqctl stop

./rabbitmq-server -detached

不可能 要使用内存节点,则可不也能使用--ram:

rabbitmqctl join_cluster --ram rabbit@mq01

查看集群否有配置成功:

rabbitmqctl cluster_status
  • HA集群模式配置

 后面 配置RabbitMQ默认集群模式,但暂且保证队列的高可用性,尽管交换机、绑定那先 可不也能克隆qq到集群里的任何有另有有一个 节点,某些队列内容太久克隆qq,虽然该模式补救一偏离 节点压力,但队列节点宕机直接原应 该队列无法使用,也能等待时间重启,什么都有 要想在队列节点宕机或故障也能正常使用,就要克隆qq队列内容到集群里的每个节点,也能创建镜像队列。

  • 设置镜像队列策略

在任意有另有有一个 节点上执行:

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

将所有队列设置为镜像队列,即队列会被克隆qq到各个节点,各个节点情形保持经常 。

不可能 要为制定的vhost创建策略则使用-p:

rabbitmqctl set_policy -p hrsystem ha-allqueue"^" '{"ha-mode":"all"}'
这行命令在vhost名称为hrsystem创建了有另有有一个

策略,策略名称为ha-allqueue,策略模式为 all 即克隆qq到所有节点,涵盖新增节点,
策略正则表达式为 “^” 表示所有匹配所有队列名称。
累似

rabbitmqctl set_policy -p hrsystem ha-allqueue "^message" '{"ha-mode":"all"}'

注意:"^message" 这一规则要根据当时人修改,这一是指同步"message"开头的队列名称,亲戚亲戚亲戚让他们让他们让他们让他们配置时使用的应用于所有队列,什么都有 表达式为"^"

  • 安装并配置 HAProxy

在 服务器上安装 HAProxy,某些修改

/etc/haproxy/haproxy.cfg:

listen rabbitmq_cluster 0.0.0.0:5672

mode tcp
balance roundrobin

server   node1 192.168.1.242:5672 check inter 800 rise 2 fall 3  
server   node2 192.168.1.243:5672 check inter 800 rise 2 fall 3