RabbitMQ 的安裝與卸載 以及各種踩坑
當(dāng)前編寫文檔時(shí)間:2019年4月23日17:42:07
安裝 -- windows
-
RabbitMQ依賴于Erlang虛擬機(jī)胁赢,所以要先安裝Erlang企蹭,自行官網(wǎng)下載。RabbitMQ download 以及 Erlang官網(wǎng)
- 29 March 2019 更新版本:RabbitMQ 3.7.14 release (后來因?yàn)槌霈F(xiàn)了問題智末,改為3.6.5)
- This release requires Erlang/OTP 20.3.
- 關(guān)于安裝那種方式练对,都差不多,建議使用 Installer吹害。
關(guān)于選用那個(gè)版本的Erlang以支持RabbitMQ(注:必須按要求,否則有問題)
下載完虚青,以管理員身份運(yùn)行它呀,先安裝Erlang,安裝后配置環(huán)境變量(檢查一下棒厘,有可能不自動(dòng)寫)纵穿。(ERLANG_HOME=C:\Program Files\erl10.1))以及path加上bin。
安裝Erlang后安裝RabbitMQ奢人,默認(rèn)TCP端口5672谓媒,安裝直接啟動(dòng)的。
安裝RabbitMQ后依舊設(shè)置環(huán)境變量何乎。(RABBITMQ_HOME=安裝路徑)句惯。 path加上sbin土辩。
CMD運(yùn)行
rabbitmqctl status
檢測是否安裝成功運(yùn)行
rabbitmq-plugins enable rabbitmq_management
打開RabbitMQ管理插件插件運(yùn)行成功,就可以在WEB管理界面看到RabbitMQ相關(guān)信息抢野。本地地址拷淘,默認(rèn)賬戶(guest:guest)
-
RabbitMQ配置文件所在位置(3.6.5版本再Web管理頁面能看到,但是3.7.14在頁面就沒有)
- 在etc/下存在兩個(gè)文件rabbitmq.config.example和README.txt指孤,從名字看出启涯,第一個(gè)就是config的example
- 但是!J研结洼!這個(gè)位置的配置文件只是給你看的,并不是真的在這叉跛,README.txt中說了:
In this directory you can find an example configuration file for RabbitMQ.
Note that this directory is not where the real RabbitMQ
configuration lives. The default location for the real configuration
file is %APPDATA%\RabbitMQ\rabbitmq.config.%APPDATA% usually expands to C:\Users%USERNAME%\AppData\Roaming or similar.
- 修改配置文件后重啟服務(wù)即可
- 重啟服務(wù)有文檔說需要管理員身份松忍,我一直是管理員身份,沒驗(yàn)證昧互。
- 有的文檔上寫著需要重新安裝才會(huì)生效挽铁,我不知道為什么有這種說法,沒發(fā)現(xiàn)需要敞掘。
- 重啟命令:rabbitmq-service.bat 里先stop在start 叽掘,不知道為什么沒有restart。
卸載 -- windows
- 打開“程序和功能”玖雁。(命令:appwiz.cpl)
- 在列表中卸載RabbitMQ和Erlang
- 打開Windows任務(wù)管理器更扁。
- 在任務(wù)管理器中,查找進(jìn)程epmd.exe赫冬。|| 或者在資源管理器中
- 刪除RabbitMQ和Erlang的所有安裝目錄浓镜。
- 刪除文件C:\ Windows \ .erlang.cookie(如果存在)。
- 轉(zhuǎn)到用戶文件夾:C:\ Users \ [username]劲厌,然后刪除文件.erlang.cookie膛薛。刪除
- 同樣在User文件夾中,轉(zhuǎn)到AppData \ Roaming \ RabbitMQ补鼻。刪除RabbitMQ文件夾哄啄。
- 刪除RabbitMQ的服務(wù)。sc delete RabbitMQ
- 注冊(cè)表刪除RabbitMQ節(jié)點(diǎn)(命令:regedit) (HLM-SOFTWARE-Ericesson---)
遇見的坑
問題1:SSL通訊出現(xiàn)問題(rabbitmq-server-3.7.14 && otp_win64_21.3):
Received fatal alert: handshake_failure
解決方案:
第一種:
因?yàn)閖dk中jce的安全機(jī)制導(dǎo)致報(bào)的錯(cuò)风范,要去oracle官網(wǎng)下載對(duì)應(yīng)的jce包替換jdk中的jce包咨跌。
jce所在地址: %JAVA_HOME%\jre\lib\security里的local_policy.jar,US_export_policy.jar
JDK8 http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
第二種:
在請(qǐng)求連接之前加上
System.setProperty("https.protocols", "TLSv1.2,TLSv1.1,SSLv3");
問題2:SSL通訊出現(xiàn)問題(rabbitmq-server-3.7.14 && Erlang21.3)(rabbitmq-server-3.6.1 && Erlang18.3.3):
console報(bào)出:
javax.net.ssl.SSLHandshakeException: Received fatal alert: insufficient_security
log報(bào)出:
=ERROR REPORT==== 22-Apr-2019::03:19:02 ===
SSL: hello: tls_handshake.erl:167:Fatal error: insufficient security
TLS server: In state hello at tls_handshake.erl:201 generated SERVER ALERT: Fatal - Insufficient Security - no_suitable_ciphers
解決方案:
上述兩種RabbitMQ和Erlang的配合都報(bào)這個(gè)問題,
新版的未找到什么問題硼婿。估計(jì)是因?yàn)樽钚掳姹締栴}bug锌半。卸載
3.6.1的是因?yàn)榕cErlang18.3.3的版本出現(xiàn)的bug,18.3.4中修復(fù)寇漫,Stack Overflow上回答說推薦升級(jí)至19.X刊殉。
安裝常見的穩(wěn)定版本(rabbitmq-server-3.6.5 && Erlang19.3)
刪除新版本殉摔,重裝版本
問題3:卸載時(shí)報(bào)占用卻找不到
卸載時(shí),在任務(wù)管理器中冗澈,找不到epmd.exe的進(jìn)程钦勘,但是刪除目錄中的文件時(shí),卻提示被占用
解決方案:
任務(wù)管理器 - 性能 - 打開資源監(jiān)視器亚亲,在資源監(jiān)視器中找到epmd彻采,右鍵 - 結(jié)束進(jìn)程,問題解決
問題4:安裝運(yùn)行RabbitMQ捌归,報(bào)“init terminating in do_boot ()”
解決方案:
RabbitMQ版本與Erlang版本不符肛响,安裝失敗的,看注冊(cè)表就知道沒安裝成功惜索。
問題5:安裝RabbitMQ時(shí)特笋,查看安裝的詳細(xì)信息,出現(xiàn)異常巾兆,導(dǎo)致服務(wù)無法啟動(dòng)
解決方案:
注冊(cè)表寫入失敗猎物,需要手動(dòng)寫入重新安裝,有可能是 版本問題角塑、環(huán)境問題蔫磨、安裝權(quán)限問題。
依次執(zhí)行命令:rabbitmq-service stop圃伶,rabbitmq-service remove堤如,rabbitmq-service install,rabbitmq-service start窒朋,卸載并重新安裝RabbitMQ的服務(wù)
問題6:安裝RabbitMQ時(shí)搀罢,出現(xiàn)異常
unable to connect to node 'rabbit@2012-R2-Datacenter-64bit': nodedown”
解決方案:
C:\Windows.erlang.cookie和C:\Users[username].erlang.cookie的口令不一致導(dǎo)致的
刪除其一,將另外一個(gè)復(fù)制過來就可以了
或者都刪除重新安裝侥猩。
問題7:安裝運(yùn)行RabbitMQ榔至,報(bào)“init terminating in do_boot ()”
解決方案:
我出現(xiàn)的原因是RabbitMQ版本與Erlang版本不符,安裝失敗的欺劳,看注冊(cè)表就知道沒安裝成功洛退。
問題8:安裝過程出現(xiàn)亂碼詭異錯(cuò)誤
解決方案:
懷疑是因?yàn)槟夸浡窂娇崭駥?dǎo)致,換了名字好了杰标。
問題9:安裝好之后,創(chuàng)建了賬號(hào)彩匕,但是使用過程中腔剂,依然提示權(quán)限不足
解決方案:
賬號(hào)沒有分配權(quán)限,WEB頁面分配權(quán)限即可
問題10:重新安裝后驼仪,出現(xiàn)SSL通信錯(cuò)誤
=ERROR REPORT==== 23-Apr-2019::16:13:04 ===
SSL: certify: ssl_handshake.erl:1609:Fatal error: certificate expired
=ERROR REPORT==== 23-Apr-2019::16:22:21 ===
SSL: certify: ssl_handshake.erl:1609:Fatal error: certificate expired
解決方案:
報(bào)的異常是證書過期:但是也有可能是因?yàn)樽C書還沒到時(shí)間
我是在linux里生成的證書掸犬,linux時(shí)間與windows時(shí)間不一致導(dǎo)致袜漩。
設(shè)置系統(tǒng)時(shí)間與網(wǎng)絡(luò)時(shí)間同步
ntpdate cn.pool.ntp.org
將系統(tǒng)時(shí)間寫入硬件時(shí)間
hwclock --systohc
問題11:正常使用,日志記錄增長過快
解決方案:
因?yàn)閞abbitMQ日志默認(rèn)記錄級(jí)別是Info湾碎,會(huì)記錄所有進(jìn)出棧信息宙攻,導(dǎo)致日志過大,只需要將配置文件的日志級(jí)別設(shè)置為error或者warning
[
{rabbit, [
{vm_memory_high_watermark_paging_ratio, 0.4},
{vm_memory_high_watermark, 0.4},
{log_levels, [{connection, warning}, {channel, warning}]}
]
}
].
問題12:業(yè)務(wù)量變大介褥,CPU暴增
解決方案:
這是一個(gè)復(fù)雜的多種可能性的問題座掘,先一種種走過去:
第一種:可能是因?yàn)槊看芜B接都是創(chuàng)建一個(gè)連接對(duì)象,又沒有及時(shí)釋放導(dǎo)致的柔滔,可以對(duì)channel進(jìn)行限制溢陪。
待續(xù)。