更多:生產(chǎn)環(huán)境Rabbitmq集群安裝
創(chuàng)建用戶
創(chuàng)建用戶名
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
創(chuàng)建目錄
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
==================================================================
配置環(huán)境變量
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 配置數(shù)據(jù)文件和日志文件存放位置
vi /data/rabbitmq/rabbitmq_server-3.6.14/etc/rabbitmq/rabbitmq-env.conf
#配置數(shù)據(jù)文件存放位置
RABBITMQ_MNESIA_BASE=/data/rabbitmq/rabbitmq_mnesia
#配置日志文件存放位置
RABBITMQ_LOG_BASE=/data/rabbitmq/rabbitmq_log
#端口設置正蛙,默認為5672
#RABBITMQ_NODE_PORT=5672
#節(jié)點名稱惫确,默認為rabbit
#RABBITMQ_NODENAME=rabbit
rabbitmq.conf,設置rabbitmq的運行參數(shù)
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 設置默認的這個值是設置成物理內(nèi)存的40%
vm_memory_high_watermark_paging_ratio 在broker達到最高水位阻塞發(fā)布者之前,它會嘗試將隊列內(nèi)容分頁輸出到磁盤上來釋放內(nèi)存. 持久化和瞬時消息都會分頁輸出 (已經(jīng)在磁盤上的持久化消息會被趕出內(nèi)存).
disk_free_limit RabbitMQ正在存儲數(shù)據(jù)的分區(qū)的磁盤可用空間限制朴沿。當可用磁盤空間低于此限制時瓶堕,會觸發(fā)流量控制。上面配置說明:當磁盤空間小于300MB時们妥,磁盤報警
配置環(huán)境變量
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插件實現(xiàn)延遲功能
下載插件
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集群節(jié)點操作
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文件內(nèi)容,確保內(nèi)容一致
恢復.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
查看集群狀態(tài)
rabbitmqctl cluster_status
======================================
子節(jié)點刪除
rabbitctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
在主節(jié)點上硬刪除子節(jié)點
rabbitmqctl forget_cluster_node node_name
======================================
RabbitMQ鏡像功能
rabbitmqctl set_policy ha-allqueue "^" '{"ha-mode":"all"}'
查看鏡像列表
rabbitmqctl list_policies