一.rabbitmq的安装

1.配置代理

创建/etc/apt.conf文件
Acquire::http::Proxy”http://proxy.gnetis.com:3128/";

2.配置源文件

修改/etc/apt/sources.list
deb http://192.168.11.202/ubuntu hardy main restricted universe multiverse
deb http://192.168.11.202/ubuntu hardy-updates main restricted universe multiverse
deb http://192.168.11.202/ubuntu hardy-backports main restricted universe multiverse
deb http://192.168.11.202/ubuntu hardy-security main restricted universe multiverse
deb http://192.168.11.202/ubuntu hardy-proposed main restricted universe multiverse
更新源 aptitude update

3.安装基本的软件

sudo apt-get install build-essential
sudo apt-get install sun-java6-jdk
sudo apt-get install zip
sudo apt-get install unzip

4.安装Erlang依赖的软件包

sudo apt-get install libncurses5-dev
sudo apt-get install m4
sudo apt-get install libssl-dev
sudo apt-get install libc6
sudo apt-get install unixodbc unixodbc-dev
sudo apt-get install freeglut3-dev libwxgtk2.8-dev
sudo apt-get install xsltproc
sudo apt-get install fop
sudo apt-get install xmlto
sudo apt-get install python

5.安装Erlang

下载安装ERLANG源代码(otp_src_R15B.tar.gz)
tar -xvf otp_src_R15B.tar.gz
cd otp_src_R15B
sudo ./configure
sudo make
sudo make install
然后修改/etc/profile,添加如下
export PATH=/usr/local/bin:$PATH
能够source /etc/profile一下,及时修改PATH

6.安装rabbitmq和simplejson

安装simplejson
tar xvzf simplejson-2.3.2.tar.gz
cd simplejson-2.3.2
sudo python setup.py install

安装RabbitMQ Server
tar xvzf rabbitmq-server-2.7.1.tar.gz
cd rabbitmq-server-2.7.1
make TARGET_DIR=/usr/local SBIN_DIR=/usr/local/sbin MAN_DIR=/usr/local/man install
启动rabbitmq: 在安装目录下的scripts目录中运行 ./rabbitmq-server start &
关闭rabbitmq: 在安装目录下的scripts目录中运行 ./rabbitmqctl stop

二.rabbitmq的集群

一个rabbitmq集 群中可以共享 user,vhost,queue,exchange等,所有的数据和状态都是必须在所有节点上复制的,一个例外是,那些当前只属于创建它的节点的消息队列,尽管它们可见且可被所有节点读取。rabbitmq节点可以动态的加入到集群中,一个节点它可以加入到集群中,也可以从集群环集群会进行一个基本的负载均衡。
集群中有两种节点:
1 内存节点:只保存状态到内存(一个例外的情况是:持久的queue的持久内容将被保存到disk)
2 磁盘节点:保存状态到内存和磁盘。
内存节点虽然不写入磁盘,但是它执行比磁盘节点要好。集群中,只需要一个磁盘节点来保存状态 就足够了
如果集群中只有内存节点,那么不能停止它们,否则所有的状态,消息等都会丢失。
Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在$HOME/.Erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信。
-r——– 1 long long 21 Aug 1 08:08 .erlang.cookie
1 将其中一台节点上的.erlang.cookie值复制下来保存到其他节点上。或者使用scp的方法也可,但是要注意文件的权限和属主属组。
$ cat .erlang.cookie
IYZNFNJIUWABJUELIUFE
将值保存到其他节点上:
先更改文件权限,给予其可写权限:
$chmod 700 .erlang.cookie
$ echo -n “ IYZNFNJIUWABJUELIUFE” >$HOME/.erlang.cookie
$chmod 400 .erlang.cookie
PS:此步骤建议在rabbitmq启动之前完成。
2 确保节点之间主机名称可以相互解析。
vi /etc/hosts 将其他主机的ip和主机名对应起来
192.168.. mq3
192.168. . mq1
192.168. . mq2
前期准备工作已经完成,下面就来开始rabbitmq集群的配置,有了erliang的集群环境,rabbitmq集群环境构建起来很简单,只需要把其他节点添加到一台节点中即可,这里采用将mq3,mq2添加到mq1上的方法。
只需简单的几步即可。如无特殊说明,以下步骤在APP2和APP1上都要做。
$cd /u/rabbitmq/sbin
$./rabbitmq-server –detached //三个节点都启动
$./rabbitmqctl status //查看状态
$./rabbitmqctl stop_app
$./rabbitmqctl reset
在 mq2和mq3上:
$./rabbitmqctl cluster rabbit@mq1 rabbit@mq2
$./rabbitmqctl cluster rabbit@mq1 rabbit@mq3
$./rabbitmqctl start_app
在mq2和mq3上查看集群状态:
$**/script/rabbitmqctl cluster_status
Cluster status of node rabbit@mq3 …
[{nodes,[{disc,[rabbit@mq3,rabbit@mq2,rabbit@mq1]}]},
{running_nodes,[rabbit@mq1,rabbit@mq2,rabbit@mq3]}]
…done.

三.rabbitmq_jsonrpc的启动和配置

在安装rabbitmq的目录下的scripts目录中运行 ./ rabbitmq-plugins rabbitmq_jsonrpc
在linux下查看jsonrpc_web的端口号:netstat -plan |grep 55670
访问地址:http://localhost:55670
注:该55670的端口号不容易该成80 ,如果需要80的话,要在前面配置apache的反向代理