在安装之前,需要先要安装一些其他的软件,否则在安装中间会出现一些由于没有其依赖的软件模块而失败。
1、首先要先安装GCC GCC-C++ Openssl等以来模块:
- yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
2、再安装ncurses模块
- yum -y install ncurses-devel
- yum install ncurses-devel
3、下载Erang源代码文件otp_src_R15B03-1.tar.gz文件,并对其付权限和解压文件:
- chmod +x otp_src_R15B03-1.tar.gz
- tar -xzvf otp_src_R15B03-1.tar.gz
- mv otp_src_R15B03-1 erlang_R15B #重命名解压厚的文件
4、下面是安装erlang的重头戏,依次执行以下操作:
- cd erlang_R15B/
- ./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac //不用java编译,故去掉java避免错误
- make && make install //编译后安装
5、配置erlang环境:
- vi /etc/profile
- ERL_HOME=/usr/local/erlang
- 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
|
#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
|
#yum -y install erlang
|
#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.
|
# rabbitmqctl status //查看状态
|
#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
|
# cat /var/lib/rabbitmq/.erlang.cookie
EJARCZORCOTEQWFGPWXR
|
[root@rabbitmq-node3 ~]
#rabbitmq-server -detached
[root@rabbitmq-node2 ~]
#rabbitmq-server -detached
[root@rabbitmq-node1 ~]
#rabbitmq-server -detached
|
[root@rabbitmq-node3 ~]
#rabbitmqctl cluster_status
[root@rabbitmq-node3 ~]
#rabbitmqctl stop_app
[root@rabbitmq-node3 ~]
#rabbitmqctl reset
[root@rabbitmq-node3 ~]
#rabbitmqctl cluster
[root@rabbitmq-node3 ~]
#rabbitmqctl start_app
指定为
ram
[root@rabbitmq-node2 ~]
#rabbitmqctl stop_app
[root@rabbitmq-node2 ~]
#rabbitmqctl reset
[root@rabbitmq-node2 ~]
#rabbitmqctl join_cluster--ram rabbit@rabbitmq-node3
[root@rabbitmq-node2 ~]
#rabbitmqctl start_app
指定为disc
[root@rabbitmq-node1 ~]
#rabbitmqctl stop_app
[root@rabbitmq-node1 ~]
#rabbitmqctl reset
[root@rabbitmq-node1 ~]
#rabbitmqctl join_cluster rabbit@rabbitmq-node3
[root@rabbitmq-node1 ~]
#rabbitmqctl start_app
|
[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//
插件的路径
|
[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
.
|