RabbitMQ集群部署(三)——鏡像集群模式部署及常見問題
本文分享自天翼云開發者社區《RabbitMQ集群部署(三)——鏡像集群模式部署及常見問題》,作者:芋泥麻薯
鏡像集群模式與普通集群模式的主要區別在于. 無論queue的元數據還是queue中的消息都會同時存在與多個實例上.要開啟鏡像集群模式,需要在后臺新增鏡像集群模式策略. 即要求數據同步到所有的節點.也可以指定同步到指定數量的節點.
這種方式的好處就在于, 任何一個服務宕機了,都不會影響整個集群數據的完整性, 因為其他服務中都有queue的完整數據, 當進行消息消費的時候,連接其他的服務器節點一樣也能獲取到數據.
缺點:
(1): 性能開銷大: 因為需要進行整個集群內部所有實例的數據同步
(2):無法線性擴容: 因為每一個服務器中都包含整個集群服務節點中的所有數據, 這樣存儲瓶頸會出現在每個節點存儲上。
1、開啟鏡像同步,注意,該操作是針對vhost的,即如果有多個vhost,則需要配置多次
rabbitmqctl set_policy -p "/test_host" ha-all "^" '{"ha-mode":"all", "ha-sync-mode":"automatic"}'
rabbitmqctl set_policy -p "/" ha-all "^" '{"ha-mode":"all", "ha-sync-mode":"automatic"}'
rabbitmq部署中的常見的問題
1、如果是機器是第二次安裝,則需要刪除mnesia目錄
rm -rf /var/lib/rabbitmq/mnesia
2、如果需要指定rabbitmq的端口地址、節點聯通地址等,可以修改配置和添加對應環境變量
vi /etc/rabbitmq/rabbitmq.config
[
{rabbit, [
{tcp_listeners, [{
# 監聽客戶端連接的端口號,默認5672
"0.0.0.0", 28889}
]},
{cluster_partition_handling, autoheal},
{loopback_users, []}
]},
{log_levels, [
{connection, info}
]},
{rabbitmq_management, [
{listener, [
# managenmet服務監聽客戶端連接的端口號,默認15672
{port, 28890},
{ip, "0.0.0.0"},
{ssl, false}]}
]}
].
vi /etc/rabbitmq/rabbitmq-env.conf
#日志文件路徑
RABBITMQ_LOG_BASE=/var/log/rabbitmq
#epmd端口地址,默認4369
export ERL_EPMD_PORT=28891
#RabbitMQ 節點內部通信的端口號,默認25672
RABBITMQ_DIST_PORT=28892
3、卸載流程
service rabbitmq-server stop
yum -y remove erlang-*
yum -y remove rabbitmq-server.noarch
rm -rf /var/lib/rabbitmq
rm -rf /user/lib/rabbitmq
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。