RabbitMQ Cluster安裝配置

永遠十八歲 2021-08-15 17:05:55 阅读数:536

本文一共[544]字,预计阅读时长:1分钟~
rabbitmq cluster 配置

RabbitMQ Cluster

一、安裝RabbitMQ

1. 安裝依賴

1.1安裝erlang

RabbitMQ version 最低版本 最高版本 Notes
3.8.9 -- 3.8.14 22.3 23.X 推薦使用23.x

/etc/yum.repos.d/目錄下新增erlang.repo文件,寫入以下內容:

[erlang]
name=erlang
baseurl=https://mirrors.tuna.tsinghua.edu.cn/erlang-solutions/centos/7/
enabled=1
gpgcheck=0
複制代碼

1.2 安裝其他依賴

yum install -y socat logrotate
複制代碼

2. 安裝rabbitmq-server

下載地址:github.com/rabbitmq/ra…

yum install -y ./rabbitmq-server-3.8.14-1.el7.noarch.rpm
複制代碼

3. 啟用rabbitmq_management插件

rabbitmq-plugins enable rabbitmq_management
複制代碼

查看啟用了哪些插件

rabbitmq-plugins list
複制代碼

E:手動啟用的插件

e:作為依賴被啟用的插件

為UI訪問創建用戶並授權

# 創建一個名為full_access的用戶,密碼為centos
rabbitmqctl add_user full_access [email protected]
# 給用戶授權
rabbitmqctl set_user_tags full_access administrator
複制代碼

瀏覽器訪問http://serverip:port

用戶名:full_access

密碼:centos

二、RabbitMQ配置

官方文檔:www.rabbitmq.com/configure.h…

1. 環境變量

主要用來定義配置文件路徑、網絡參數。路徑:/etc/rabbitmq/rabbitmq-env.conf

在涉及到路徑的配置中,應避免使用*?(類UNIX系統)

# Example rabbitmq-env.conf file entries. Note that the variables
# do not have the RABBITMQ_ prefix.
#
# Overrides node name
NODENAME[email protected]
# Specifies new style config file location
CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf
# Specifies advanced config file location
ADVANCED_CONFIG_FILE=/etc/rabbitmq/advanced.config
複制代碼

2. 配置文件

主要用來定義服務器各組件的權限、資源限制、插件及集群功能。

  • ini格式配置文件,通常命名為rabbitmq.conf
  • Erlang格式配置文件,通常命名為advanced.config
# ini格式配置文件
ssl_options.cacertfile = /path/to/ca_certificate.pem
ssl_options.certfile = /path/to/server_certificate.pem
ssl_options.keyfile = /path/to/server_key.pem
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = true
複制代碼
# erlang格式
[
{rabbit, [{ssl_options, [{cacertfile, "/path/to/ca_certificate.pem"},
{certfile, "/path/to/server_certificate.pem"},
{keyfile, "/path/to/server_key.pem"},
{verify, verify_peer},
{fail_if_no_peer_cert, true}]}]}
].
複制代碼
auth_mechanisms: 認證機制,SASL(簡單認證安全層)
default_user: 連接rabbitmq的默認用戶。默認guest
default_pass: 連接rabbitmq的默認用戶的密碼。默認guest
default_permissions: 用戶的默認權限。
disk_free_limit: 定義磁盤的最少預留空閑空間
heartbeat: broker與客戶端需要建立持久連接,定義消息時長。默認值580毫秒
log_levels: 日志級別,默認info{none|error|warning|info}
tcp_listeners: 監聽的地址和端口,默認5672
ssl_listeners: ssl通訊協議監聽的地址和端口,默認5672
vm_memory_high_watermark: 內存閾值,即定義空閑內存空間
vm_memory_high_watermark.absolute: 使用絕對值方式定義空閑內存空間
複制代碼

3. 運行時參數

官方文檔:www.rabbitmq.com/rabbitmqctl…

主要用來修改集群運行時的某些設定,使用rabbitmqctl命令

用法:

rabbitmqctl [--node <node>] [--timeout <timeout>] [--longnames] [--quiet] <command> [<command options>]
複制代碼

二、集群所需配置

注意事項:

  • 關閉防火牆、selinux
  • 時間同步
  • 添加域名解析(主機名要與解析名稱一致)
  • 各節點啟用rabbitmq_management插件
  • master節點複制/var/lib/rabbitmq/.erlang.cookie至其他節點
  • 若待加入集群的節點有數據或之前為其他集群中節點,需執行reset操作
  • 各從節點停止應用(rabbitmqctl stop_app) --> 加入集群(rabbitmqctl join_cluster [email protected]) --> 啟動應用(rabbitmqctl start_app)

1. 主機名解析

RabbitMQ集群中,各節點使用短域名或FQDN(全限定域名)相互尋址。

操作系統提供的方法:

  • DNS記錄
  • 本地host文件(/etc/hosts)

2. 確保以下端口可訪問

端口名 用途
5671 AMQP 0-9-1和 1.0客戶端使用(with TLS)
5672 AMQP 0-9-1和 1.0客戶端使用
15672 通過http://serverip:15672訪問RabbitMQ Web界面時使用
25672 集群中通信

3. 複制cookie文件

  • 節點及CLI工具使用cookie來確定是否允許彼此通信
  • 一串字母數字字符,最大長度255個字符
  • 文件默認路徑:/var/lib/rabbitmq/.erlang.cookie
  • 每個集群節點cookie必須相同
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
複制代碼

4.查看.erlang.cookie是否一致

[[email protected] ~]# cat /var/lib/rabbitmq/.erlang.cookie
YRWBUCFQJZJKGSCNEPAY
[[email protected] ~]# ssh [email protected] "cat /var/lib/rabbitmq/.erlang.cookie"
YRWBUCFQJZJKGSCNEPAY
複制代碼

5. rabbitmq-2加入集群

[[email protected] ~]# rabbitmqctl join_cluster [email protected]
Clustering node [email protected] with [email protected]
複制代碼

6.查看集群狀態

[[email protected] ~]# rabbitmqctl start_app
Starting node [email protected] ...
# 查看rabbitmq-1集群狀態
[[email protected] ~]# rabbitmqctl cluster_status
Cluster status of node [email protected] ...
Basics
Cluster name: [email protected] #集群名稱:[email protected]
 # 查看rabbitmq-2集群狀態
[[email protected] ~]# rabbitmqctl cluster_status
Cluster status of node [email protected] ...
Basics
Cluster name: [email protected] #集群名稱:[email protected]
複制代碼

6.1虛擬主機操作

rabbitmq-1上執行操作

[[email protected] ~]# rabbitmqctl add_vhost /myhost1
Adding vhost "/myhost1" ...
[[email protected] ~]# rabbitmqctl add_vhost /myhost2
Adding vhost "/myhost2" ...
[[email protected] ~]# rabbitmqctl list_vhosts
Listing vhosts ...
name
/myhost1
/myhost2
/
複制代碼

rabbitmq-2上查看

[[email protected] ~]# rabbitmqctl list_vhosts
Listing vhosts ...
name
/myhost1
/myhost2
/
複制代碼

三、集群操作

join_cluster <clusternode> [--ram] #加入集群
cluster_status #集群狀態
change_cluster_node_type disc | ram #改變集群節點狀態
forget_cluster_node [--offline] #删除集群節點(先停再删除)
update_cluster_nodes clusternode #
複制代碼

四、單機配置

修改日志、數據存儲目錄

4.1 創建相關目錄並賦權

mkdir -pv /data/rabbitmq/{data,log}
chown -R rabbitmq.rabbitmq /data/rabbitmq/
複制代碼

4.2 編輯配置文件

編輯/etc/rabbitmq/rabbitmq-env.conf,添加以下內容:

RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
RABBITMQ_LOG_BASE=/data/rabbitmq/log
複制代碼

注:修改配置文件後,需手動遷移原數據至新目錄。或重新執行各種創建命令。

版权声明:本文为[永遠十八歲]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815170542657U.html