1.簡介
在來學習RabbitMQ時候,我覺得很有必要先把它的環境先搭建起來,這樣后面的示例才能進行。因為之前自己手動在Linux服務器上搭建過Elasticsearch,當時踩過太多坑了,浪費太多時間在這事情上,后面發現在Docker上安裝部署方便快捷,不需要額外安裝Erlang,所以寫該篇文章先來介紹如何在Docker上部署RabbitMQ。
2. 安裝Docker Engine-Community
使用Docker倉庫進行安裝,在新主機上首次安裝Docker Engine-Community之前,需要設置Docker倉庫。之后,您可以從倉庫安裝和更新Docker。
2.1設置倉庫
安裝所需的軟件包。yum-utils提供了yum-config-manager,並且device mapper存儲驅動程序需要device-mapper-persistent-data和lvm2。
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
or
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
使用以下命令來設置穩定的倉庫(一般不建議使用官方源地址,因為訪問國外的站點比較慢,最好訪問國內的源地址,例如阿里雲):
$ sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
or
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.2安裝Docker Engine-Community
安裝最新版本的Docker Engine-Community和containerd,或者轉到下一步安裝特定版本:
sudo yum install docker-ce docker-ce-cli containerd.io
2.3查看Docker版本
docker version
查看Docker版本時候,發覺Docker並沒有啟動,所以接下來要啟動Docker。
2.4啟動Docker
systemctl start docker
2.5通過運行hello-world映像來驗證是否正確安裝了Docker Engine-Community(當運行容器時,使用的鏡像如果在本地中不存在,就會自動從docker鏡像倉庫中下載,默認是從Docker Hub公共鏡像源下載)
docker run hello-world
2.6查看鏡像
docker images
由此可見,docker下載安裝成功!
3. Docker安裝RabbitMQ
可以自行進入docker hub鏡像倉庫地址(https://hub.docker.com)查看rabbitmq類型的鏡像。
3.1拉取rabbitmq鏡像
docker pull rabbitmq
3.2查看鏡像
拉取rabbitmq鏡像成功!
3.3啟動RabbitMQ Web界面
docker restart rabbitmq(REPOSITORY,容器名稱)
docker restart 76615d52df27(CONTAINER ID,容器ID)
設置rabbitmq用戶名和密碼並啟動主要有兩種方式:
●默認guest 用戶,密碼guest:
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
●設置新用戶名和密碼:
docker run -d --hostname my-rabbit --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=qwer1234 -p 15672:15672 -p 5672:5672 rabbitmq:management
-d:后台運行容器。 --name:指定容器名。 -p:指定服務運行的端口(5672:應用訪問端口;15672:控制台Web端口號)。 -v:映射目錄或文件。 --hostname:主機名(RabbitMQ的一個重要注意事項是它根據所謂的“節點名稱”存儲數據,默認為主機名)。 -e:指定環境變量(RABBITMQ_DEFAULT_VHOST:默認虛擬機名;RABBITMQ_DEFAULT_USER:默認的用戶名;RABBITMQ_DEFAULT_PASS:默認用戶名的密碼)。
●啟動rabbitmq_management腳本命令如下:
docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management
注意:rabbitmq為鏡像名稱。
3.4開啟防火牆15672端口
firewall-cmd --zone=public --add-port=15672/tcp --permanent firewall-cmd --reload --查看是否開通訪問權限 firewall-cmd --permanent --zone=public --query-port=15672/tcp
注:如果是阿里雲等服務器,則需要配置RabbitMQ安全組策略
登錄阿里雲->安全組規則->訪問規則->入方向->手動添加如下策略:
3.5查看正在運行容器
docker ps -a
3.6 rabbitmqctl用戶命令使用
當你使用rabbitmqctl用戶命令時有如下提示:
rabbitmqctl: command not found
則是因為rabbitmqctl沒有進行軟連接,需要進入到rabbitmqctl的sbin目錄下執行rabbitmqctl命令才有用。假設我要修改admin用戶密碼,需要找到rabbitmqctl的sbin目錄並切換才能執行命令,如果不清楚目錄在哪里,可以通過find命令查找:
find / -name "rabbitmqctl*"
3.6.1用戶相關命令
●查看用戶列表
rabbitmqctl list_users
●增加用戶
rabbitmqctl add_user username 'password'
●設置角色
rabbitmqctl set_user_tags username administrator
●修改用戶密碼
rabbitmqctl change_password username 'newpasswd'
●刪除用戶
rabbitmqctl delete_user username
●用戶賦權(使用戶user1具有vhost1這個virtual host中所有資源的配置、寫、讀權限以便管理其中的資源)
rabbitmqctl set_permissions -p vhost1 username '.*' '.*' '.*'
●查看權限
rabbitmqctl list_user_permissions username
●查看vhost1中權限
rabbitmqctl list_permissions -p vhost1
●清除權限
rabbitmqctl clear_permissions [-p VHostPath] username
3.6 Docker重啟RabbitMQ
●查看正在運行容器:
docker ps -a
●停止運行rabbitmq容器:
docker stop 9f1fb347efc2 (CONTAINER ID)
●刪除rabbitmq容器:
docker rm 9f1fb347efc2(CONTAINER ID)
●再執行3.3小節rabbitmq啟動命令