【Rabbitmq】Ubuntu環境器集羣搭建

環境準備

服務器

文檔參考

  • apt source https://packagecloud.io/rabbitmq/rabbitmq-server?filter=debshtml

  • 安裝手冊 http://www.rabbitmq.com/install-debian.htmlnode

  • erlang 安裝 https://packages.erlang-solutions.com/erlang/#tabs-debianweb

rabbitmq 各node server安裝

根據官方安裝說明 先安裝 erlang 在安裝 rabbitmq
RabbitMQ needs Erlang/OTP to run. Erlang/OTP packages in standard Debian and Ubuntu also can be quite outdated. Consider installing a newer version, such as 19.3.shell

安裝依賴

# 添加apt 倉庫
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
# 更新安裝
sudo apt-get update
sudo apt-get install erlang

安裝rabbitmq

# 官方安裝腳本
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash
# 添加rabbitmq 簽名 (可略)
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
# 更新並安裝
sudo apt-get update(可略)
sudo apt-get install rabbitmq-server

集羣組織

提早準備

  • 修改ulimit限制爲51200vim

# 文件修改
sudo vim /etc/security/limits.conf # 結尾插入 * - nofile 51200
sudo vim /etc/sysctl.conf          # 結尾插入 fs.file-max = 51200
sysctl -p

# 啓動腳本修改
sudo vim /lib/systemd/system/rabbitmq-server.service 
## service 中插入 LimitNOFILE=51200
sudo systemctl daemon-reload
  • 修改數據路徑到新盤 /data/rabbitmq/mnesiasegmentfault

掛載新盤 過程略過
/etc/rabbitmq/ 建立文件 rabbitmq-env.conf
加入一行 RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesiabash

node 之間的認證

  • 關閉守護進程服務器

sudo systemctl stop rabbitmq-server.service
  • 同步cookie 文件
    選取任意一臺做爲第一個節點,複製改節點下面的 /var/lib/rabbitmq/.erlang.cookie 到其餘節點,複製後修改文件權限和屬主。cookie

cd /var/lib/rabbitmq
sudo chown rabbitmq.rabbitmq ./.erlang.cookie
sudo chmod 400 ./.erlang.cookie

添加集羣

# 開啓內網端口

# 全部node執行
sudo rabbitmq-server -detached

# 帶加入的node上執行
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster rabbit@ip-172-31-13-159 # 第一臺node的名稱
sudo rabbitmqctl start_app
sudo rabbitmqctl stop
sudo systemctl start rabbitmq-server.service

啓用WEB UI

每個node都須要啓用 sudo rabbitmq-plugins enable rabbitmq_management
登陸 https://xxx:15672 web管理頁面 默認提供guest帳號,可是該帳號只提供localhost登陸,因此須要單首創建用戶,使用rabbitmqctl
用戶相關命令以下:app

$ sudo rabbitmqctl help |grep user
    add_user <username> <password>  # 建立用戶
    delete_user <username>          # 刪除用戶
    change_password <username> <newpassword>  # 修改密碼
    clear_password <username>                 # 清楚密碼,直接登陸
    authenticate_user <username> <password>   # 測試用戶認證(我也不知道2333)
    set_user_tags <username> <tag> ...        # 設置用戶權限 []
    list_users
    set_permissions [-p <vhost>] <user> <conf> <write> <read>
    clear_permissions [-p <vhost>] <username>
    list_user_permissions <username>

建立隊列鏡像

有兩種方式,一種是使用rabbitmqctl 工具,另一種是在web ui直接設置
能夠參考下 http://www.javashuo.com/article/p-mlnirdgd-gc.html

負載

負載本次使用的是aws elb
建立負載添加每個節點到elb中, 對列最好建議內網使用,因此開放15672 到公網,開放5672業務端口到內網

總結

本文只針對集羣搭建,具體原理應用還請參考官方文檔

相關文章
相關標籤/搜索