在 CentOS 6.4上安装rabbitmq

来源:互联网 发布:java中的注释 编辑:程序博客网 时间:2024/05/23 19:02
在本节中,我们将来学习如何在CentOS 6.4上安装erlang,具体的Erlang版本是R15B03-1。
      在安装之前,需要先要安装一些其他的软件,否则在安装中间会出现一些由于没有其依赖的软件模块而失败。
      1、首先要先安装GCC GCC-C++ Openssl等以来模块:
Java代码  收藏代码
  1. yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel  

      2、再安装ncurses模块
Java代码  收藏代码
  1. yum -y install ncurses-devel  
  2. yum install ncurses-devel  
  
      3、下载Erang源代码文件otp_src_R15B03-1.tar.gz文件,并对其付权限和解压文件:
Java代码  收藏代码
  1. chmod +x otp_src_R15B03-1.tar.gz  
  2. tar -xzvf otp_src_R15B03-1.tar.gz  
  3. mv otp_src_R15B03-1 erlang_R15B #重命名解压厚的文件  

  
      4、下面是安装erlang的重头戏,依次执行以下操作:
Java代码  收藏代码
  1. cd erlang_R15B/  
  2. ./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac  //不用java编译,故去掉java避免错误  
  3.   
  4. make && make install //编译后安装  

      5、配置erlang环境:
Java代码  收藏代码
  1. vi /etc/profile  
  2. ERL_HOME=/usr/local/erlang  
  3. export PATH=$PATH:$ERL_HOME/bin  


      好了,现在erlang的已经配置好了,现在我们来测试一下是否安装成功,在控制台输入命令erl,如果在erlang shell里出现下图所示就说明安装成功了:


2、xmlto

直接yum:

yum install xmlto

3、安装rabbitMQ

wget -c http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.0/rabbitmq-server-3.3.0-1.noarch.rpm
yum install rabbitmq-server-3.3.0-1.noarch.rpm

/etc/init.d/rabbitmq-server  start

管理界面

rabbitmq-plugins enable rabbitmq_management

/etc/init.d/rabbitmq-server  restart

增加用户

rabbitmqctl add_user  zwh  111111

设置用户角色

rabbitmqctlset_user_tags  zwh   administrator


打开 15672、5672端口。


登录: http://ip:15672


设置

vi /etc/rabbitmq/rabbitmq-env.conf


NODENAME=rabbit@prp2p-qd10
NODE_IP_ADDRESS=10.143.37.29
NODE_PORT=5672



5、管理

Rabbitmq服务器的主要通过rabbitmqctl和rabbimq-plugins两个工具来管理,以下是一些常用功能。

1). 服务器启动与关闭

      启动: rabbitmq-server –detached

      关闭:rabbitmqctl stop

      若单机有多个实例,则在rabbitmqctlh后加–n 指定名称

2). 插件管理

      开启某个插件:rabbitmq-pluginsenable xxx

      关闭某个插件:rabbitmq-pluginsdisablexxx

      注意:重启服务器后生效。

3).virtual_host管理

      新建virtual_host: rabbitmqctladd_vhost  xxx

      撤销virtual_host:rabbitmqctl  delete_vhost xxx

4). 用户管理

      新建用户:rabbitmqctl add_user xxxpwd

      删除用户:   rabbitmqctl delete_user xxx

      改密码: rabbimqctlchange_password {username} {newpassword}

      设置用户角色:rabbitmqctlset_user_tags {username} {tag ...}

              Tag可以为 administrator,monitoring, management

5). 权限管理

      权限设置:set_permissions [-pvhostpath] {user} {conf} {write} {read}

               Vhostpath

               Vhost路径

               user

      用户名

              Conf

      一个正则表达式match哪些配置资源能够被该用户访问。

              Write

      一个正则表达式match哪些配置资源能够被该用户读。

               Read

      一个正则表达式match哪些配置资源能够被该用户访问。

6). 获取服务器状态信息

       服务器状态:rabbitmqctl status

       队列信息:rabbitmqctl list_queues[-p vhostpath] [queueinfoitem ...]

                Queueinfoitem可以为:name,durable,auto_delete,arguments,messages_ready,

                messages_unacknowledged,messages,consumers,memory

       Exchange信息:rabbitmqctllist_exchanges[-p vhostpath] [exchangeinfoitem ...]

                 Exchangeinfoitem有:name,type,durable,auto_delete,internal,arguments.

       Binding信息:rabbitmqctllist_bindings[-p vhostpath] [bindinginfoitem ...]       

                 Bindinginfoitem有:source_name,source_kind,destination_name,destination_kind,routing_key,arguments

       Connection信息:rabbitmqctllist_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



6、

客户端连接测试

客户端采用Java来进行测试连接,下载rabbitmq所需jar包,并加入服务器端对应的ip、端口以及rabbitmq的用户名和密码,如图:

这里写图片描述

消息发送端与消息接收端均采用上述相同的配置,随后就可进行消息在不同客户端之间的传递。





1、实验环境

3
rabbitmq-node1.com192.168.1.112
rabbitmq-node2.com192.168.1.113
rabbitmq-node3.com192.168.1.128

2、配置前检查同步时间

 
#ntpdate pool.ntp.org

3、注意一定要修改hosts

#cat /etc/hosts
192.168.1.112   rabbitmq-node1.com rabbitmq-node1
192.168.1.113   rabbitmq-node2.com rabbitmq-node2
192.168.1.128   rabbitmq-node3.com rabbitmq-node3

4、安装erlang

 
#yum -y install erlang

5、安装rabbitqmq

#wget http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.6/rabbitmq-server-2.8.6-1.noarch.rpm
#yum -y install rabbitmq-server-2.8.6-1.noarch.rpm
 
[root@rabbitmq-node1 ~]# /etc/init.d/rabbitmq-server start
Starting rabbitmq-server: SUCCESS
rabbitmq-server.

wKiom1SNk0rzDHwLAAMCEmLBc80539.jpg

 
# rabbitmqctl status        //查看状态

6安装插件管理界面  

#mkdir -m 777 /etc/rabbitmq/ (如果目录已经存在直接执行 # chmod 777 /etc/rabbitmq/)
#rabbitmq-plugins enable rabbitmq_management
重启rabbitmq-server
#rabbitmqctl stop
#/etc/init.d/rabbitmq-server start

 

查看管理端口有没有启动:

 
# netstat -tnlp|grep 55672

wKioL1SNk6HAqqi-AAKaRTzIU9g550.jpg 

浏览器打开http://IP:55672 账号密码都是guest

 

 

注意rabbitmq3.3.0开始禁止使用guest/guest权限通过除localhost外的访问。

如果想使用guest/guest通过远程机器访问,需要在rabbitmq配置文件中(/etc/rabbitmq/rabbitmq.config)中设置loopback_users[]

/etc/rabbitmq/rabbitmq.config文件完整内容如下(注意后面的半角句号):

[{rabbit, [{loopback_users, []}]}].

 

7rabbitmq集群配置

(1)设置每个节点Cookie

Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信

# cat /var/lib/rabbitmq/.erlang.cookie 
EJARCZORCOTEQWFGPWXR

(2)停止所有节点RabbitMQ服务,然后使用detached参数独立运行,这步很关键,尤其增加节点停止节点后再次启动遇到无法启动都可以参照这个顺序

[root@rabbitmq-node3 ~]#rabbitmq-server -detached
[root@rabbitmq-node2 ~]#rabbitmq-server -detached
[root@rabbitmq-node1 ~]#rabbitmq-server -detached

(3)关于节点类型(ram |disk

ram节点的状态保存在内存中,disk节点保存在磁盘中被加入的节点为disk,如本例中rabbit@host2ram节点,rabbit@host1rabbit@host3ram节点可以通过rabbitmqctl cluster命令改变加入的集群以及节点类型该命令后可以加多个节点名称,指定的节点就会变成disk节点

[root@rabbitmq-node3 ~]#rabbitmqctl cluster_status
[root@rabbitmq-node3 ~]#rabbitmq stop_app
[root@rabbitmq-node3 ~]#rabbitmqctl reset
[root@rabbitmq-node3 ~]#rabbitmqctl cluster
[root@rabbitmq-node3 ~]#rabbitmqctl start_app
 
指定为ram
[root@rabbitmq-node2 ~]#rabbitmq stop_app
[root@rabbitmq-node2 ~]#rabbitmqctl reset
[root@rabbitmq-node2 ~]#rabbitmqctl cluster rabbit@rabbitmq-node3
[root@rabbitmq-node2 ~]#rabbitmqctl start_app
 
指定为disc
[root@rabbitmq-node1 ~]#rabbitmq stop_app
[root@rabbitmq-node1 ~]#rabbitmqctl reset
[root@rabbitmq-node1 ~]#rabbitmqctl cluster rabbit@rabbitmq-node3 rabbit@rabbitmq-node1
[root@rabbitmq-node1 ~]#rabbitmqctl start_app

 

(4)自动配置集群,默认文件是没有的,如果需要必须手动创建

[root@rabbitmq-node1 ~]# cat /etc/rabbitmq/rabbitmq.conf 
[
 
...
 
{rabbit, [
 
...
 
{cluster_nodes, ['rabbit@rabbitmq-node1','rabbit@rabbitmq-node2''rabbit@rabbitmq-node3']},
 
...
 
]},
 
...
 
].
 
[root@rabbitmq-node1 ~]# cat /etc/rabbitmq/rabbitmq-env.conf 
RABBITMQ_MNESIA_BASE=/var/lib/rabbitmq///需要使用的MNESIA数据库的路径
RABBITMQ_LOG_BASE=/var/log/rabbitmq///log的路径
RABBITMQ_PLUGINS_DIR=/usr/lib/rabbitmq/lib/rabbitmq_server-2.8.6/plugins//插件的路径

(5)启动后就自动加入集群了

[root@rabbitmq-node1 ~]#rabbitmq-server -detached
[root@rabbitmq-node1 ~]# rabbitmqctl cluster_status
Cluster status of node 'rabbit@rabbitmq-node1' ...
[{nodes,[{disc,['rabbit@rabbitmq-node1','rabbit@rabbitmq-node3']},
         {ram,['rabbit@rabbitmq-node2']}]},
 {running_nodes,['rabbit@rabbitmq-node2','rabbit@rabbitmq-node3',
                 'rabbit@rabbitmq-node1']}]
...done.

 

(6)在浏览器中可以看到所有节点的信息,如果其他节点信息没有显示启用web管理就好

 

wKioL1SNlEjS6BUiAAMw5AoTxCo107.jpg




0 0