1. 程式人生 > >CentOS6.8中RabbitMQ的安裝和配置&俺們這些逗比遇到的坑好難填

CentOS6.8中RabbitMQ的安裝和配置&俺們這些逗比遇到的坑好難填

安裝系統CentOS6.8

1.erlang的安裝erlang的版本:erlang-18.2.1

erlang的依賴環境:

(1)首先安裝GCC GCC-C++ Openssl等模組:

yum -y install make gcc gcc-c++ kernel-devel m4 unixODBC unixODBC-devel openssl openssl-devel

(2)安裝ncurses模組:

yum -y install ncurses-devel

(3)erlang下載&解壓:

wget http://erlang.org/download/otp_src_18.2.1.tar.gz
然後解壓並放置在/usr/local/下:
tar -xvf otp_src_18.2.1.tar.gz
mv otp_src_18.2.1 /usr/local/

(4)編譯&安裝:進入到otp_src_18.2.1資料夾下,

配置命令:
cd /usr/local/otp_src_18.2.1
./configure --prefix=/usr/local/erlang --enable-threads --enable-halfword-emulator --enable-smp-support --enable-kernel-poll --enable-sctp --enable-native-libs --enable-shared-zlib --enable-m64-build --enable-silent-rules
直接從yum上下載對應的模組即可;

(5)開過一個終端安裝wxWidgets(需要外網)

在安裝之前,wx又依賴以下模組,
yum -y install gtk opengl mesa* freeglut*
fop is missing問題可以忽略,上述問題得到解決;
註解:安裝gtk失敗
yum install libgnomeui-devel
其中wxWidgets庫,yum中沒有,需要單獨下載,本文下載的版本為:
wxWidgets-3.0.2.tar.bz2
tar -jxvf wxWidgets-3.0.2.tar.bz2
mv wxWidgets-3.0.2 /usr/local/
cd /usr/local/wxWidgets-3.0.2
隨後進行解壓安裝
./configure --with-opengl --enable-debug --enable-unicode
make&& make install
wx安裝成功,

(6)隨後對otp_src進行編譯和安裝:

./configure --prefix=/usr/local/erlang --enable-threads --enable-halfword-emulator --enable-smp-support --enable-kernel-poll --enable-sctp --enable-native-libs --enable-shared-zlib --enable-m64-build --enable-silent-rules
make&& make install
得到如下資料夾:erlang的命令檔案存在於bin中,
因此需要將bin的路徑加入到PATH路徑中,編輯/etc/profile檔案,
在尾行新增:
export PATH=$PATH:/usr/local/erlang/bin
並執行:source /etc/profile
隨後測試安裝是否成功:

erl 出現資訊,代表erlang安裝成功;


2.1.對RabbitMQ進行安裝(推薦)

(1)xmlto安裝,直接yum:

yum install xmlto

(2)下載版本:版本號為3.6.1可最新版,最新版並沒有tar版本

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-3.6.1-1.noarch.rpm
rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
yum install rabbitmq-server-3.6.1-1.noarch.rpm(版本不符erl要求>=erlB3類似的直接忽略,暫時不依賴,使用下面命令執行 --nodeps是關鍵 )
rpm -i --nodeps rabbitmq-server-3.6.1-1.noarch.rpm
進入到rabbit檔案內,其命令檔案存在於/usr/lib/rabbitmq/bin資料夾下,因此需要將bin資料夾的路徑新增到PATH中:
目錄 TARGET= /usr/lib/rabbitmq
export PATH=$PATH:/usr/lib/rabbitmq/bin
執行source /etc/profile使得PATH路徑更新,
至此rabbitMQ安裝成功,就是這麼簡單,檔案路徑:
MNESIA_BASE 後端儲存目錄  ,預設為/var/lib/rabbitmq/mnesia
目錄 TARGET= /usr/lib/rabbitmq
node           : [email protected]"vhostname"
home dir       : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/rabbitmq.config(可手動建立配置rabbitmq-env.conf)
log dir        : /var/log/rabbitmq
    -rw-r--r--. 1 rabbitmq rabbitmq 45342 1月  13 19:28 [email protected]
    -rw-r--r--. 1 rabbitmq rabbitmq     0 1月  12 22:44 [email protected]
    -rw-r--r--. 1 root     root         0 1月  13 19:28 shutdown_err

    -rw-r--r--. 1 root     root        45 1月  13 19:28 shutdown_log

2.2. 對RabbitMQ進行安裝tar.xz版(新手可使用3,3已安裝可忽略此小節):

(1)下載版本:版本號為3.6.0,下載通用的linux版本,generic-unix;

下載地址:wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.0/rabbitmq-server-generic-unix-3.6.0.tar.xz
對於下載xz包進行解壓:
首先先下載xz壓縮工具:
yum install xz
對rabbitmq包進行解壓:
xz -d rabbitmq-server-generic-unix-3.6.0.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.0.tar
隨後移動至/usr/local中:
這種下載的方式解壓後直接可以使用,無需再編譯安裝;
進入到rabbit檔案內,其命令檔案存在於sbin資料夾下,因此需要將sbin資料夾的路徑新增到PATH中:
export PATH=$PATH:/usr/local/rabbitmq_server-3.6.0/sbin
執行source /etc/profile使得PATH路徑更新,但路徑有點坑,rabbitMQ安裝成功;
/usr/local/rabbitmq_server-3.6.0/etc/rabbitmq
/usr/local/rabbitmq_server-3.6.0/var/lib/rabbitmq
/usr/local/rabbitmq_server-3.6.0/var/log/rabbitmq

3. 隨後啟用MQ管理方式:

cd /usr/lib/rabbitmq/bin
chkconfig rabbitmq-server on
設定之後可以通過網頁方式管理MQ;
設定埠號,可供外部訪問:
vi /etc/sysconfig/iptables
iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
或者暴力關閉,重啟後失效
service iptables stop關閉防火牆
rabbitmq-plugins enable rabbitmq_management
啟動程式rabbitmq-server
/usr/lib/rabbitmq/bin: line 63: erl: command not found
ln -s /usr/local/erlang/bin/erl /usr/bin/erl(配置軟連線)
停止所有節點RabbitMQ服務,然後使用detached引數獨立執行,這步很關鍵,尤其增加節點停止節點後再次啟動遇到無法啟動都可以參照這個順序
後臺執行:rabbitmq-server -detached
Warning: PID file not written; -detached was passed.可忽略警告

4.rabbitmq的web管理介面無法使用guest使用者登入(可忽略,直接建立一個新使用者)

安裝最新版本的rabbitmq(3.6.1),並啟用management plugin後,使用預設的賬號guest登陸管理控制檯,卻提示登陸失敗。
翻看官方的release文件後,得知由於賬號guest具有所有的操作許可權,並且又是預設賬號,出於安全因素的考慮,guest使用者只能通過localhost登陸使用,並建議修改guest使用者的密碼以及新建其他賬號管理使用rabbitmq(該功能是在3.3.0版本引入的)。
cd /etc/rabbitmq/
vi rabbitmq.config
[{rabbit, [{loopback_users, []}]}].
這裡的意思是開放使用,rabbitmq預設建立的使用者guest,密碼也是guest,這個使用者預設只能是本機訪問,localhost或者127.0.0.1,從外部訪問需要新增上面的配置。
可通過任意IP使用guest賬號登陸管理控制檯,但始終是違背了設計者的初衷,再加上以前對這一塊瞭解也不多,因此有必要總結一下。
隨後通過伺服器ip+15672埠即可訪問rabbitMQ的管理介面;
192.168.2.158:15672/#/ 至此,rabbitMQ的配置已經完成。

5. 使用者管理

使用者管理包括增加使用者,刪除使用者,檢視使用者列表,修改使用者密碼。
相應的命令

(1) 新增一個使用者

rabbitmqctl  add_user  Username  Password

(2) 刪除一個使用者

rabbitmqctl  delete_user  Username

(3) 修改使用者的密碼

rabbitmqctl  change_password  Username  Newpassword

(4) 檢視當前使用者列表

rabbitmqctl  list_users

6. 使用者角色

按照個人理解,使用者角色可分為五類,超級管理員, 監控者, 策略制定者, 普通管理者以及其他。

(1) 超級管理員(administrator)

可登陸管理控制檯(啟用management plugin的情況下),可檢視所有的資訊,並且可以對使用者,策略(policy)進行操作。

(2) 監控者(monitoring)

可登陸管理控制檯(啟用management plugin的情況下),同時可以檢視rabbitmq節點的相關資訊(程序數,記憶體使用情況,磁碟使用情況等)

(3) 策略制定者(policymaker)

可登陸管理控制檯(啟用management plugin的情況下), 同時可以對policy進行管理。但無法檢視節點的相關資訊(上圖紅框標識的部分)。
與administrator的對比,administrator能看到這些內容

(4) 普通管理者(management)

僅可登陸管理控制檯(啟用management plugin的情況下),無法看到節點資訊,也無法對策略進行管理。

(5) 其他

無法登陸管理控制檯,通常就是普通的生產者和消費者。
瞭解了這些後,就可以根據需要給不同的使用者設定不同的角色,以便按需管理。
設定使用者角色的命令為:
rabbitmqctl  set_user_tags  User  Tag
User為使用者名稱, Tag為角色名(對應於上面的administrator,monitoring,policymaker,management,或其他自定義名稱)。
也可以給同一使用者設定多個角色,例如
rabbitmqctl  set_user_tags  hncscwc  monitoring  policymaker

7. 使用者許可權

使用者許可權指的是使用者對exchange,queue的操作許可權,包括配置許可權,讀寫許可權。配置許可權會影響到exchange,queue的宣告和刪除。讀寫許可權影響到從queue裡取訊息,向exchange傳送訊息以及queue和exchange的繫結(bind)操作。
例如: 將queue繫結到某exchange上,需要具有queue的可寫許可權,以及exchange的可讀許可權;向exchange傳送訊息需要具有exchange的可寫許可權;從queue裡取資料需要具有queue的可讀許可權。詳細請參考官方文件中"How permissions work"部分。
相關命令為:

(1) 設定使用者許可權

rabbitmqctl  set_permissions  -p  VHostPath  User  ConfP  WriteP  ReadP

(2) 檢視(指定hostpath)所有使用者的許可權資訊

rabbitmqctl  list_permissions  [-p  VHostPath]

(3) 檢視指定使用者的許可權資訊

rabbitmqctl  list_user_permissions  User

(4)  清除使用者的許可權資訊

rabbitmqctl  clear_permissions  [-p VHostPath]  User
rabbitmqctl  set_permissions -p /vhost1  user_admin '.*' '.*' '.*'

8.rabbitMQ叢集部署以及叢集之間同步

其中,一個機房有兩臺機器部署MQ,並組成叢集,有一個機房的MQ叢集作為中心叢集,其他機房的MQ叢集將訊息同步到中心MQ叢集中。

配置本地叢集
配置hosts
同一機房叢集的兩臺機器都要配置host,要保證可以通過hosts訪問到同一機房的叢集機器
比如同一機房的兩臺機
[email protected]
[email protected]
rabbit為同ip對應的域名
需要在這兩臺機上,配置/etc/hosts,增加配置如下:
192.168.2.158 rabbit
192.168.2.168 rabbit1
加入叢集
在兩臺機器上,先啟動MQ:
./rabbitmq-server&(同機房叢集裡的都要啟動,不然後面join不進去)
然後在其中每臺機器上,執行命令:
./rabbitmq-plugins enable rabbitmq_federation rabbitmq_federation_management rabbitmq_management

(我配置的虛擬機器是使用不同版本的rabbitmq因此需要啟動rabbitmq_federation聯合模式,我還納悶怎麼我的不同版本不是聯合模式也可以叢集。。預設情況是需要相同版本)


./rabbitmqctl stop_app(master需要開啟)

./rabbitmqctl reset
chmod 400 /var/lib/rabbitmq/.erlang.cookie
(158那臺機器是
./rabbitmqctl join_cluster [email protected] (disk磁碟)
./rabbitmqctl join_cluster --ram [email protected] (ram記憶體)
目的是相互增加對方為叢集)
最後,重啟MQ
ps -ef | grep rabbitmq | grep -v "grep"|awk '{print $2}' |xargs kill -9
./rabbitmq-server&(如果存在則先kill掉 )
service rabbitmq-server restart
本地叢集配置完畢

rabbitmqctl cluster_status

在上班要開虛擬機器就算了,就醬。

修改叢集節點的型別
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type ram
rabbitmqctl start_app

rabbitmqctl cluster_status

9.跳坑請看這

1.叢集配置可能有的問題自己調吧

rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl join_cluster [email protected] -- 192.168.2.158
rabbitmqctl join_cluster [email protected] -- 192.168.2.168

2.不同版本、不同安裝路徑的叢集問題的配置

[[email protected] ~]# rabbitmqctl join_cluster [email protected]
Clustering node [email protected] with [email protected] ...
Error: unable to connect to nodes [[email protected]]: nodedown
DIAGNOSTICS
===========
attempted to contact: [[email protected]]
[email protected]:
  * connected to epmd (port 4369) on rabbit1
  * epmd reports node 'rabbit' running on port 25672
  * TCP connection succeeded but Erlang distribution failed
  * suggestion: hostname mismatch?
  * suggestion: is the cookie set correctly?
  * suggestion: is the Erlang distribution using TLS?
current node details:
- node name: '[email protected]'
- home dir: /root
- cookie hash: EHSbkewxdJsbmnBGGVw7mg==
[[email protected] ~]# rabbitmqctl join_cluster [email protected]
Clustering node [email protected] with [email protected] ...
Error: unable to connect to nodes [[email protected]]: nodedown
DIAGNOSTICS
===========
attempted to contact: [[email protected]]
[email protected]:
  * connected to epmd (port 4369) on rabbit1
  * epmd reports node 'rabbit' running on port 25672
  * TCP connection succeeded but Erlang distribution failed
  * suggestion: hostname mismatch?
  * suggestion: is the cookie set correctly?
  * suggestion: is the Erlang distribution using TLS?
current node details:
- node name: '[email protected]'
- home dir: /var/lib/rabbitmq
- cookie hash: EHSbkewxdJsbmnBGGVw7mg==
注意:/root和/var/lib/rabbitmq的下.erlang.cookie的值必須相等 如果沒有就自己建立檔案
配置/etc/hosts
192.168.2.158 rabbit
192.168.2.168 rabbit1
Error: mnesia_unexpectedly_running
rabbitmqctl stop_app
注意vhostname  .erlang.cookie的許可權和值是否相等

3.Erlang cookie值的問題

從錯誤提示 TCP connection succeeded but Erlang distribution failed,Authentication failed (rejected by the remote node), please check the Erlang cookie 可以看出是 Erlang cookie的問題,節點的cookie和主節點的cookie不一致。解決辦法在每個主機的$HOME目錄下新建一個.erlang.cookie,裡面隨便輸入一段字串。或者在/var/lib/rabbitmq這個目錄下新建同樣的檔案,裡面隨便寫些字元,但是要在/etc/rabbitmq/rabbit-env.conf裡面通過HOME=/var/lib/rabbitmq來指定。所有節點的.erlang.cookie必須保持一致。

4.cookie訪問許可權

啟動RabbitMQ出現"Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner only",這個是cookie訪問許可權的問題,解決辦法如下:

chmod 400 /var/lib/rabbitmq/.erlang.cookie

最後附上本人艱辛歷程:連結: http://pan.baidu.com/s/1nv0OXiL 密碼: mzj9(安裝包)

相關推薦

CentOS6.8RabbitMQ安裝配置&俺們這些遇到的

安裝系統CentOS6.8 1.erlang的安裝erlang的版本:erlang-18.2.1 erlang的依賴環境: (1)首先安裝GCC GCC-C++ Openssl等模組: yum -y install make gcc gcc-c++ kernel-devel

CentOS6.5】MySQL安裝配置

配置 entos alt tro images .com centos ges mys 1./etc/my.cnf 這是mysql的主配置文件 2、數據存放位置 3、錯誤存放位置 【CentOS6.5】MySQL安裝和配置

RabbitMQ安裝配置

www download div -s 令行 con web管理 plugins 下載 Window下安裝 安裝 下載並安裝Erlang for windows; 下載並安裝 Python 3.x / 2.7.x / 2.6.x; 下載並安裝 rabbitmq-serve

centos6.8docker安裝

centos6.8中docker安裝 注:我勸你們不要用centos7以下的版本來裝docker了,巨坑。。 注:我勸你們不要用centos7以下的版本來裝docker了,巨坑。。 自從2017年docker出了ce與ee版本後,棄用了docker

nginxmycat在Windows系統安裝配置

nginx在Windows上的搭建 1.解壓Windows安裝包到D:\program files(x86) 2.配置檔案     開啟nginx安裝目錄找到conf資料夾,開啟nginx.conf     配置訪問節點      upstream tomcat1

Mysql在contos7安裝配置

解除安裝contos7自帶的 mariadb 首先CentOS7 已經不支援mysql,因為收費了你懂得,所以內部集成了mariadb,而安裝mysql的話會和mariadb的檔案衝突,所以需要先解除安裝掉mariadb,以下為解除安裝mariadb,安裝mysql的步驟。 列出所有被安裝的rpm pac

CentOS6.8下Nagios-4.2.0安裝配置

因此 figure 問題 usermod linux文件 httpd的配置 pen kconfig etc 1實驗目標 掌握Nagios的安裝 2實驗環境 主機名:Nagios-Server 操作系統:CentOS release 6.8 (Final) IP地址:19

centos6.8安裝配置

準備工作 150G及以上的硬碟空間(因為要搭建3個系統組成的叢集),cpu儘量i7-7xxx標壓以上,記憶體16G及以上 自行搜尋,下載,安裝VMWare 準備CentOS6.8的映象檔案 注意:安裝虛擬機器前必須開啟BIOS虛擬化支援   安裝CentOS

linux centos6.5 安裝配置rabbitmq

(1) 安裝erlang otp (本環境用otp_17.4) (2)安裝依賴庫 檢視 python 是否安裝,如果沒有則安裝python yum install libxslt-devel yum install python-simplejson -y yum inst

CentOS6.7 RabbitMQ安裝配置

我這裡以3.5.6為例 一:RabbitMQ的安裝 首先,下載RabbitMQ wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_5_6/rabbitmq-serv

linux安裝配置 jdk

jdk1 png images 下載 配置環境變量 ftp 當前 bsp 官網 01.去官網下載指定的jdk 02.使用xftp把下載好的文件 傳遞到 linux指定文件夾中03.進入指定的文件夾輸入tar -zxvf 文件名稱04.發現文件 05.進入文件c

Centos7.3安裝配置jre1.8

分享 運行環境 filezilla www 編輯 exp path 解壓 安裝和配置 在正式環境裏 我們可以不安裝jdk ,僅僅安裝Java運行環境 jre即可; 第一步:下載jre 我們去oracle官方下載下jre http://www.oracle

Centos6.5下DHCP服務器的安裝配置

默認 聲明 網絡 grep eve install 廣播 6.0 lan 1、首先需要安裝DHCP的軟件包,使用yum進行安裝 # yum install -y dhcp.x86_64 dhcp-devel.x86_64 2、將/usr/share/doc/dhcp-4.

Windows RabbitMQ安裝與環境變量配置

-s 雙擊 來安 環境 style lang 頁面 files 基礎上 RabbitMQ是一個在AMQP基礎上完整的,可復用的企業消息系統。他遵循Mozilla Public License開源協議。 1:安裝RabbitMQ需要先安裝Erlang語言開發包。下載地址 h

CentOS 6.6 jdk1.6的安裝配置方法

方法 too 生效 client uil 軟件 ted tsp term Linux中JDK1.6的安裝和配置方法 一、安裝 創建安裝目錄,在/usr/java下建立安裝路徑,並將文件考到該路徑下: # mkdir /usr/java 1、jdk-6u11-li

rabbitMQ安裝配置

連接數 term 運行 gen ++ ln -s strong prot profile erlang是一門面向並發的編程語言,流行的消息隊列rabbitMQ是基於erlang環境運行的; 系統環境 操作系統:oracle-linux7.3 erlang版本:otp_

EclipseSVN插件的安裝配置(在線安裝)

技術分享 cli ont cat 步驟 size 網上 管理 離線 公司項目中用到了svn來管理項目,然後需要在Eclipse中進行配置。網上參考了很多資料,離線安裝的方式裝上了,但是導入項目後報錯,可能是離線安裝包的問題。然後又采用了Eclipse在線安裝的方式

EclipseSVN插件的安裝配置(離線安裝)

分享 安裝目錄 plugin 插件 inf tro img 密碼 問題 Eclipse利用svn的離線安裝包進行配置svn,這種方式配置起來很簡單,但是前提是必須下載可用的的svn離線包。因為有的從網上下載的svn離線包有問題。 第一步:下載svn離線包 我下

G5老服務器安裝centos6.8,在centos6.8安裝KVM,並創建centos7.4虛擬機

emc p地址 文件夾 了吧 troy type 電腦 stat 共享 哎。。。弄了好幾天。。。現在寫都懶得寫,過程太費勁了,主要也是水平有限吧。再次記錄下,希望下次遇到此情況可以快速解決!!!1、公司淘汰下來一臺Hp的G5服務器,手癢就想玩玩。。打算安裝一個centos7

【MySQL】centOS安裝配置MySQL

在MySQL的官方網站下載rpm包,地址為https://dev.mysql.com/downloads/repo/yum/ 也可以使用wget來下載 地址可以在網上找   然後輸入rpm -Uvh mysql57-community-release-el7-10.noarch.rpm