Rabbitmq安装指南

MQ在互联网时代已经不是什么新鲜技术,传统MQ主要在应用内部实现,到互联网时代已经多如牛毛,RabbitMQ、ActiveMQ、zeroMQ、kafka,每个技术都有不同的业务场景,技术选型需要各自的业务需求。.

比较文章参考:http://blog.csdn.net/linsongbin1/article/details/47781187

1 介绍

RabbitMQ(http://www.rabbitmq.com) 是由 LShift 提供的一个Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang(http://www.erlang.org)写成,他遵循Mozilla Public License开源协议。

2 系统要求

1、  Linux 2.6.18版本以上,使用内存大于4G

2、  gcc 版本 4.1.2

3 Erlang安装

         例子以otp_src_17.0.tar.gz版本方式进行安装,脚本中的环境变量ERL_HOME使用/opt/erlang路径请根据实际情况定义。

         将安装包放到任意目录下执行:

 tar-zxvf otp_src_17.0.tar.gz
cd otp_src_17.0
./configure --prefix=/opt/erlang
make
make install

 ./configure            --prefix=/opt/erlang     --enable-smp-support           --enable-threads        --enable-sctp         --enable-kernel-poll            --enable-hipe            --with-ssl  
上述参数说明:
--prefix  指定安装目录
--enable-smp-support启用对称多处理支持(Symmetric Multi-Processing对称多处理结构的简称)
--enable-threads启用异步线程支持
--enable-sctp启用流控制协议支持(Stream Control Transmission Protocol,流控制传输协议)
--enable-kernel-poll启用Linux内核poll
--enable-hipe启用高性能Erlang(High Performance Erlang)参考资料:http://www.cnblogs.com/me-sa/archive/2012/10/09/erlang_hipe.html
--with-ssl使用SSL包
vim/etc/profile
export ERL_HOME=/opt/erlang/bin
export PATH=$PATH:$ERL_HOME
source /etc/profile

错误:

configure: error: No curses library functions found
configure: error: /bin/sh '/usr/local/xuguang/RabbitMq/erlang/otp_src_R15B01/erts/configure' failed for erts
RootCause:缺少ncurses安装包
Fix:yum -y install ncurses-devel


测试

在控制台输入erl显示如下:

[root@APP-NO4 opt]# erl

Erlang R15B01 (erts-5.9.1) [source] [smp:2:2] [async-threads:0][hipe] [kernel-poll:false]

Eshell V5.9.1  (abort with ^G)

1>

表示安装正确

4 RabbitMQ安装(简单安装)

例子以rabbitmq-server-generic-unix-3.2.4.tar.gz版本进行按照。

         将安装包放到任意目录下执行: 

tar–zxvf rabbitmq-server-generic-unix-3.2.4.tar.gz
cd rabbitmq_server-3.2.4
./rabbitmq-plugins enable rabbitmq_management
./rabbitmq-server -detached


rpm包安装

rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc  
yum install rabbitmq-server-3.6.5-1.noarch.rpm(注:要下载下来)  
或  rpm -ivh --nodeps rabbitmq-server-3.6.5-1.noarch.rpm

rpm包安装 /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/sbin

-rwxr-xr-x 1 root root  1480 8月   5 21:26 rabbitmqctl
-rwxr-xr-x 1 root root  1431 8月   5 21:26 rabbitmq-defaults
-rwxr-xr-x 1 root root 11379 8月   5 21:26 rabbitmq-env
-rwxr-xr-x 1 root root  1362 8月   5 21:26 rabbitmq-plugins
-rwxr-xr-x 1 root root  9042 8月   5 21:26 rabbitmq-server
注:rabbitmq-defaults 设置erl_dir目录

RabbitMQ的根目录:/var/lib/rabbitmq
RabbitMQ的配置文件目录:/etc/rabbitmq/
RabbitMQ的日志文件目录:/var/log/rabbitmq
两个配置文件分别是:
rabbitmq.config 
rabbitmq-env.conf

错误:

/usr/lib/rabbitmq/bin/rabbitmq-server:行49: /var/run/rabbitmq/pid: 权限不够

chown -R rabbitmq:rabbitmq  /var/run/rabbitmq

缺少包:

socat is needed by rabbitmq-server-3.6.5-1.noarch
yum install socat

启动服务:

service rabbitmq-server restart

浏览器查看:http://localhost:15672 用户名:guest 密码:guest画面显示如下表示安装正确

 Rabbitmq安装指南_第1张图片 

5 RabbitMQ集群配置

5.1普通集群

 前提条件:将需要集群的机器已按装好RabbitMQ并且在运行 

  以node1、node2集群为例,将所有机器列表加入所有集群机器/etc/hosts文件中

  拷贝任意集群机器~/.erlang.cookie文件到所有机器(请先停止rabbitmq然后再copy),同目录下并且执行chmod 600 ~/.erlang.cookie 

保证rabbitmq运行正常,分别执行:

./rabbitmqctl stop_app
./rabbitmqctl reset
./rabbitmqctl start_app

连接集群:如node1连接node2在node1上执行

 ./rabbitmqctl stop_app
 ./rabbitmqctl join_cluster rabbit@node2
./rabbitmqctl start_app

  在任意机器上查看集群状态执行:

./rabbitmqctl cluster_status

打开页面查看结果

Rabbitmq安装指南_第2张图片

注: 若有多台机器加入集群node3

./rabbitmqctl stop_app
./rabbitmqctl join_cluster rabbit@node2
./rabbitmqctl start_app

    Node2和node3不需要执行join_cluster因为他们会自动加入链通 

一般情况下进行三台机器集群

  一台配置成磁盘存储(默认集群中至少保证有一台机器处于磁盘存储模式)、两台设置成内存存储

 join_cluster--ram rabbit@node2

5.2高可用

可以通过LVS、haproxy作为网络均衡负载实现。已知在LVS环境下进行测试通过,请参看LVS安装手册

6添加用户

任意集群机器中执行

 

添加入库用户

./rabbitmqctl add_user impuser 123rty789

设置角色

./rabbitmqctl set_user_tags impuser administrator

设置虚拟空间

./rabbitmqctl add_vhost /imp

./rabbitmqctl set_permissions -p /imp impuser ".*"".*" ".*"

 

添加转发用户

./rabbitmqctl add_user transferuser 123rty789

设置角色

./rabbitmqctl set_user_tags transferuser administrator

设置虚拟空间

./rabbitmqctl add_vhost /transfer

./rabbitmqctl set_permissions -p /transfer transferuser ".*" ".*" ".*"

 

添加布控报警用户

./rabbitmqctl add_user alarmuser 123rty789

设置角色

./rabbitmqctl set_user_tags alarmuser administrator

设置虚拟空间

./rabbitmqctl add_vhost /alarm

./rabbitmqctl set_permissions -p /alarm alarmuser ".*"".*" ".*"

 

7其他

删除虚拟空间

rabbitmqctl delete_vhost 虚拟空间

rabbitmqctl add_vhost 虚拟空间

 

端口配置:

RABBIYMQ_HOME/etc/rabbitmq/rabbitmq-env.conf

RABBITMQ_NODE_PORT=port

 

RABBIYMQ_HOME/etc/rabbitmq/rabbitmq.config

[

     {rabbitmq_management,[{listener, [{port, 12345}]}]}

].

 

参考地址:

http://www.rabbitmq.com/configure.html,http://www.rabbitmq.com/man/rabbitmqctl.1.man.html

 

8注意事项

1、   集群中的软件版本必须一致包括Erlang

2、   若需要重新部署集群环境则在需要强制重置

        a)      确保环境稳定运行./rabbitmqctl stop_app ./rabbitmqctl force_reset ./rabbitmqctlstart_app

3、   ERROR: node with name"rabbit" already running on ""

       a)      同一台机器运行多个实例,可以通过rabbitmq-env.conf配置文件中的NODENAME配置选项配置节点名称

你可能感兴趣的:(消息队列)