RabbitMQ——集群配置
之前不管是搞Redis、SQL、Mongo還是其他的東西,一律都沒說過集群要怎么搞,電腦實在是帶不動、說透徹點就是懶,懶得搭也懶得寫,今日深刻意識到錯誤,做學問是不能懶的,會被人噴的,發個集群配置的簡版吧。
一點廢話
可以不看,之前用的Windows,最后想想撘集群什么的還是用CentO逼格更高一點,這年頭就是搞Linux的看不起Windows、搞Java的看不起搞C#的,就裝了兩個CentOS7,裝上后黑屏!!!查了一堆的解決方案:
- 虛擬機的顯示配置里把3D加速關了,看了看,確實沒勾,沒用!
- 本機的BIOS的處理器設置中開啟虛擬化設置,沒用!!
- 輸入命令“netsh winsock reset”后重啟,沒用!!!
- 虛擬機屏幕亮度問題.......
重裝?不可能的,這輩子都不可能重裝的,發大招,使用如下命令:
yum remove gnome-shell
既然你不好好干活,那就下崗吧,完美解決,不得不為我的機智點個贊。
言歸正傳
集群這一塊的話,一般有單機集群和多機集群,單機集群實在是不推薦,本來就是為了分散風險,現在搭在一臺上,服務器掛了就歇菜了,實在有需求可以看看[https://blog.csdn.net/u013256816/article/details/53264715]。
這里再說一句廢話,很重要,很多博客里也不提這茬,估計是覺得不需要說吧,但咱是個菜雞啊,搭建集群前最好改一下主機名,否則會比較煩,這里我將“/etc/hostname”中的主機名分別設置為192-168-253-133、192-168-253-134,本來希望找一種方式不修改主機名就達到目的,很遺憾,沒找到,知道的大神煩請告訴我一聲。改主機名就比較簡單了,直接修改/etc/hostname中的名字然后reboot就行。接下來照如下步驟執行即可:
- 目前有兩臺服務器133和134,先啟動rabbitmq服務:
rabbitmq-server -detached #這個detached表示在后臺運行
- 分別在/etc/hosts下添加133和134配置
192.168.253.133 192-168-253-133
192.168.253.134 192-168-253-134
- 使用scp命令將$HOME/.erlang.cookie(自己下載安裝的)或者/var/lib/rabbitmq/.erlang.cookie(使用rpm安裝的)中的cookie從133拷貝到134服務器上。
scp $HOME/.erlang.cookie root@192-168-253-134:$HOME/.erlang.cookie
- 開啟133服務器的節點
rabbitmqctl start_app
- 134服務器上的加入cluster中后啟動
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@192-168-253-133
rabbitmqctl start_app
以上就是多機集群的部署步驟,當然了這種模式下數據結構共享,也就是對于Queue來說每個節點上都有,但是數據只存在某一個節點上,當某個節點故障后,該節點上的數據是無法被消費的,若是做了持久化,只有等待該節點恢復后才可以被消費。那么有沒什么方式能夠實現數據在各節點間相互同步能,鏡像策略可以解決這個問題,不過這種方式會占用各節點之間的網絡帶寬。當然你有兩種方式可以選擇:
- 第一種是在rabbitmq的管理界面的admin/policies/add or update a plicy中配置,markdown懶得搞圖,自己找找吧。
- 第二種自然是敲命令啦:
rabbitmqctl set_policy ha-all “^” ‘{“ha-mode”:”all”}’
這個策略使用比較靈活,也可以選擇只同步部分隊列,關心的同志們可以詳細了解一下,到這里基本上就完成了集群的配置,至于負載啊用Haproxy的比較多,土豪用F5也可以啊,Haproxy后面再說,后面還有一些廢話,老司機們可以不看了。
一些命令
寫了這么多是不是敲命令有點暈?這里我們細說一下,網上抄的:
- rabbitmq-server –detached:在后臺啟動rabbitmq;
- rabbitmqctl add_user admin admin:添加用戶;
- rabbitmqctl set_user_tags admin administrator:修改用戶角色;
- rabbitmqctl list_users:查看用戶列表;
- rabbitmqctl set_permissions -p / admin "." "." ".*":使用戶擁有所有資源的配置、寫、讀權限以便管理其中的資源;
- rabbitmqctl delete_user admin:刪除用戶;
- rabbitmqctl change_password admin admin:修改用戶密碼;
- rabbitmqctl add_vhost myvhost:添加新的vhost;
- rabbitmqctl delete_vhost myvhost:刪除指定的vhost;
- rabbitmqctl status:查看服務器狀態;
- rabbitmqctl list_queues:查看隊列信息;
- rabbitmqctl start_app:開啟應用;
- rabbitmqctl stop_app:關閉應用;
- rabbitmq-plugins enable rabbitmq_management:啟用圖形界面;
- rabbitmqctl -p / purge_queue queue1:清空隊列queue1中的數據;
更多參數見rabbitmqctl,不做綴訴了。