前言
一般服务搭建有三种模式:单机模式,伪集群模式,集群模式。由于只有单台服务器,这里采用伪集群模式进行服务的搭建(即在单台服务器下模拟集群的方式)。但是当运用到生产环境后,考虑到服务的高性能,高可用等,肯定是使用真正的集群模式搭建的,搭建方式上伪集群模式和集群模式相差无几,可以作为集群模式搭建参考。
集群搭建
节点说明
rabbitmq伪集群由两个rabbitmq节点组成:
1. rabbitmq-node1(master) - 10.116.84.117:5673:15673 - disc磁盘节点
2. rabbitmq-node2(slaver) - 10.116.84.117:5674:15674 - ram内存节点
其中
5673和5674分别为rabbitmq-node1和rabbitmq-node2的client连接端口;
15673和15674分别为rabbitmq-node1和rabbitmq-node2后台监控系统访问端口;
rabbitmq-node1为master且是disc磁盘节点;
rabbitmq-node2为slaver且是ram内存节点;搭建过程
1. 下载安装openssl
cd /usr/local
wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1c.tar.gz
tar –zxvf openssl-1.0.1c.tar.gz
cd openssl-1.0.1c
./config
make
make install
2. 下载安装Python
cd /usr/local
wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
xz -d Python-3.4.3.tar.xz
tar -xvf Python-3.4.3.tar
cd Python-3.4.3
./configure
make
make install
3. yum安装ncurses
yum clean all //先清除缓存记录
yum install ncurses-devel
ps: 这一步是为下面第4步做准备的,不然第4步./configure会编译不过。
4. 下载安装Erlang语言环境
cd /usr/local
wget http://erlang.org/download/otp_src_18.2.1.tar.gz
tar -zxvf otp_src_18.2.1.tar.gz
cd otp_src_18.2.1
./configure //编译出错时,可通过make clean命令清除编译结果
make
make install
5. 下载安装simplejson
cd /usr/local
wget https://pypi.python.org/packages/40/ad/52c1f3a562df3b210e8f165e1aa243a178c454ead65476a39fa3ce1847b6/simplejson-3.10.0.tar.gz
tar -zxvf simplejson-3.10.0.tar.gz
cd simplejson-3.10.0
sudo python setup.py install
************************ok,到此为止rabbitmq运行环境已经安装完毕*********************
6. 安装rabbitmq各节点
cd /usr/local
mkdir rabbitmq-cluster
cd rabbitmq-cluster
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.0/rabbitmq-server-generic-unix-3.6.0.tar.xz
xz -d rabbitmq-server-generic-unix-3.6.0.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.0.tar
mv rabbitmq_server-3.6.0/ rabbitmq-node1
cp -r rabbitmq-node1/ rabbitmq-node2
ps:对于高版本的rabbitmq-server,只需要解压即可运行!
7. 修改rabbitmq-node1节点配置
cd /usr/local/rabbitmq-cluster/rabbitmq-node1/etc/rabbitmq
touch rabbitmq-env.conf //环境变量文件(默认没有,自己手动创建)
vim rabbitmq-env.conf
//加入如下配置:
NODE_PORT=5673
NODENAME=rabbitmq-node1
touch rabbitmq.config //配置文件(默认没有,自己手动创建)
vim rabbitmq.config
//加入如下配置:
[ {rabbitmq_management, [{listener, [{port, 15673}]}]} ].
8. 修改rabbitmq-node2节点配置
cd /usr/local/rabbitmq-cluster/rabbitmq-node2/etc/rabbitmq
touch rabbitmq-env.conf //环境变量文件(默认没有,自己手动创建)
vim rabbitmq-env.conf
//加入如下配置:
NODE_PORT=5674
NODENAME=rabbitmq-node2
touch rabbitmq.config //配置文件(默认没有,自己手动创建)
vim rabbitmq.config
//加入如下配置:
[ {rabbitmq_management, [{listener, [{port, 15674}]}]} ].
9. 修改各节点主机hosts文件
由于这里是伪集群,只用修改一台hosts文件即可!
vim /etc/hosts
//加入如下配置:
10.116.84.117 rabbitmq-node1@iZ94degopx4Z
10.116.84.117 rabbitmq-node2@iZ94degopx4Z
其中,iZ94degopx4Z为当前主机的hostname,可通过输入hostname即可查看!
10. 启动rabbitmq-node1(master)节点
cd /usr/local/rabbitmq-cluster/rabbitmq-node1/sbin/
./rabbitmq-server
或以后台进程启动,即使退出xshell客户端,服务不会退出
./rabbitmq-server -detached
服务启动成功后,会在$HOME/下面生成.erlang.cookie文件并写入cookie值。
11. 设置各节点.erlang.cookie
由于rabbitmq集群是依赖于Erlang集群环境的,Erlang集群各机器之间要能够通信必须要有相同的erlang cookie信息。
默认.erlang.cookie文件的位置在$HOME/.erlang.cookie(是一个隐藏的文件)
以root账号启动则在/root目录下: cat /root/.erlang.cookie
因为是单机伪集群,我们不用关心此设置,但是在搭建集群时,是需要将master节点服务启动成功后,生成的.erlang.cookie文件拷贝到其他节点中的。
12. 启动rabbitmq-node2(slaver)节点并加入到集群中
将rabbitmq-node2以ram内存节点加入到集群,不指定则默认以disc磁盘节点加入到集群中
cd /usr/local/rabbitmq-cluster/rabbitmq-node2/sbin/
//如果之前有加入集群过,可通过如下命令,重置集群状态信息
./rabbitmqctl stop_app
./rabbitmqctl reset
//将当前节点以ram内存节点的形式加入群组
./rabbitmqctl join_cluster –-ram rabbitmq-node1@iZ94degopx4Z
./rabbitmqctl start_app
13. 启动各节点监控
/usr/local/rabbitmq-cluster/rabbitmq-node1/sbin/rabbitmq-plugins enable rabbitmq_management
/usr/local/rabbitmq-cluster/rabbitmq-node2/sbin/rabbitmq-plugins enable rabbitmq_management
ps:这样就可以通过浏览器访问15673和15674端口查看集群监控信息了。查看集群运行状态
cd /usr/local/rabbitmq-cluster/rabbitmq-node1/sbin/
./rabbitmqctl cluster_status
集群高可用
参考之前写的一篇博文《haproxy安装部署》