一、背景
二、步驟
1.找兩臺linux機器,可以是物理機,也可以是虛擬機,只要保證有網絡,彼此能互通即可。此處選取兩臺虛擬機,ip爲192.168.137.249和192.168.137.172.
2.安裝epel源。兩臺機器分別安裝。
yum install epel-release -y
3.安裝erlang。erlang是rabbitmq的依賴包,兩臺機器分別安裝。
yum install erlang -y
4.分別安裝rabbitMq。兩臺機器分別安裝。此處也可選擇自己想要的版本,詳情可百度查找rabbitmq官網。
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.0/rabbitmq-server-3.5.0-1.noarch.rpm
yum localinstall rabbitmq-server-3.5.0-1.noarch.rpm -y
5.分別添加開機啓動。
chkconfig rabbitmq-server on
6.分別啓動rabbitmq。
systemctl start rabbitmq-server
systemctl status rabbitmq-server
7.分別開啓web管理界面
rabbitmq-plugins enable rabbitmq_management
8.修改配置文件。
cp /usr/share/doc/rabbitmq-server-3.5.0/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
9.rabbitmq 默認用戶爲guest,要添加其他的管理賬戶。此處建rabbitmq集羣,只要在一臺主機(rabbit主)上設置即可,其他會自動同步。
rabbitmqctl add_user xxx xxx
rabbitmqctl set_user_tags xxx administrator
rabbitmqctl set_permissions -p / xxx ".*" ".*" ".*"
systemctl restart rabbitmq-server
10.瀏覽器訪問rabbitmq-server, http://ip:15672
11.設置每個節點Cookie。將rabbitmq主節點上的.erlang.cookie拷貝到從上。必須保證各節點cookie保持一致,否則節點之間就無法通信。
chmod 777 /var/lib/rabbitmq/.erlang.cookie
scp -p /var/lib/rabbitmq/.erlang.cookie root@xxxx:/var/lib/rabbitmq/
chmod 600 /var/lib/rabbitmq/.erlang.cookie
systemctl stop rabbitmq-server
systemctl stop rabbitmq-server
rabbitmq-server -detached
rabbitmq-server -detached
rabbitmqctl cluster_status
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@xxx
rabbitmqctl start_app
rabbitmqctl cluster_status
12.添加鏡像模式配置。上面配置RabbitMQ默認集羣模式,但並不保證隊列的高可用性,儘管交換機、綁定這些可以複製到集羣裏的任何一個節點,但是隊列內容不會複製,雖然該模式解決一部分節點壓力,但隊列節點宕機直接導致該隊列無法使用,只能等待重啓,所以要想在隊列節點宕機或故障也能正常使用,就要複製隊列內容到集羣裏的每個節點,需要創建鏡像隊列。
yum install -y haproxy
listen rabbitmq_cluster 0.0.0.0:5672
mode tcp
balance roundrobin
server rqslave1 114.55.29.241:5672 check inter 2000 rise 2 fall 3
server rqmaster 114.55.29.86:5672 check inter 2000 rise 2 fall 3
haproxy -c -f /etc/haproxy/haproxy.cfg
systemctl start haproxy
systemctl status haproxy
vi /etc/sysctl.conf
sysctl -p
systemctl start haproxy
systemctl status haproxy
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
13.以上rabbitmq鏡像集羣搭建已結束。能看到ha-all的說明用我的ha-all策略啦,屬於鏡像模式,沒有表示的就是普通模式。
14.集羣退出。
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl forget_cluster_node rabbit@xxx
三、問題總結
搭建過程出現的問題,已寫在過程中,請仔細觀看。