1.安裝erlang
需要注意erlang的版本是否滿足rabbitmq的需求
這里用到的版本是:Erlang 19.0.4? ?RabbitMQ 3.6.15
?
wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm
yum -y install erlang
?1.1測試erlang是否安裝
erl -version
?
2.安裝rabbitmq
wget https://www.rabbitmq.com/releases/rabbitmq-server/current/rabbitmq-server-3.6.15-1.el6.noarch.rpm yum install rabbitmq-server-3.6.15-1.el6.noarch.rpm
2.1其他相關命令
啟動:systemctl start rabbitmq-server 開機自動啟動:systemctl enable rabbitmq-server 查看 rabbitmq-server 狀態:rabbitmqctl status
2.2配置網頁插件
首先創建目錄,否則可能報錯: mkdir /etc/rabbitmq然后啟用插件: rabbitmq-plugins enable rabbitmq_management
2.3配置防火墻
配置linux 端口 15672 網頁管理 5672 AMQP端口:
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=5672/tcp
systemctl restart firewalld.service
現在你在瀏覽器中輸入服務器IP:15672 就可以看到RabbitMQ的WEB管理頁面了
2.4配置訪問賬號密碼和權限
默認網頁是不允許訪問的,需要增加一個用戶修改一下權限,代碼如下: rabbitmqctl add_user rabbit 123456 //添加用戶,后面兩個參數分別是用戶名和密碼 rabbitmqctl set_permissions -p / rabbit ".*" ".*" ".*" //添加權限 rabbitmqctl set_user_tags rabbit administrator //修改用戶角色 然后就可以遠程訪問了,然后可直接配置用戶權限等信息。 登錄:http://ip:15672 登錄之后在admin里面把guest刪除。
3.開始配置集群
3.1配置節點的host
vim /etc/hosts192.168.161.200 slave1 192.168.161.201 slave2 192.168.161.202 slave3
集群中的所有節點均需要配置
?
3.1配置erlang的cookie,cookie要一致
官方在介紹集群的文檔中提到過.erlang.cookie一般會存在這兩個地址:第一個是$home/.erlang.cookie;第二個地方就是/var/lib/rabbitmq/.erlang.cookie。
如果我們使用解壓縮方式安裝部署的rabbitmq,那么這個文件會在${home}目錄下,也就是$home/.erlang.cookie。
如果我們使用rpm等安裝包方式進行安裝的,那么這個文件會在/var/lib/rabbitmq目錄下。
如果修改文件,rabbitmq不能啟動,這個時候用這個命令修改一下cookie: chmod 400 .erlang.cookie
?
3.2查看集群信息,確定集群的名稱
rabbitmqctl cluster_statusCluster status of node rabbit@slave2 [{nodes,[{disc,[rabbit@slave1,rabbit@slave2,rabbit@slave3]}]},{running_nodes,[rabbit@slave3,rabbit@slave1,rabbit@slave2]},{cluster_name,<<"rabbit@slave1">>},{partitions,[]},{alarms,[{rabbit@slave3,[]},{rabbit@slave1,[]},{rabbit@slave2,[]}]}]查看cluster_name的值
3.3加入集群
1.停止當前要加入到集群的節點的rabiitmq服務
rabbitmqctl stop_app
2.加入集群
示例命令:
rabbitmqctl join_cluster rabbit@slave1
3.啟動rabbitmq服務
rabbitmqctl start_app
4.可以用命令?rabbitmqctl cluster_status查看節點是否正確加入,也可以使用webUI查看
?
?
4? 開始配置負載均衡
4.1 nginx的安裝和啟用stream模塊的方法
請參看此文章
?
?
?
4.2關鍵配置
user nginx; worker_processes 1;error_log /usr/local/nginx/logs/error.log warn; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include /usr/local/nginx/conf/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /usr/local/nginx/logs/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;upstream honeysuckle {ip_hash;server 192.168.161.202:31531;server 192.168.161.201:31531;server 192.168.161.200:31531;}server{ listen 80; location / { proxy_pass http://honeysuckle; } }upstream rabbitmqweb {ip_hash;server 192.168.161.202:15672;server 192.168.161.201:15672;server 192.168.161.200:15672;}server{ listen 15672; location / { proxy_pass http://rabbitmqweb; } }include /etc/nginx/conf.d/*.conf; }stream{upstream rabbitmq{server 192.168.161.200:5672 weight=1;server 192.168.161.201:5672 weight=1;server 192.168.161.202:5672 weight=1;}server{listen 5672;proxy_pass rabbitmq;} }
?
4.3 測試是否生效
最直觀的辦法是使用rabbitMQ web查看連接是否可以命中(根據nginx配置的負載均衡策略)配置的節點