身為.NET程序員,用着宇宙級IDE,干什么事都變得越來越懶了,Windows操作系統在手,能通過桌面點點點的方式何必找其他罪受呢。。於是RabbitMQ自然而然也就跑在Windows上了,說實話Windows配置RabbitMQ太惡心了,尤其對於手賤的人,總想着裝了卸卸了裝,慢慢的各種問題就出來了,不從裝系統解決起來備受煎熬。。當然服務器上肯定不這么干,但自己電腦肯定不知不覺的瞎折騰,然后就比如安裝的時候報這種問題:
重裝系統肯定是不可能的- -征戰這么久的電腦,桌面上的東西都懶得整理。。
Docker說實話真是個好東西,RabbitMQ鏡像一拉分分鍾就玩起來了,但Docker畢竟也有局限性,baidu查一下數據庫不適合容器化大致能讀到點弊端,隊列同理。
最近又回過頭來把RabbitMQ搞到CentOS上也是為了節約成本提升性能,RabbitMQ配置里存在一個hipe_compile的屬性,它的描述如下:
醒目的20-50%性能提升不是一點點的誘惑,然而蛋疼的是默認不開啟,而且很不友好的強調了下。。不支持Windows平台。。所以搞吧。。
安裝erlang
先下載最新的erlang安裝包,可以上官網下載頁面下載后扔到CentOS服務器上也可以服務器本地通過命令行下載 wget http://erlang.org/download/otp_src_19.3.tar.gz(當然使用wget,ifconfig命令需要先安裝插件yum install wget ,yum install net-tools)
下載完成后解壓:tar -xvzf otp_src_19.3.tar.gz
erlang在安裝前需要先安裝下它的依賴工具:
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel
然后進入解壓文件對erlang進行安裝環境的配置(為了以后升級版本,此處就繼續使用加壓文件的名字了,至少我看得懂。。。。)
./configure --prefix=/usr/erlang --without-javac
然后進行編譯make
然后安裝 make install
然后就可以驗證一下erlang是否安裝成功了
接下來需要配置一下環境變量,把Erlang配置到/etc/profile文件中並通過source /etc/profile設置生效
安裝RabbitMQ
下載RabbitMQ最新安裝包,同樣可以頁面下載
也可以通過命令行下載:wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.8/rabbitmq-server-3.6.8-1.el7.noarch.rpm
下載完成后依舊照着文檔走先執行下:
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
然后執行:
yum install rabbitmq-server-3.6.8-1.el7.noarch.rpm
這時候就是看點的過程了- -如果點正,系統鏡像工具比較全的。。直接就安裝后了。。點背的話后安裝失敗(對於我這Linux菜鳥就是時刻點背着。。):
點正中途輸個Y就完事了
面對點背的情況,看了下錯誤信息,既然可以忽略那就忽略吧- -
rpm -i --nodeps rabbitmq-server-3.6.8-1.el7.noarch.rpm
這樣也算安裝完成了。。
配置RabbitMQ
RabbitMQ的配置文檔還是寫的比較詳細的:通過配置文件搞的話也比較簡單,簡單理解就是創建倆文件rabbitmq-env.conf,rabbitmq.config然后都扔到/etc/rabbitmq目錄下即可
rabbitmq-env.conf中可以配置下消息存儲的位置,日志存儲的位置這些比較常用的設置,比如
RABBITMQ_MNESIA_BASE=/usr/local/rabbitmq-server/data
RABBITMQ_LOG_BASE=/usr/local/rabbitmq-server/log
這里需要注意的就是既然不使用默認目錄了,那目標目錄是需要權限的,於是可以執行命令給rabbitmq-server授權:
chmod -R 777 /usr/local/rabbitmq-server
對於rabbitmq.config配置文件的樣本可以在/usr/share/doc/rabbitmq-server/ 或者 /usr/share/doc/rabbitmq-server-3.6.8/里找到,就是一個rabbitmq.config.example的文件,去掉.example即可使用,RabbitMQ平時使用默認配置即可,此處修改下hipe_compile的屬性為true就算完事了!
去掉%%注釋,去掉屁股上的,即可。
然后保存安裝下RabbitMQ服務,
正如配置所說- -啟動慢。但跑起來的話性能很好!
啟動RabbitMQ服務可以通過命令:rabbitmq-server start
添加rabbitmq到啟動項可以通過命令:chkconfig rabbitmq-server on
還有就是開啟管理界面可以通過命令:rabbitmq-plugins enable rabbitmq_management
注意:
對於將RabbitMQ添加到啟動項實際上就是安裝RabbitMQ時,會在/lib/systemd/system目錄下自動創建一個 rabbitmq-server.service 的配置文件用於系統開啟時執行(Centos 系統服務腳本目錄有系統(system)和用戶(user)兩種,如需要開機沒有登陸情況下就能運行的程序,存在系統服務(system)里,即:/lib/systemd/system;反之,用戶登錄后才能運行的程序,存在用戶(user)里/lib/systemd/system/ ,服務以.service結尾。)如果這里沒看到 rabbitmq-server.service文件則需要自己手動創建了,文件需要分配754權限即 chmod 745 rabbitmq-server.service,然后就可以測試執行以下了 systemctl start rabbitmq-server.service 然而這時候點背還是會報錯的。。
不多好在錯誤信息比較明顯。。
由於Erlang是自己編譯安裝的,這時候通過配置環境變量還是找不到erl的執行命令,簡單的方式就是創建快捷方式:
ln -s /usr/local/otp_src_19.3/bin/erl /usr/bin
這樣就可以正常安裝RabbitMQ服務了。
chmod 745 rabbitmq-server.service配置中編寫的內容同樣要使用執行文件的實際位置的方式,簡單的配置比如:
啟動服務:systemctl start rabbitmq-server.service
設置開機啟動:systemctl enable rabbitmq-server.service
停止開機啟動:systemctl disable rabbitmq-server.service
重新啟動服務:systemctl restart rabbitmq-server.service
查看服務當前狀態:systemctl status rabbitmq-server.service
查看所有已啟動服務:systemctl list-units --type=service
RabbitMQ集群配置
集群配置需要注意的就是同步.erlang.cookie文件內容,這個文件所在的位置文檔里說是在/var/lib/rabbitmq/.erlang.cookie 或者$HOME/.erlang.cookie. 我一般就是既然RabbimtMQ安裝成功了隨便瞎個命令比如在RabbitMQ關閉的狀態下在關一次:rabbitmqctl stop然后就報錯了。。報錯的內容里醒目的寫着.erlang.cookie的位置。。windows同理。。(之所以說windows同理是因為我們的集群一台windows2012一台sentos7.2,鵝妹子嚶)
對於集群中erlang的版本最好一致,不能一致的話至少保證主版本號一致,而且祈禱高版本兼容低版本吧!(通常是沒問題的)
對於RabbitMQ貌似對版本要求比較嚴格,修正號不一致都不成功。。
還好刪除是比較方便的。。。
統一版本后就能連了,蛋疼。。
不關閉防火牆還要記得開放端口,通常4369,5672,15672,25672什么的是需要開放的:
firewall-cmd --add-port=4369/tcp --permanent