Linux下安裝RabbitMQ

RabbiTMQ概述html

  RabbitMQ輕量級,易於在內部和雲中部署。它支持多種消息傳遞協議。RabbitMQ能夠部署在分佈式和聯合配置中,以知足高規模,高可用性要求。node

  RabbitMQ可在許多操做系統和雲環境中運行,併爲大多數流行語言提供各類開發人員工具。linux

  RabbitMQ是一個在AMQP基礎上完成的,可複用的企業消息系統。它是由Erlang語言開發。shell

  AMQP:Advanced Message Queue,高級消息隊列協議。他是應用層協議的一個開放標準,爲面向消息的中間件設計,基於此協議的客戶端與消息中間件可傳遞消息,並不受產品、開發語言等條件的限制。vim

 1 RabbitMQ 最初起源於金融系統,用於在分佈式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面表現不俗。具體特色包括:<!--more-->
 2 
 3 可靠性(Reliability):RabbitMQ使用一些機制來保證可靠性,如持久化、傳輸確認、發佈確認。
 4 靈活的路由(Flexible Routing):在消息進入隊列以前,經過 Exchange 來路由消息的。
 5 消息集羣(Clustering):多個 RabbitMQ 服務器能夠組成一個集羣,造成一個邏輯 Broker 。
 6 高可用(Highly Available Queues):隊列能夠在集羣中的機器上進行鏡像,使得在部分節點出問題的狀況下隊列仍然可用。
 7 多種協議(Multi-protocol):RabbitMQ支持多種消息隊列協議,好比STOMP、MQTT等。
 8 多語言客戶端(Many Clients):RabbitMQ 幾乎支持全部經常使用語言,好比 Java、.NET、Ruby 等。
 9 管理界面(Management UI):RabbitMQ 提供了一個易用的用戶界面,使得用戶能夠監控和管理消息 Broker 的許多方面。
10 跟蹤機制(Tracing):若是消息異常,RabbitMQ 提供了消息跟蹤機制,使用者能夠找出發生了什麼。
11 插件機制(Plugin System):RabbitMQ 提供了許多插件,來從多方面進行擴展,也能夠編寫本身的插件。

經常使用術語安全

 1 Broker:消息隊列服務器的實體,是一箇中間件應用,負責接收消息生產者的消息,而後將消息發送至消息接收者或其餘的Braker
 2 Exchange:消息交換機,是消息第一個到達的地方,消息經過它指定的路由規則,分發到不一樣的消息隊列中去。
 3 Queue:消息隊列,消息經過發送和路由以後最終達到的地方,到達Queue的消息即進入邏輯上等待消費的狀態。每一個消息都會被髮送到一個或多個隊列。
 4 Binding:綁定,它的做用就是把Exchange和Queue按照路由規則綁定起來,也就是Exchange和Queue之間的虛擬連接。
 5 Routing Key:路由關鍵字,Exchange根據這個關鍵字進行消息投遞。
 6 Virtual host:虛擬主機,是對Broker的虛擬劃分,將消費者、生產者和它們依賴的AMQP相關結構進行隔離,通常都是爲了安全考慮。好比:咱們能夠在一個Broker中設置多個虛擬主機,對不一樣用戶進行權限的分離。
 7 Connection:鏈接。表明生產者、消費者、Broker之間進行通訊的物理網絡。
 8 Channel:消息通道,用於鏈接生產者和消費者的邏輯結構。在客戶端每一個鏈接裏,可創建多個Channel,每一個Channel表明一個會話任務,經過Channel能夠隔離同一個鏈接中的不一樣交互內容。
 9 Producer:消息生產者。
10 Consumer:消息消費者。

安裝地址服務器

RabbitMQ安裝地址網絡

1 wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2.zip 

因爲RabbitMQ是erlang語言開發的因此依賴erlang語言環境先安裝erlangapp

注意這裏看下erlang語言兼容RabbitMQ版本系列官方有說明https://www.rabbitmq.com/download.htmlssh

1 http://www.erlang.org/downloads 

我這裏是安裝的18.3版本的根據你要安裝的rabbitmq版本作選擇

1 wget http://erlang.org/download/otp_src_18.3.tar.gz

 解壓

1 tar -xzvf otp_src_18.3.tar.gz
2 cd /opt/otp_src_18.3

建立安裝目錄

1 mkdir /opt/erlang183

配置安裝路徑

1 ./configure --prefix=/opt/erlang183

編譯安裝

1 make && make install

配置環境變量

1 vim /etc/profile
2 添加路徑/opt/erlang183/bin 

使得文件生效

1 source  /etc/profile

驗證是否erlang安裝成功

 RabbitMQ安裝

下載包

1 wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2.zip

下載完成須要轉換成tar文件

1 xz -d rabbitmq-server-generic-unix-3.6.2.tar.xz 

解壓

1 tar -xvf rabbitmq-server-generic-unix-3.6.2.tar

添加環境變量

1 vim /etc/profile
2 把路徑添加進去/opt/rabbitmq362/sbin
3 並生效 source /etc/profile 

啓動與關閉服務查看狀態

1 進入sbin 啓動服務:./rabbitmq-server -detached
2 查看服務狀態:./rabbitmqctl status
3 關閉服務:./rabbitmqctl stop 

常規命令

 1 #啓動服務
 2 rabbitmq-server -detached 
 3 
 4 #查看幫助
 5 man rabbitmq-server
 6 參數解釋:
 7 OPTIONS
 8        -detached    後臺運行
 9            Start the server process in the background. Note that this will cause the pid
10            not to be written to the pid file.
11 
12 rabbitmqctl status #查看rabbitmq狀態
13 
14 #建立rabbitmq登陸用戶
15 添加用戶
16 rabbitmqctl add_user [username] [password]
17 添加權限
18 rabbitmqctl set_permissions -p "/" [username] ".*" ".*" ".*"
19 修改用戶角色
20 rabbitmqctl set_user_tags [username] administrator

配置網頁插件

1 RabbitMQ網頁管理的端口是15672,可是如今還不能訪問,須要添加網頁插件才能訪問
2 rabbitmq-plugins enable rabbitmq_management

在此能夠查看端口狀態

1 netstat -tunlp

 

[root@localhost sbin]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp 0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      53825/beam.smp      
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp 0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      52011/epmd          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6621/sshd           
tcp 0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      53825/beam.smp      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      6822/master         
tcp6 0      0 :::5672                 :::*                    LISTEN      53825/beam.smp      
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6 0      0 :::4369                 :::*                    LISTEN      52011/epmd          
tcp6       0      0 :::22                   :::*                    LISTEN      6621/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      6822/master         
udp        0      0 0.0.0.0:68              0.0.0.0:*                           6410/dhclient       
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd           
udp        0      0 0.0.0.0:915             0.0.0.0:*                           6259/rpcbind        
udp6       0      0 :::111                  :::*                                1/systemd           
udp6       0      0 :::915                  :::*                                6259/rpcbind    

端口信息

 1 (epmd), 25672 (Erlang distribution)
 2 
 3 Epmd 是 Erlang Port Mapper Daemon 的縮寫,在 Erlang 集羣中至關於 dns 的做用,綁定在4369端口上。
 4 
 5 5672, 5671 (AMQP 0-9-1 without and with TLS)
 6 
 7 AMQP 是 Advanced Message Queuing Protocol 的縮寫,一個提供統一消息服務的應用層標準高級消息隊列協議,是應用層協議的一個開放標準,專爲面向消息的中間件設計。
 8 基於此協議的客戶端與消息中間件之間能夠傳遞消息,並不受客戶端/中間件不一樣產品、不一樣的開發語言等條件的限制。Erlang 中的實現有 RabbitMQ 等。
 9 (if management plugin is enabled)
10 
11 經過 http://serverip:15672 訪問 RabbitMQ 的 Web 管理界面,默認用戶名密碼都是 guest。(注意:RabbitMQ 3.0以前的版本默認端口是55672,下同)
12 
13 61613, 61614 (if STOMP is enabled)
14 
15 Stomp 是一個簡單的消息文本協議,它的設計核心理念就是簡單與可用性,官方文檔,實踐一下 Stomp 協議須要:
16 
17 一個支持 stomp 消息協議的 messaging server (譬如activemq,rabbitmq);
18 一個終端(譬如linux shell);
19 一些基本命令與操做(譬如nc,telnet)
20 1883, 8883 (if MQTT is enabled)
21 MQTT 只是 IBM 推出的一個消息協議,基於 TCP/IP 的。兩個 App 端發送和接收消息須要中間人,這個中間人就是消息服務器(好比ActiveMQ/RabbitMQ),三者通訊協議就是 MQTT 

建立用戶登陸默認有個guest處於安全考慮只能在本地登陸

1 rabbitmqctl add_user admin admin123456

修改角色權限

1 rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

設置標籤

1 rabbitmqctl set_user_tags admin administrator 

查看用戶訪問

1 rabbitmqctl list_permissions -p /
[root@localhost sbin]# rabbitmqctl list_permissions -p /
Listing permissions in vhost "/" ...
guest    .*    .*    .*
admin    .*    .*    .*

登陸Web界面

常規命令

 1 rabbitmqctl status
 2 
 3 rabbitmqctl stop
 4 
 5 rabbitmqctl list_users  
 6 
 7 rabbitmqctl list_user_permissions guest
 8 
 9 rabbitmqctl add_user admin 123456
10 
11 rabbitmqctl set_user_tags admin administrator 
12 
13 rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" 

rabbitmq-plugins命令

 rabbitmqctl命令

 1 Commands:
 2     stop [<pid_file>]
 3     stop_app
 4     start_app
 5     wait <pid_file>
 6     reset
 7     force_reset
 8     rotate_logs <suffix>
 9 
10     join_cluster <clusternode> [--ram]
11     cluster_status
12     change_cluster_node_type disc | ram
13     forget_cluster_node [--offline]
14     rename_cluster_node oldnode1 newnode1 [oldnode2] [newnode2 ...]
15     update_cluster_nodes clusternode
16     force_boot
17     sync_queue [-p <vhost>] queue
18     cancel_sync_queue [-p <vhost>] queue
19     purge_queue [-p <vhost>] queue
20     set_cluster_name name
21 
22     add_user <username> <password>
23     delete_user <username>
24     change_password <username> <newpassword>
25     clear_password <username>
26     
27             authenticate_user <username> <password>
28           
29     set_user_tags <username> <tag> ...
30     list_users
31 
32     add_vhost <vhost>
33     delete_vhost <vhost>
34     list_vhosts [<vhostinfoitem> ...]
35     set_permissions [-p <vhost>] <user> <conf> <write> <read>
36     clear_permissions [-p <vhost>] <username>
37     list_permissions [-p <vhost>]
38     list_user_permissions <username>
39 
40     set_parameter [-p <vhost>] <component_name> <name> <value>
41     clear_parameter [-p <vhost>] <component_name> <key>
42     list_parameters [-p <vhost>]
43 
44     set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] 
45 <name> <pattern>  <definition>
46     clear_policy [-p <vhost>] <name>
47     list_policies [-p <vhost>]
48 
49     list_queues [-p <vhost>] [<queueinfoitem> ...]
50     list_exchanges [-p <vhost>] [<exchangeinfoitem> ...]
51     list_bindings [-p <vhost>] [<bindinginfoitem> ...]
52     list_connections [<connectioninfoitem> ...]
53     list_channels [<channelinfoitem> ...]
54     list_consumers [-p <vhost>]
55     status
56     node_health_check
57     environment
58     report
59     eval <expr>
60 
61     close_connection <connectionpid> <explanation>
62     trace_on [-p <vhost>]
63     trace_off [-p <vhost>]
64     set_vm_memory_high_watermark <fraction>
65     set_vm_memory_high_watermark absolute <memory_limit>
66     set_disk_free_limit <disk_limit>
67     set_disk_free_limit mem_relative <fraction> 

這篇文章也寫的不錯能夠看下https://blog.csdn.net/super_rd/article/details/70327503

相關文章
相關標籤/搜索