rabbitMQ高可用集群
阿新 • • 發佈:2018-07-08
sig 修改 管理 str 版本 lease 設置 啟動 reset 準備兩臺機器(均要安裝設置)
cat /etc/hosts ##集群機器都要添加host解析 192.168.1.7 gluster01 192.168.1.8 gluster02
調整兩臺機器的系統限制(內核參數調整)
fs.file-max設置 # vim /etc/sysctl.conf,添加: fs.file-max = 65535 #sysctl -p
每用戶限制(ulimit -n) # vim /etc/security/limits.conf 在最後一行添加如下命令 root soft nofile 65535 root hard nofile 65535 * soft nofile 65535 * hard nofile 65535
# vim /etc/rc.local ulimit -SHn 65535
首先安裝erlang
在安裝RabbitMQ之前,我們需要安裝Erlang,官方建議使用打包版本,使用官方生成的一個軟件包(https://github.com/rabbitmq/erlang-rpm),它只提供運行RabbitMQ所需要的組件,它可能會也可能不適合運行其他基於Erlang的軟件或第三方RabbitMQ插件
vim /etc/yum.repos.d/rabbitmq-erlang.repo [rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7 gpgcheck=1 gpgkey=https://www.rabbitmq.com/rabbitmq-release-signing-key.asc repo_gpgcheck=0 enabled=1
yum install erlang -y cd /home/
安裝RabbitMQ服務器
wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.0/rabbitmq-server-3.7.0-1.el7.noarch.rpm rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc yum install rabbitmq-server-3.7.0-1.el7.noarch.rpm
啟動服務器
systemctl enable rabbitmq-server systemctl start rabbitmq-server
修改rabbitmq配置
修改/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service 在[Service]中,增加LimitNOFILE=30000(具體數值根據需要) 執行systemctl daemon-reload 重啟rabbitmq服務 >執行rabbitmqctl status 查看到下面內容 {disk_free_limit,50000000}, {disk_free,13644468224}, {file_descriptors, [{total_limit,29900}, {total_used,10}, {sockets_limit,26908}, {sockets_used,0}]}, {processes,[{limit,1048576},{used,411}]}, {run_queue,0}, {uptime,18474}, {kernel,{net_ticktime,60}}]
rabbitmq自帶管理後臺,安裝後需要配置開啟
進入rabbitmq安裝目錄中的sbin目錄執行 rabbitmq-plugins enable rabbitmq_management 重啟rabbitmq服務生效 打開http://IP:15672/即可看到管理後臺 用戶名密碼均為guest
管理界面插件: rabbitmq-plugins enable rabbitmq_management 添加賬號: rabbitmqctl add_user admin admin 添加 權限tag rabbitmqctl set_user_tags admin administrator
瀏覽器打開地址查看管理頁面
當兩個節點都正常啟動後,開始設置集群
1 hosts文件中必須添加機器解析 /etc/hosts文件
2 設置界面節點驗證 Erlang Cookie
/var/lib/rabbitmq/.erlang.cookie 修改保證兩個節點該文件內容相同方能實現集群
RabbitMQ節點和CLI工具(例如rabbitmqctl)使用cookie來確定它們是否被允許相互通信, 要使兩個節點能夠通信,它們必須具有相同的共享密鑰,稱為Erlang Cookie. Cookie只是一個字符串,最多可以有255個字符。它通常存儲在本地文件中 該文件必須只能由所有者訪問(400權限)。 每個集群節點必須具有相同的cookie, 文件位置/var/lib/rabbitmq/.erlang.cookie, 把rabbit1、rabbit2設置成一樣的即可,權限是400
3 重啟所有節點
systemctl restart rabbitmq-server
4 查看集群狀態
rabbitmqctl cluster_status
5 將節點加入集群(將gluster02或者03等 加入gluster01)
[root@gluster02 ~]# 在機器02上 rabbitmqctl stop_app rabbitmqctl join_cluster rabbit@gluster02 rabbitmqctl start_app systemctl restart rabbitmq-server 或者 rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@gluster02 ##設置問RAM節點機器 必須保證有一臺是disc rabbitmqctl start_app systemctl restart rabbitmq-server 也可以用rabbitmqctl change_cluster_node_type ram 設置RAM
集群成功後
rabbitmqctl cluster_status
[root@gluster02 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@gluster02 ... [{nodes,[{disc,[rabbit@gluster01]},{ram,[rabbit@gluster02]}]}, {running_nodes,[rabbit@gluster01,rabbit@gluster02]}, {cluster_name,<<"rabbit@gluster01">>}, {partitions,[]}, {alarms,[{rabbit@gluster01,[]},{rabbit@gluster02,[]}]}] [root@gluster01 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@gluster01 ... [{nodes,[{disc,[rabbit@gluster01]},{ram,[rabbit@gluster02]}]}, {running_nodes,[rabbit@gluster02,rabbit@gluster01]}, {cluster_name,<<"rabbit@gluster01">>}, {partitions,[]}, {alarms,[{rabbit@gluster02,[]},{rabbit@gluster01,[]}]}]
現在機器已經添加了,接下來要進行exchange、queue 高可用策略,進行頁面操作
1 添加用戶
2 添加主機
3 編輯主機用戶
4 設置policies 策略
5 設置queues隊列
6 完成後查看隊列集群狀態,下面是集群成功狀態
註意:默認rabbitmq.conf配置文件是沒有的,如果我們想自定義一些配置,可以創建/etc/rabbitmq/rabbitmq.conf,修改後的配置會覆蓋內置的配置 更多配置項可參看http://www.cnblogs.com/sellsa/p/8036909.html
rabbitMQ高可用集群