文章目錄
- 安裝RabbitMQ
- 安裝el環境
- 安裝RabbitMQ
- 啟動RabbitMQ
- 啟動RabbitMQ管理界面
- 宿主機連接RabbitMQ管理界面
- RabbitMQ集群
- 普通模式
- 鏡像模式
安裝RabbitMQ
安裝el環境
RabbitMQ運行在el環境,所以安裝RabbitMQ之前必須安裝el環境并且版本一定要對應,不能安裝低版本的,使用百度云下好,再使用Xshell傳入虛擬機
鏈接:https://pan.baidu.com/s/1tduTfuTbGZQrzafi95MLBA
提取碼:szn7
下載得到otp_src_24.2.2.tar.gz
使用Xshell將otp_src_24.2.2.tar.gz傳入虛擬機,使用Xshell的sftp協議,主機ip是在命令列輸入ifconfig中ens33中的ip地址,第一次需要輸入虛擬機登錄賬戶root和密碼

如果沒有出現ens33,則有兩種可能
- /etc/sysconfig/network-scripts目錄下的ifcfg-ens33檔案的ONBOOT=no,應該改為ONBOOT=yes
- 使用VMWare虛擬機時沒有開啟它的網路服務,如下,打開任務管理器里面的服務找到這幾個打開就是了,DHCP動態主機配置協議用于分配IP地址,NAT網路地址轉換協議用于轉換內網和外網

第二天打開電腦虛擬機出現網路問題,如DNS域名決議不了,很可能就是重啟后這些服務又關閉了
安裝依賴,解壓并安裝erl,make & make install 可能報點小錯,但是無關緊要,xshell一半傳遞檔案到/root目錄(使用root用戶賬號密碼在Xshell上連接虛擬機時),反正一般 cd ~ 即可找到
cd ~
yum install -y gcc gcc-c++ unixODBC-devel openssl-devel ncurses-devel
tar -zxvf otp_src_24.2.2.tar.gz
mv otp_src_24.2.2 /opt/erlang
cd /opt/erlang
./configure --prefix=/opt/erlang/ --with-ssl --enable-hipe --enable-threads --enable-smp-support --enable-kernel-poll --without-javac
make & make install
配置環境變數
vim /etc/profile
添加如下配置,記得是添加,而不是覆寫,如果組態檔里面有export PATH這一行,只需在后面加上 :/opt/erlang/bin ,記住前面有個冒號,一般這行可能有配置的jdk所以在最后添加就行,如果沒有export PATH這一行則直接添加到檔案末尾就行
export PATH=$PATH:/opt/erlang/bin
運行如下命令讓配置生效
source /etc/profile
查看是否安裝成功
erl -version
出現如下情況則安裝成功

安裝RabbitMQ
進入網址
https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.9.13

下載得到rabbitmq-server-3.9.13-1.el7.noarch.rpm
使用Xshell將rabbitmq-server-3.9.13-1.el7.noarch.rpm傳入虛擬機,然后執行如下命令
rpm -import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
rpm -Uvh --nodeps rabbitmq-server-3.9.13-1.el7.noarch.rpm
啟動RabbitMQ
systemctl start rabbitmq-server
出現如下情況

輸入journalctl -xe,出現如下情況,可以看到/usr/lib/rabbitmq/bin/rabbitmq-server的檔案下找不到erl環境,而且是在73行,所以我們只需加上環境變數即可

輸入vi后輸入:73可以快速定位到73行
vi /usr/lib/rabbitmq/bin/rabbitmq-server
:73
加入如下兩行代碼,不要覆寫任何東西
ERLANG_HOME=/usr/local/erlang
export PATH=$PATH:/opt/erlang/bin
加入完后重新啟動,并查看狀態
systemctl start rabbitmq-server
systemctl status rabbitmq-server
出現如下情況表示運行成功

啟動RabbitMQ管理界面
防火墻開放埠5672/tcp和15672/tcp,方便宿主機連接管理界面
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
啟動RabbitMQ管理界面
/usr/sbin/rabbitmq-plugins enable rabbitmq_management
出現如下情況則啟動成功

宿主機連接RabbitMQ管理界面
ifconfig 獲取局域網IP
ifconfig
出現了ens33,則里面的ip 192.168.15.137就是我們要找的ip

在宿主機瀏覽器輸入http://192.168.15.137:15672/,出現如下界面即成功了,默認用戶為guest,密碼也為guest

出現了如下情況,因為默認RabbitMQ只能在本機登錄

我們可以使用rabbitmqctl添加新的用戶,賦予其更高的權限,讓其可以讓外部訪問
/usr/sbin/rabbitmqctl add_user root 123456
/usr/sbin/rabbitmqctl set_user_tags root administrator
/usr/sbin/rabbitmqctl list_users
出現如下情況,我們就成功的添加了用戶并設定了權限

重新在管理頁面輸入賬號root ,密碼 123456,可以看到如下,說明我們登錄成功

RabbitMQ集群
我們使用兩臺虛擬機,分別執行上面步驟,安裝好RabbitMQ之后,再實作集群功能,使用ifconfig,分別查看兩個虛擬機的enss33里面的ip,我的虛擬機ip為192.168.15.137和 192.168.15.141
普通模式
集群中訊息只存在其中一個節點,如果客戶端訪問另一個節點,則該節點需要臨時從存放訊息的那個節點拉取訊息并回傳給客戶端
先禁用防火墻,在兩個虛擬機中運行
systemctl stop firewalld
修改erlang.cookie,將兩臺虛擬機中的該檔案中的內容設為一樣,如NUFVTUNGSGOXLXKMTYYZ
vi /var/lib/rabbitmq/.erlang.cookie
修改兩個虛擬機的節點名稱
vi /etc/rabbitmq/rabbitmq-env.conf
192.168.15.137
NODENAME=rabbit@server1
192.168.15.141
NODENAME=rabbit@server2
修改DNS域名映射,在兩臺虛擬機中都要修改,這里的server1和server2在加入集群需要使用到
vi /etc/hosts
192.168.15.137 server1
192.168.15.141 server2
重啟rocketmq服務,在兩臺虛擬機中運行
systemctl restart rabbitmq-server
systemctl status rabbitmq-server
在192.168.15.137虛擬機下運行,server2就是上面配置的host主機名
/usr/sbin/rabbitmqctl stop_app
/usr/sbin/rabbitmqctl join_cluster --ram rabbit@server2
/usr/sbin/rabbitmqctl start_app
/usr/sbin/rabbitmqctl cluster_status
如果上面rabbitmqctl join_cluster運行不了,可以反向操作,博主就是反向操作才連接成功,不過只有啟動192.168.15.141下的管理界面才能看到
在192.168.15.141虛擬機下運行,server1就是上面配置的host主機名
/usr/sbin/rabbitmqctl stop_app
/usr/sbin/rabbitmqctl join_cluster --ram rabbit@server1
/usr/sbin/rabbitmqctl start_app
/usr/sbin/rabbitmqctl cluster_status
如下,沒有報錯則運行成功,只有一行運行結果

啟動192.168.15.141管理界面并輸入http://192.168.15.141:15672地址出現如下情況則搭建成功,可以看到我們有兩個節點,且默認是訊息異步復制

鏡像模式
集群中訊息存放在每個節點,客戶端訪問每個節點都能拿到訊息,其實鏡像模式和普通模式的區別,也就是鏡像模式會同步將訊息復制到各個節點,而普通模式是異步將訊息復制到各個節點
在192.168.15.141虛擬機(看上面加入集群陳述句是誰運行成功,如果在192.168.15.137運行成功,則以下陳述句依然在192.168.15.137運行)下運行,配置兩個主機同步復制,即變為鏡像模式,
/usr/sbin/rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
出現如下,則設定策略成功,將異步復制設定為同步復制,"^"表示匹配任意佇列,即任意佇列的資料都同步復制到所有節點

| 策略 | 意義 |
|---|---|
| ha-all | 所有節點同步復制 |
| ha-two | 兩個節點同步復制 |
| ha-node | 給定個節點同步復制 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/433337.html
標籤:其他
上一篇:Redis與Kafka達成高并發更新庫存與資料一致性保證
下一篇:mac安裝最新Kafka3.0
