RabbitMQ集羣

一、前言

     線上的 RabbitMQ用的是單節點,前段時間由於機器內存不足,發生了OOM,業務受到了影響,故打算換成 RabbitMQ集羣。RabbitMQ模式有三種,分別是:單一模式、普通模式、鏡像模式,鏡像模式纔是RabbitMQ真正的HA方案,關於更詳細的簡紹,請移步到官網:http://www.rabbitmq.com/ha.html ,下面是關於RabbitMQ集羣的部署過程:

二、環境

erlang版本:

erlang-19.0.4-1.el7.centos.x86_64

rabbitmq版本:

rabbitmq-server-3.6.6


服務器主機名:

ip-172-31-13-114  磁盤節點
ip-172-31-15-124 內存節點
ip-172-31-11-216 內存節點

三、安裝

1、erlang安裝

a、wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
b、rpm --import https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
c、Add the following lines to some file in /etc/yum.repos.d/:
[erlang-solutions]
name=Centos $releasever - $basearch - Erlang Solutions
baseurl=https://packages.erlang-solutions.com/rpm/centos/$releasever/$basearch
gpgcheck=1
gpgkey=https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
enabled=1
d、yum install erlang esl-erlang

2、RabbitMQ 安裝

a、 wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-generic-unix-3.6.6.tar.xz
b、tar -xvf rabbitmq-server-generic-unix-3.6.6.tar.xz
c、 mv rabbitmq_server-3.6.6 /data/rabbitmq
d、cd /data/rabbitmq/;./sbin/rabbitmq-server -detached

四、配置

1、需要配置host,不然集羣沒用辦法創建,我這裏用的aws的ec2,用的默認主機名,這裏就不修改了

2、拷貝.erlang.cookie,RabbitMQ集羣依賴erlang集羣才能工作,所以需要先構建erlang集羣,.erlang.cookie文件在啓動用戶的家目錄下,我這裏是用work用戶啓動的RabbitMQ,拷貝一臺服務器的/home/work/.erlang.cookie到其他機器並設置權限

chown work:work  /home/work/.erlang.cookie
chmod 400 /home/work/.erlang.cookie

3、設置集羣的模式:鏡像

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

PS:

在任意一個節點操作即可,這裏在ip-172-31-13-114上操作

4、加入集羣(ip-172-31-15-124 、ip-172-31-11-216 )

rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@ip-172-31-13-114
rabbitmqctl start_app

PS:

--ram 指定內存節點類型,--disc指定磁盤節點類型

5、查看集羣

rabbitmqctl cluster_status

6、啓用管理和監控模塊

rabbitmq-plugins enable rabbitmq_management

7、設置集羣的名字

rabbitmqctl set_cluster_name my_mq

8、添加用戶:

rabbitmqctl add_user spider spider

9、設置用戶權限策略

rabbitmqctl set_user_tags spider administrator

10、vhost授權

rabbitmqctl set_permissions -p / spider '.*' '.*' '.*'

11、改變節點類型爲磁盤節點

rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
rabbitmqctl start_app

12、將節點移出集羣

將節點ip-172-31-11-216 移出集羣前,先要stop_app,然後reset節點

[root@ip-172-31-11-216 ~]# rabbitmqctl stop_app
Stopping node rabbit@ip-172-31-11-216 ...
[root@ip-172-31-11-216 ~]# rabbitmqctl reset
Resetting node rabbit@ip-172-31-11-216 ...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章