RabbitMq安装及集群配置

 

1.自动化安装脚本

######下载软件包

wget http://erlang.org/download/otp_src_20.0.tar.gz -P /srv/

wget https://pypi.python.org/packages/08/48/c97b668d6da7d7bebe7ea1817a6f76394b0ec959cb04214ca833c34359df/simplejson-3.11.1.tar.gz#md5=6e2f1bd5fb0a926facf5d89d217a7183  -P /srv/

wget  http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server-generic-unix-3.6.9.tar.xz -P /srv/

 

 

 

######安装relang

yum install -y gcc glibc-devel make ncurses-devel openssl-devel xmlto

tar -zxvf /srv/otp_src_20.0.tar.gz -C /srv

cd otp_src_20.0

./configure --prefix=/srv/erlang

make && make install

cat >> /etc/profile <<eof

export PATH=$PATH:/srv/erlang/bin

eof

 

source /etc/profile

 

######安装simpleJson

cd /srv/

tar zxvf  simplejson-3.11.1.tar.gz 

cd simplejson-3.11.1

python setup.py install

 

 

#####安装rabbitmq

cd /srv

xz -d rabbitmq-server-generic-unix-3.6.9.tar.xz  && tar -xvf rabbitmq-server-generic-unix-3.6.9.tar

mv  rabbitmq_server-3.6.9  rabbitmq

cat >> /etc/profile <<eof

export PATH=$PATH:/srv/rabbitmq/sbin

eof

 

source /etc/profile

##启动

rabbitmq-server -detached

##查询状态

rabbitmqctl status

 

##安装web插件

rabbitmq-plugins enable rabbitmq_management

 

#关闭

rabbitmqctl stop

#启动

rabbitmq-server -detached

 

#web访问地址ip:15672

##web查询用户

rabbitmqctl list_users

##新建用户并赋予权限

rabbitmqctl add_user root  admin-rabbitmq

rabbitmqctl set_permissions -p "/" root  ".*" ".*" ".*"

rabbitmqctl set_user_tags root  administrator

 

 

2.普通模式集群搭建

 

这里选用三台主机,主机名分别是hidden1, hidden2, hidden3 
1 在这三台机器中安装rabbitmq-server, 参考上面。

2 读取其中一个节点的cookie, 并复制到其他节点(节点之间通过cookie确定相互是否可通信)。 
cookie存放在/var/lib/rabbitmq/.erlang.cookie或者$HOME/.erlang.cookie中。

3 逐个启动节点 rabbitmq-server -detached

4 查看各节点的状态: rabbitmqctl status, rabbitmqctl cluster_status

5 配置各节点的hosts文件( vim /etc/hosts) 
xxx.xxx.xxx.xxx hidden1 
xxx.xxx.xxx.xxx hidden2 
xxx.xxx.xxx.xxx hidden3

6 建立集群 
以hidden1为主节点,在hidden2上: 
rabbitmqctl stop_app 
rabbitmqctl reset 
rabbitmqctl join_cluster rabbit@hidden1 
rabbitmqctl start_app 
hidden3上的操作与hidden2的雷同。 
最后通过rabbitmqctl cluster_status查看集群的状态信息:

[{nodes,[{disc,[rabbit@hidden1,'rabbit@hidden2','rabbit@hidden3']}]},

 {running_nodes,[rabbit@hidden1,'rabbit@hidden2','rabbit@hidden3']},

 {cluster_name,<<"rabbit@hidden1">>},

 {partitions,[]}]

3.常用命令

服务启动关闭

启动:rabbitmq-server -detached 
关闭:rabbitmqctl stop

集群配置相关命令

rabbitmqctl stop_app 
rabbitmqctl reset 
在当前集群中加入某节点:rabbitmqctl join_cluster {rabbit_node_name} (某些低版本可以采用rabbitmqctl cluster {rabbit_node_name}) 
rabbitmqctl start_app 
集群状态:rabbitmqctl cluster_status 
将某节点剔除出当前集群:rabbitmqctl forget_cluster_node {rabbit_node_name}

插件管理

开启某个插件: rabbitmq-plugins enable {插件名} 
关闭某个插件: rabbitmq-plugins disable {插件名} 
有关插件名可以在rabbitmq的安装目录下的plugins目录中查看:$RABBITMQ_HOME/plugins 
举例: 
rabbitmq-plugins enable rabbitmq_management 
rabbitmq-plugins list

用户管理

添加用户:rabbitmqctl add_user {username} {password} 
删除用户:rabbitmqctl delete_user {username} 
修改密码:rabbitmqctl change_password {username} {newpassword} 
设置用户角色:rabbitmqctl set_user_tags {username} {tag} 
tag可以为administrator, monitoring, management 
举例: 
rabbitmqctl add_user root root 
rabbitmqctl set_user_tags root administrator 
rabbitmqctl list_users

权限管理

权限设置:rabbitmqctl set_permissions [-p vhostpath] {user} {conf} {write} {read} 
    conf:一个正则表达式match哪些配置资源能够被该用户访问。 
    write:一个正则表达式match哪些配置资源能够被该用户读。 
    read:一个正则表达式match哪些配置资源能够被该用户访问。

查看(指定vhost)所有用户的权限信息:rabbitmqctl list_permissions [-p vhostPath] 
查看指定用户的权限信息:rabbitmqctl list_user_permissions {username} 
清除用户的权限信息: rabbitmqctl clear_permissions [-p vhostPath] {username}

举例: 
rabbitmqctl set_permissions -p / root “.*” “.*” “.*”

获取服务器状态信息

服务器状态:rabbitmqctl status 
队列信息: rabbitmqctl list_queues [-p vhostpath] [queueinfoitem …] 
queueinfoitem可以为: name, durable, auto_delete, arguments, messages_ready, messages_unacknowled, messages, consumers, memory.

Exchange信息: rabbitmqctl list_exchanges [-p vhostpath] [exchangeinfoitem …] 
exchangeinfoitem有:name, type, durable, auto_delete, internal, arguments.

Binding信息:rabbitmqctl list_bindings [-p vhostpath] [bindinginfoitem …] 
bindinginfoitem有:source_name, source_kind, destination_name, destination_kind, routing_key, arguments.等

connection信息:rabbitmqctl list_connections [connectioninfoitem …] 
connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等。

channel信息:rabbitmqctl list_channels [channelinfoitem …] 
channelinfoitem有:consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked

举例: 
rabbitmqctl list_queues name messages_ready pid slave_pids

更改节点类型

rabbitmqctl stop_app 
rabbitmqctl change_cluster_node_type disc 
或 
rabbitmqctl change_cluster_node_type ram 
rabbitmqctl start_app

vhost管理

添加vhost: rabbitmqctl add vhost {name} 
删除vhost: rabbitmqctl delete vhost {name}

镜像队列的设置

镜像队列的配置通过添加policy完成,policy添加的命令为: 
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority] 
-p Vhost: 可选参数,针对指定vhost下的queue进行设置 
Name: policy的名称 
Pattern: queue的匹配模式(正则表达式) 
Definition: 镜像定义,包括三个部分 ha-mode,ha-params,ha-sync-mode 
    ha-mode: 指明镜像队列的模式,有效值为 all/exactly/nodes 
        all表示在集群所有的节点上进行镜像 
        exactly表示在指定个数的节点上进行镜像,节点的个数由ha-params指定 
        nodes表示在指定的节点上进行镜像,节点名称通过ha-params指定 
    ha-params: ha-mode模式需要用到的参数 
    ha-sync-mode: 镜像队列中消息的同步方式,有效值为automatic,manually 
Priority: 可选参数, policy的优先级

例如,对队列名称以hello开头的所有队列进行镜像,并在集群的两个节点上完成镜像,policy的设置命令为: 
rabbitmqctl set_policy hello-ha “^hello” ‘{“ha-mode”:”exactly”,”ha-params”:2,”ha-sync-mode”:”automatic”}’

4.镜像模式集群及高可用

  • 普通模式:默认的集群模式,以两个节点(rabbit01、rabbit02)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列的结构。当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,RabbitMQ会临时在rabbit01、rabbit02间进行消息传输,把A中的消息实体取出并经过B发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连rabbit01或rabbit02,出口总在rabbit01,会产生瓶颈。当rabbit01节点故障后,rabbit02节点无法取到rabbit01节点中还未消费的消息实体。如果做了消息持久化,那么得等rabbit01节点恢复,然后才可被消费;如果没有持久化的话,就会产生消息丢失的现象。
  • 镜像模式:将需要消费的队列变为镜像队列,存在于多个节点,这样就可以实现RabbitMQ的HA高可用性。作用就是消息实体会主动在镜像节点之间实现同步,而不是像普通模式那样,在consumer消费数据时临时读取。缺点就是,集群内部的同步通讯会占用大量的网络带宽。

 

参考文献:http://blog.youkuaiyun.com/woogeyu/article/details/51119101

 

 

 

mq-console安装

 

下载地址

git clone  https://github.com/apache/rocketmq-externals.git

源码编译

cd   rocketmq-externals/rocketmq-console/

mvn clean package -Dmaven.test.skip=true

运行

screen  -S   mq

java -jar  rocketmq-console-ng-1.0.0.jar --server.port=12580 --rocketmq.config.namesrvAddr=192.168.10.53:9876;192.168.10.54:9876;192.168.10.55:9876;192.168.10.56:9876

ctrl+a+d 退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值