入門安裝及解除安裝
01、概述
官網:https://www.rabbitmq.com/
什麼是RabbitMQ,官方給出來這樣的解釋:
RabbitMQ is the most widely deployed open source message broker.
With tens of thousands of users, RabbitMQ is one of the most popular open source message brokers. From T-Mobile to Runtastic, RabbitMQ is used worldwide at small startups and large enterprises.
RabbitMQ is lightweight and easy to deploy on premises and in the cloud. It supports multiple messaging protocols. RabbitMQ can be deployed in distributed and federated configurations to meet high-scale, high-availability requirements.
RabbitMQ runs on many operating systems and cloud environments, and provides a wide range of developer tools for most popular languages.
翻譯以後:
RabbitMQ是部署最廣泛的開源消息代理。
RabbitMQ擁有成千上萬的使用者,是最受歡迎的開源消息代理之一。從T-Mobile 到Runtastic,RabbitMQ在全球範圍内的小型初創企業和大型企業中都得到使用。
RabbitMQ輕巧,易于在内部和雲中部署。它支援多種消息傳遞協定。RabbitMQ可以部署在分布式和聯合配置中,以滿足大規模,高可用性的要求。
RabbitMQ可在許多作業系統和雲環境上運作,并為大多數流行語言提供了廣泛的開發人員工具。
簡單概述:
RabbitMQ是一個開源的遵循AMQP協定實作的基于Erlang語言編寫,支援多種用戶端(語言)。用于在分布式系統中存儲消息,轉發消息,具有高可用,高可擴性,易用性等特征。
02、安裝RabbitMQ
1:下載下傳位址:https://www.rabbitmq.com/download.html
2:環境準備:CentOS7.x+ / Erlang
RabbitMQ是采用Erlang語言開發的,是以系統環境必須提供Erlang環境,第一步就是安裝Erlang。
erlang和RabbitMQ版本的按照比較: https://www.rabbitmq.com/which-erlang.html
03、 Erlang安裝
檢視系統版本号
[[email protected] ~]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarchDistributor ID: CentOSDescription: CentOS Linux release 8.3.2011Release: 8.3.2011Codename: n/a
3-1:安裝下載下傳
參考位址:https://www.erlang-solutions.com/downloads/
[[email protected] ~]# mkdir -p /usr/rabbitmq
[[email protected] ~]# cd /usr/
[[email protected] usr]# cd rabbitmq/
[[email protected] rabbitmq]# ls
erlang-22.0.7-1.el7.x86_64.rpm rabbitmq-server-3.8.6-1.el7.noarch.rpm
[[email protected] rabbitmq]# yum -y install erlang-22.0.7-1.el7.x86_64.rpm
Loaded plugins: fastestmirror
Examining erlang-22.0.7-1.el7.x86_64.rpm: erlang-22.0.7-1.el7.x86_64
Marking erlang-22.0.7-1.el7.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package erlang.x86_64 0:22.0.7-1.el7 will be installed
--> Finished Dependency Resolution
.............................
3-2:安裝成功
erl -v
[[email protected] rabbitmq]# erl
Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
Eshell V10.4.4 (abort with ^G)
1>
05、安裝rabbitmq
下載下傳位址:https://www.rabbitmq.com/download.html
5-1:安裝MQ
yum -y install rabbitmq-server-3.8.6-1.el7.noarch.rpm
[[email protected] rabbitmq]# yum -y install rabbitmq-server-3.8.6-1.el7.noarch.rpm
Loaded plugins: fastestmirror
Examining rabbitmq-server-3.8.6-1.el7.noarch.rpm: rabbitmq-server-3.8.6-1.el7.noarch
Marking rabbitmq-server-3.8.6-1.el7.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package rabbitmq-server.noarch 0:3.8.6-1.el7 will be installed
--> Finished Dependency Resolution
……………………………………………………………………………………………………………………………………………………
5-2:啟動rabbitmq服務
# 啟動服務> systemctl start rabbitmq-server
# 檢視服務狀态> systemctl status rabbitmq-server
# 停止服務> systemctl stop rabbitmq-server
# 開機啟動服務> systemctl enable rabbitmq-server
[[email protected] rabbitmq]# systemctl start rabbitmq-server # 啟動服務
[[email protected] rabbitmq]# systemctl status rabbitmq-server #檢視服務狀态active (running)表示成功
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2022-11-01 23:10:14 CST; 29s ago
Main PID: 24967 (beam.smp)
Status: "Initialized"
CGroup: /system.slice/rabbitmq-server.service
├─24967 /usr/lib64/erlang/erts-12.3.2.1/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -...
├─24982 erl_child_setup 32768
├─25007 /usr/lib64/erlang/erts-12.3.2.1/bin/epmd -daemon
├─25027 inet_gethost 4
└─25028 inet_gethost 4
Nov 01 23:10:10 aoyuehan rabbitmq-server[24967]: ########## Licensed under the MPL 2.0. Website: https://rabbitmq.com
Nov 01 23:10:10 aoyuehan rabbitmq-server[24967]: Doc guides: https://rabbitmq.com/documentation.html
……………………………………………………………………………………………………………………………………………………
[[email protected] rabbitmq]# systemctl enable rabbitmq-server # 開機啟動服務
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service
[[email protected] rabbitmq]# systemctl stop rabbitmq-server # 停止服務
[[email protected] rabbitmq]# systemctl restart rabbitmq-server # 重新開機服務
06、RabbitMQ的配置
RabbitMQ預設情況下有一個配置檔案,定義了RabbitMQ的相關配置資訊,預設情況下能夠滿足日常的開發需求。如果需要修改需要,需要自己建立一個配置檔案進行覆寫。
參考官網:
1:https://www.rabbitmq.com/documentation.html
2:https://www.rabbitmq.com/configure.html
3:https://www.rabbitmq.com/configure.html#config-items
4:https://github.com/rabbitmq/rabbitmq-server/blob/add-debug-messages-to-quorum_queue_SUITE/docs/rabbitmq.conf.example
06-1、相關端口
5672:RabbitMQ的通訊端口
25672:RabbitMQ的節點間的CLI通訊端口是
15672:RabbitMQ HTTP_API的端口,管理者使用者才能通路,用于管理RabbitMQ,需要啟動Management插件。
1883,8883:MQTT插件啟動時的端口。
61613、61614:STOMP用戶端插件啟用的時候的端口。
15674、15675:基于webscoket的STOMP端口和MOTT端口
一定要注意:RabbitMQ 在安裝完畢以後,會綁定一些端口,如果你購買的是阿裡雲或者騰訊雲相關的伺服器一定要在安全組中把對應的端口添加到防火牆。
07、解除安裝
1)、删除rabbitmq:
--解除安裝
--停止服務
rabbitmqctl app_stop
yum list | grep rabbitmq
yum -y remove rabbitmq-server.noarch
2)删除erlang:
yum list | grep erlang
yum remove erlang-*.x86_64
yum remove erlang.x86_64
(3) 删除lib檔案:
[[email protected] ~]# rm -rf /usr/lib64/erlang
[[email protected] ~]# rm -rf /var/lib/rabbitmq
08、相關安裝包
參考連結:阿裡雲伺服器安裝RabbitMQ(親測有效)_Victor_study的部落格-CSDN部落格_雲伺服器安裝rabbitmq
雲伺服器ECS部署和解除安裝RabbitMQ - Jerry不識人間煙火 - 部落格園 (cnblogs.com)
RabbitMQWeb管理界面及授權操作
01、RabbitMQ管理界面
01-1:預設情況下,rabbitmq是沒有安裝web端的用戶端插件,需要安裝才可以生效
# rabbitmq-plugins enable rabbitmq_management
[[email protected] rabbitmq]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node [email protected]:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to [email protected]...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
set 3 plugins.
Offline change; changes will take effect at broker restart.
說明:rabbitmq有一個預設賬号和密碼是: guest
預設情況隻能在localhost本機下通路,是以需要添加一個遠端登入的使用者。
一定要記住,在對應伺服器(阿裡雲,騰訊雲等)的安全組中開放 15672
的端口。
01-2:在浏覽器通路
http://ip:15672/ 如下:
02、授權賬号和密碼
2-1:新增使用者
# rabbitmqctl add_user admin 123456
[[email protected] rabbitmq]# rabbitmqctl add_user admin admin
Adding user "admin" ...
2-2:設定使用者配置設定操作權限
# rabbitmqctl set_user_tags admin administrator
[[email protected] rabbitmq]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
使用者級别:
- 1、administrator 可以登入控制台、檢視所有資訊、可以對rabbitmq進行管理
- 2、monitoring 監控者 登入控制台,檢視所有資訊
- 3、policymaker 政策制定者 登入控制台,指定政策
- 4、managment 普通管理者 登入控制台
2-3:為使用者添加資源權限
# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
[[email protected] rabbitmq]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "/" ...
2-4:檢視使用者清單
[[email protected] rabbitmq]# rabbitmqctl list_users
Listing users ...
user tags
admin [administrator]
guest [administrator] # 隻限于本機通路
小結:
rabbitmqctl add_user 賬号 密碼 # 添加使用者及密碼
rabbitmqctl set_user_tags 賬号 administrator # 設定使用者權限為administrator
rabbitmqctl change_password Username Newpassword # 修改密碼
rabbitmqctl delete_user Username # 删除使用者
rabbitmqctl list_users # 檢視使用者清單
rabbitmqctl set_permissions -p / 使用者名 ".*" ".*" ".*" # 為使用者設定administrator角色
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
RabbitMQ之Docker安裝
01、Docker安裝RabbitMQ
1-1、虛拟化容器技術—Docker的安裝
基于 CentOS 7 安裝
- 官網安裝參考手冊:https://docs.docker.com/install/linux/docker-ce/centos/
- 确定你是CentOS7及以上版本
[[email protected] Desktop]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
- yum安裝gcc相關(需要確定 虛拟機可以上外網 )
yum -y install gcc yum -y install gcc-c++
- 解除安裝舊版本
yum -y remove docker docker-common docker-selinux docker-engine # 官網版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
- 安裝需要的軟體包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 設定stable鏡像倉庫
# 錯誤 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo ## 報錯 [Errno 14] curl#35 - TCP connection reset by peer [Errno 12] curl#35 - Timeout # 正确推薦使用國内的 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新yum軟體包索引
yum makecache fast
- 安裝Docker CE
yum -y install docker-ce docker-ce-cli containerd.io
- 啟動docker
systemctl start docker
- 測試
docker version docker run hello-world # docker images [[email protected] rabbitmq]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 13 months ago 13.3kB
1-2、docker的相關指令
# 啟動docker:systemctl start docker
# 停止docker:systemctl stop docker
# 重新開機docker:systemctl restart docker
# 檢視docker狀态:systemctl status docker
# 開機啟動: systemctl enable dockersystemctl unenable docker
# 檢視docker概要資訊docker info
# 檢視docker幫助文檔docker --help
1-3、安裝rabbitmq
參考網站:
1:https://www.rabbitmq.com/download.html
2:https://registry.hub.docker.com/_/rabbitmq/
1-4、擷取rabbit鏡像:
# 可以不用先拉取
docker pull rabbitmq:management
1-5、建立并運作容器
# 不建議,這樣需要去docker中配置設定權限
docker run -di --name=myrabbit -p 15672:15672 rabbitmq:management
—hostname:指定容器主機名稱
—name:指定容器名稱
-p:将mq端口号映射到本地
或者運作時設定使用者和密碼
# 拉取鏡像,不存在會在遠端倉庫下載下傳
# 會自動配置設定權限
# 建立使用者為admin 密碼為123456 也會自動開啟一些端口(前提阿裡雲端口要加入安全組)
[[email protected] rabbitmq]# docker run -di --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management
Unable to find image 'rabbitmq:management' locally
management: Pulling from library/rabbitmq
eaead16dc43b: Pull complete
d5e775568c00: Pull complete
9300f4c930ff: Pull complete
c408cd7bb376: Pull complete
.....................................
檢視鏡像
[[email protected] rabbitmq]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7a379664209 rabbitmq:management "docker-entrypoint.s…" About a minute ago Created myrabbit
829448011ef0 hello-world "/hello" 16 minutes ago Exited (0) 16 minutes ago busy_pare
[[email protected] rabbitmq]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rabbitmq management 031f07386589 8 days ago 263MB
hello-world latest feb5d9fea6a5 13 months ago 13.3kB
從docker中開啟rabbitmq
[[email protected] rabbitmq]# docker start d7a379664209
Error response from daemon: driver failed programming external connectivity on endpoint myrabbit (7125692ae74c7e40e46f76d87364d4a39d5b1c9bcd134aa38e79fb8adb30efb5): Error starting userland proxy: listen tcp4 0.0.0.0:25672: bind: address already in use
Error: failed to start containers: d7a379664209 # 由于之前手動安裝了rabbitmq
# 檢視rabbitmq狀态
[[email protected] rabbitmq]# systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2022-11-03 00:18:11 CST; 45min ago
Main PID: 18469 (beam.smp)
Status: "Initialized"
Tasks: 84
Memory: 3.6M
CGroup: /system.slice/rabbi
...................................
# 停掉之前的rabbitmq
[[email protected] rabbitmq]# systemctl stop rabbitmq-server
[[email protected] rabbitmq]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7a379664209 rabbitmq:management "docker-entrypoint.s…" 5 minutes ago Created myrabbit
829448011ef0 hello-world "/hello" 20 minutes ago Exited (0) 20 minutes ago busy_pare
[[email protected] rabbitmq]# docker start d7a379664209 在容器中開啟rabbitmq
d7a379664209
[[email protected] rabbitmq]# docker stop d7a379664209 # 在容器中停掉rabbitmq
d7a379664209
檢視日志
docker logs -f myrabbit
1-6、容器運作正常
使用
http://你的IP位址:15672
通路rabbit控制台
02、額外Linux相關排查指令
> more xxx.log 檢視日記資訊
> netstat -naop | grep 5672 檢視端口是否被占用
> ps -ef | grep 5672 檢視程序
> systemctl stop 服務