生產環境Rabbitmq集群安裝部署與配置


更多:生產環境Rabbitmq集群安裝

創建用戶

創建用戶名
sudo adduser rabbitmq

添加到sudo組里面
sudo usermod -a -G sudo rabbitmq

切換用戶
sudo su - rabbtimq

cd /data
sudo mkdir rabbitmq
sudo chown -R rabbitmq:rabbitmq rabbitmq/

安裝gcc

sudo apt-get install gcc

sudo apt-get install build-essential

sudo apt-get install libncurses5-dev

安裝Erlang

下載
wget http://erlang.org/download/otp_src_20.1.tar.gz

解壓
tar -xvf otp_src_20.1.tar.gz

創建目錄
mkdir erlang
mkdir erlang_data

mkdir rabbitmq_log
mkdir rabbitmq_mnesia

cd /data/rabbitmq/otp_src_20.1
./configure --prefix=/data/rabbitmq/erlang --without-javac
sudo make
sudo make install

sudo apt-get install libtool

=================================================================

編譯報錯:
********************** APPLICATIONS DISABLED **********************
crypto : No usable OpenSSL found
odbc : ODBC library - link check failed
ssh : No usable OpenSSL found
ssl : No usable OpenSSL found
********************** APPLICATIONS INFORMATION *******************
wx : wxWidgets not found, wx will NOT be usable
********************** DOCUMENTATION INFORMATION ******************

documentation :
xsltproc is missing.
fop is missing.
xmllint is missing.
The documentation can not be built.

解決方法安裝:
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install unixodbc unixodbc-dev

==================================================================

配置環境變量

sudo vi /etc/profile

export ERLANG_HOME=/data/rabbitmq/erlang
export PATH=$PATH:$ERLANG_HOME/bin

使配置生效:
source /etc/profile

檢驗是否安裝成功:

erl

Erlang/OTP 20 [erts-9.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [kernel-poll:false]
Eshell V9.1  (abort with ^G)
1>

安裝Rabbitmq

下載
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.14/rabbitmq-server-generic-unix-3.6.14.tar.xz

解壓
xz -d rabbitmq-server-generic-unix-3.6.14.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.14.tar
cd rabbitmq_server-3.6.14

rabbitmq-env.conf 配置數據文件和日志文件存放位置
vi /data/rabbitmq/rabbitmq_server-3.6.14/etc/rabbitmq/rabbitmq-env.conf

#配置數據文件存放位置
RABBITMQ_MNESIA_BASE=/data/rabbitmq/rabbitmq_mnesia
#配置日志文件存放位置
RABBITMQ_LOG_BASE=/data/rabbitmq/rabbitmq_log
#端口設置,默認為5672
#RABBITMQ_NODE_PORT=5672
#節點名稱,默認為rabbit
#RABBITMQ_NODENAME=rabbit

rabbitmq.conf,設置rabbitmq的運行參數
vi /data/rabbitmq/rabbitmq_server-3.6.14/etc/rabbitmq/rabbitmq.conf

rabbitmq.config

[{rabbit, [{vm_memory_high_watermark, {absolute, "8192MiB"}},
            {vm_memory_high_watermark_paging_ratio, 0.5},
            {disk_free_limit, 307200000000}
]}].

[{rabbit, [{vm_memory_high_watermark, 0.4},
	{vm_memory_high_watermark_paging_ratio, 0.5},
	{disk_free_limit, 307200000000}
]}].

vm_memory_high_watermark 設置默認的這個值是設置成物理內存的40%
vm_memory_high_watermark_paging_ratio 在broker達到最高水位阻塞發布者之前,它會嘗試將隊列內容分頁輸出到磁盤上來釋放內存. 持久化和瞬時消息都會分頁輸出 (已經在磁盤上的持久化消息會被趕出內存).
disk_free_limit RabbitMQ正在存儲數據的分區的磁盤可用空間限制。當可用磁盤空間低於此限制時,會觸發流量控制。上面配置說明:當磁盤空間小於300MB時,磁盤報警

配置環境變量

sudo vi /etc/profile

export RABBITMQ_HOME=/data/rabbitmq/rabbitmq_server-3.6.14
export PATH=$RABBITMQ_HOME/sbin:$PATH

使配置生效:
source /etc/profile

啟動RabbitMQ

啟動rabbitMQ
rabbitmq-server -detached

=============
rabbitmq-server
ERROR: epmd error for host localhost: nxdomain (non-existing domain)

解決辦法:
sudo vi /etc/hosts
添加:

127.0.0.1 localhost

==============

停止
rabbitmqctl stop

運行
rabbitmqctl start

重啟rabbitMQ
rabbitmqctl stop
rabbitmq-server -detached

啟動Web管理插件
rabbitmqctl start_app
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl stop

通過瀏覽器訪問
http://127.0.0.1:15672/

查看用戶列表
rabbitmqctl list_users

添加用戶
rabbitmqctl add_user admin admin
給用戶添加Admin權限
rabbitmqctl set_user_tags admin administrator

使用rabbitmq-delayed-message-exchange插件實現延遲功能

下載插件
wget https://dl.bintray.com/rabbitmq/community-plugins/rabbitmq_delayed_message_exchange-0.0.1.ez

下載文件放入/data/rabbitmq/rabbitmq_server-3.6.14/plugins

啟用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
(關閉插件)
rabbitmq-plugins disable rabbitmq_delayed_message_exchange

集群搭建

RabbirMQ集群節點操作
RabbitMQ集群搭建

例如:

172.25.0.1
172.25.0.2
綁Hosts關系

172.25.0.1 ct01
172.25.0.2 ct02
以上兩台機器都安裝好rabbitMQ

設置Erlang Cookie

修改兩台機器的.erlang.cookie一致

Erlang Cookie 文件在Home目錄下

sudo chmod 777 .erlang.cookie
把ct01下的.erlang.cookie文件復制到ct02機器上
查看兩台機器的.erlang.cookie文件內容,確保內容一致

恢復.erlang.cookie原來的權限

sudo chmod 400 .erlang.cookie
重啟rabbitMQ

rabbitmqctl stop
rabbitmq-server -detached

將ct01和ct02組成集群

在ct02上操作:

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@ct01
rabbitmqctl start_app

查看集群狀態
rabbitmqctl cluster_status

======================================
子節點刪除
rabbitctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

在主節點上硬刪除子節點

rabbitmqctl forget_cluster_node   node_name

======================================

RabbitMQ鏡像功能

rabbitmqctl set_policy ha-allqueue "^" '{"ha-mode":"all"}'

查看鏡像列表
rabbitmqctl list_policies


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM