RabbitMq 集群搭建

来源:http://www.cnblogs.com/liuyuhua/archive/2016/12/01/6121252.html
-Advertisement-
Play Games

實驗環境: 操作系統為 Centos 7.2 IP hostName 192.168.190.132 node132 192.168.190.139 node139 192.168.190.140 n... ...


   

實驗環境:

操作系統為 Centos 7.2

IP hostName

192.168.190.132 node132

192.168.190.139 node139

192.168.190.140 node140

   

RabbitMQ相關埠

   

  • 4369 (epmd)
  • 5672, 5671 (AMQP 0-9-1 and 1.0 without and with TLS)
  • 25672. This port used by Erlang distribution for inter-node and CLI tools communication and is allocated from a dynamic range (limited to a single port by default, computed as AMQP port + 20000). Seenetworking guide for details.
  • 15672 (if management plugin is enabled)
  • 61613, 61614 (if STOMP is enabled)
  • 1883, 8883 (if MQTT is enabled)

       

    相應埠開啟防火牆設置

       

       

    添加EPEL

       

    [root@node139 ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    Retrieving https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    warning: /var/tmp/rpm-tmp.2hDPSr: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY

    Preparing... ################################# [100%]

    Updating / installing...

    1:epel-release-7-8 ################################# [100%]

       


    添加Erlang

       

    [root@node139 ~]# rpm -Uvh http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm

    Retrieving http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm

    Preparing... ################################# [100%]

    Updating / installing...

    1:erlang-solutions-1.0-1 ################################# [100%]

    --2016-11-29 06:34:38-- http://packages.erlang-solutions.com/rpm/centos/erlang_solutions.repo

    Resolving packages.erlang-solutions.com (packages.erlang-solutions.com)... 31.172.186.53

    Connecting to packages.erlang-solutions.com (packages.erlang-solutions.com)|31.172.186.53|:80... connected.

    HTTP request sent, awaiting response... 200 OK

    Length: 245

    Saving to: 'erlang_solutions.repo'

       

    100%[==========================================================================>] 245 --.-K/s in 0s

       

    2016-11-29 06:34:39 (27.5 MB/s) - 'erlang_solutions.repo' saved [245/245]

       


    安裝RabbitMQ

    軟體版本:http://www.rabbitmq.com/releases/rabbitmq-server

       

    [root@node139 ~]# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

    [root@node139 ~]# rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc

    [root@node139 ~]# yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm

       

    啟動服務

    [root@node139 ~]# systemctl enable rabbitmq-server.service

    [root@node139 ~]# systemctl start rabbitmq-server.service

       


    啟用RabbitMQ監控插件

    [root@node139 ~]# rabbitmq-plugins enable rabbitmq_management

    The following plugins have been enabled:

    mochiweb

    webmachine

    rabbitmq_web_dispatch

    amqp_client

    rabbitmq_management_agent

    rabbitmq_management

       

    Applying plugin configuration to rabbit@node139... started 6 plugins.

    [root@node139 ~]# netstat -apn | grep 15672

    tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 4119/beam.smp

       


    RabbitMQ用戶管理

       

    添加用戶(用戶名root,密碼admin)

    [root@node139 ~]# rabbitmqctl add_user admin admin

       

    設置用戶角色(設置admin用戶為管理員角色)

    [root@node139 ~]# rabbitmqctl set_user_tags admin administrator

    Setting tags for user "admin" to [administrator] ...

       

    設置用戶許可權(設置admin用戶配置、寫、讀的許可權)

    [root@node139 ~]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

    Setting permissions for user "admin" in vhost "/" ...

       

    刪除用戶(刪除guest用戶)

    [root@node139 ~]# rabbitmqctl delete_user guest

       

       

    RabbitMQ集群配置

    集群配置在單機配置完成的基礎上進行

    以下以node140為例,node132需要做同樣的操作

    • 添加/etc/hosts條目

    node132node139node140里的/etc/hosts文件中分別添加:

    192.168.190.132 node132
    192.168.190.139 node139
    192.168.190.140 node140

       

    • 設置每個節點Cookie

    Rabbitmq的集群是依賴於erlang的集群來工作的,所以必須先構建起erlang的集群環境。Erlang的集群中各節點是通過一個magic cookie來實現的,這個cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,文件是400的許可權。所以必須保證各節點cookie保持一致,否則節點之間就無法通信

       

    [root@node140 /]# echo -n "AZVOCZYZZBVFLBPTBXU" > /var/lib/rabbitmq/.erlang.cookie

    [root@node140 ~]# chown rabbitmq:root /var/lib/rabbitmq/.erlang.cookie

    [root@node140 /]# chmod 600 /var/lib/rabbitmq/.erlang.cookie

    [root@node140 /]# cat /var/lib/rabbitmq/.erlang.cookie

    AZVOCZYZZBVFLBPTBXU

       

    啟動服務

    [root@node140 ~]# systemctl start rabbitmq-server.service

    [root@node140 ~]# rabbitmq-server -detached

       

    開通防火牆

    [root@node140 ~]# firewall-cmd --permanent --add-port={4369/tcp,25672/tcp}

    success

    [root@node140 ~]# firewall-cmd --reload

    success

       

  • 加入集群

    預設是磁碟節點,如果是記憶體節點的話,需要加--ram參數

       

    [root@node140 ~]# rabbitmqctl stop_app

    Stopping node rabbit@node140 ...

    [root@node140 ~]# rabbitmqctl join_cluster rabbit@node139

    Clustering node rabbit@node140 with rabbit@node139 ...

    [root@node140 ~]# rabbitmqctl start_app

    Starting node rabbit@node140 ...

  • 設置鏡像策略

       

    [root@node140 ~]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

    Setting policy "ha-all" for pattern "^" to "{\"ha-mode\":\"all\",\"ha-sync-mode\":\"automatic\"}" with priority "0" …

       


    啟用RabbitMQ監控插件

    cluster搭建起來後若在web管理工具中rabbitmq_management的Overview的Nodes部分看到"Node statistics not available"的信息,說明在該節點上web管理插件還未啟用。

    [root@node140 ~]# rabbitmq-plugins enable rabbitmq_management

       

    集群配置好後,可以在 RabbitMQ 任意節點上執行下麵的命令來查看是否集群配置成功。

    [root@node140 ~]# rabbitmqctl cluster_status

       

    其它節點需要做同樣的操作

       

       

    登錄站點http://192.168.190.139:15672/

       

       

       

       

       

    參考網址:http://www.rabbitmq.com/clustering.html

    安裝中遇到的問題:

    這個/var/lib/rabbitmq/.erlang.cookie文件需要修改文件所有者和文件的許可權為rw,否則rabbitmq服務無法啟動;

       

       

       

       

       

       

       

       

       

       

       

       

       

       


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、MySQL許可權系統通過兩個階段進行認證: (A) 對用戶進行身份認證,IP地址和用戶名聯合, (B) 對合法用戶賦予相應許可權,許可權表在資料庫啟動的時候載入記憶體中。 二、在許可權的存取過程中,會用到”mysql“資料庫中的user、host和db這3個許可權表。兩階段驗證過程 (A) user表中 h ...
  • rpm -qa |grep vsftpd yum search vsftpd yum install vsftpd 查看是否已經啟動: service vsftpd status 啟動: service vsftpd start 在瀏覽器中輸入地址訪問:記得在之前關閉防火牆 點擊我的電腦,在地址欄輸 ...
  • 創建xiangkejin zhangsan兩個用戶 可看見文件中創建的兩個用戶: 建立虛擬目錄並配置用戶認證 ①建立虛擬目錄 /xiangkejin ②在Apache的主配置文件httpd.conf文件中,加入以下語句 Alias /xiangkejin "/xkj"<Directory "/xkj ...
  • 1.安裝FTP服務 滑鼠桌面右擊個性化-卸載程式-打開或關閉windows功能 2.在IIS控制面板里添加FTP站點 下一步 下一步 滑鼠右擊 下一步 下一步 3.配置ftp站點 4.測試站點是否正常工作 ftp://192.168.1.101 ...
  • 查詢是否安裝了apache rpm -qa |grep httpd yum install httpd 安裝 service httpd start 啟動 測試Apache伺服器 註意:防火牆的配置 這是預設的防火牆策略,應該從瀏覽器訪問能夠通過,可是還是被擋了,當我iptables -F清除所有規 ...
  • ...
  • Memcached 是一個高性能的分散式記憶體對象緩存系統,用於動態Web應用以減輕資料庫負載。它通過在記憶體中緩存數據和對象來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,但是客戶端可以用任何語... ...
  • Hi,大家好!我是CrazyCatJack。最近在學習Linux內核的配置、編譯及Makefile文件。今天總結一下學習成果,分享給大家^_^ 1.解壓縮打補丁 首先是解壓縮你獲取到的Linux內核。這裡我用到的是linux.2.22.6版本的內核。在Linux下命令行通過tar xjf linux ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...