rabbitmq
1、安装版本概述
rabbitmq 3.6.9
otp版本19.3
HAProxy version 1.5.18(通过yum安装)
2、所使用测试服务器
服务器名称erp2:192.168.30.238(主节点,结点名称rabbit-2)
服务器名称vpn-servere:192.168.30.211(从节点,结点名称rabbit-1)
3、相关需要开放的端口
5672 :rabbitmq服务端口
15672 :rabbitmq网页管理页面端口
5673:HAProxy端口 (在主节点服务器上开放)
8100:HAProxy网页管理页面端口(在主结点服务器上开放)
4、注意事项
本文所有linux的命令需要在有root权限的情况下执行
**两台服务器必须能够相互ping通**
erlang/otp linux下安装
1、找一个存放rabbitmq的文件夹解压缩
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel && wget http://erlang.org/download/otp_src_19.3.tar.gz
tar -zxvf otp_src_19.3.tar.gz
2、进解压后的目录
cd otp_src_19.3
3、编译和安装
./configure --prefix=/data/otp_src --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac
make
make install
4、目录位置
我得到路径/data/otp_src/bin
5、编辑相关文件
vim ~/.bash_profile
6、向其中添加一行环境变量,其中PATH后的路径是**上面路径**
export PATH=/data/otp_src/bin:$PATH
7、使环境变量生效
source ~/.bash_profile
8、查看是否安装成功
[root@rabbitmq1 haproxy]# erl
Erlang/OTP 19 [erts-8.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]Eshell V8.3 (abort with ^G)
1>ssl:versions().
[{ssl_app,"8.1.1"},
{supported,['tlsv1.2','tlsv1.1',tlsv1]},
{available,['tlsv1.2','tlsv1.1',tlsv1,sslv3]}]
2>halt().
命令行出现Eshell显示下图则说明安装成功
RabbitMQ安装 linux下
1、解压缩到一个文件夹中
访问 https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.6.9 下载rabbitmq-server-generic-unix-3.6.9.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.9.tar.xz
2、进入解压后目录
cd rabbitmq_server-3.6.9/sbin
3、开启服务观察是否安装完成
./rabbitmq-server
出现RabbitMQ版本号如图所示即安装完成
4、查看安装路径
/data/rabbitmq_server-3.6.9/sbin
5、添加到环境变量
vim ~/.bash_profile
(其中添加一行,路径更改为自己的安装路径)
export PATH=/data/rabbitmq_server-3.6.9/sbin:$PATH
6、使环境变量生效
source ~/.bash_profile
7、开启网页管理工具和日志记录工具(在sbin目录下执行,rabbitmq服务需先关闭)(直接执行如果出现异常则去掉 ./ )
./rabbitmq-plugins enable rabbitmq_management
./rabbitmq-plugins enable rabbitmq_tracing
8、后台启动rabbitmq-server
./rabbitmq-server -detached
9、查看运行状态,观察到pid则开启成功。
如果执行rabbitmqctl出现命令不存在请重新执行步骤6和7
rabbitmqctl status
10、创建一个新用户admin,密码admin
rabbitmqctl add_user admin admin
11、授予管理员权限
rabbitmqctl set_user_tags admin administrator
12、浏览器中访问该服务器的ip端口号15672 (需提前在linux中开启端口15672 和端口5672)登录页面用户名admin 密码admin
13、添加一个新的virtual host 如图
14、点击/v_admin进入
15、给admin授权
搭建集群
**前提准备**
**两台**按上述步骤安装好otp和rabbitmq的服务器
此处选用服务器一为**主**结点ip 192.168.30.238
另一台为**从**结点ip 192.168.30.211(注意对应好实际自己的主从结点服务器ip)
**步骤**
1、找到两台服务器中cookie所在位置
find -name ".erlang.cookie"
2、将从结点服务器中的.erlang.cookie全部覆盖替换成主服务器上的.erlang.cookie 可以利用scp直接复制
(此处的cookie注意要设置只读权限(默认只读,如果修改了需要最后复制后再重新设置一下):chmod 400 .erlang.cookie)
3、修改host文件,添加双方ip其中rabbit-2所在为主节点
***\*!!此处两个ip后面的名称为命令行中的主机用户名\****
vi /etc/hosts
(添加两个主机名和ip,删除括所有括号)
192.168.30.238 vpn-servere (这个是将来的主节点)
192.168.30.211 erp2 (这个是将来的从结点)
4、关闭两台服务器的rabbitmq,如果出现命令无法找到请重新执行source ~/.bash_profile
rabbitmqctl stop
5、 在第一个主节点服务器上运行,后台开启第一个rabbitmq主节点
RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-2 rabbitmq-server start &
6、在第二个从结点服务器上运行
RABBITMQ_NODE_PORT=5672 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener[{port,15672}]" RABBITMQ_NODENAME=rabbit-1 rabbitmq-server start &
7、(在主结点服务器238上执行)把rabbit-2设置为主结点(自行删除所有括号)
rabbitmqctl -n rabbit-2 stop_app (关闭结点)
rabbitmqctl -n rabbit-2 reset (清除历史数据)
rabbitmqctl -n rabbit-2 start_app (启动结点)
8、(在从节点服务器211上执行)rabbit-1相关命令如下(自行删除所有括号):
rabbitmqctl -n rabbit-1 stop_app (关闭结点)
rabbitmqctl -n rabbit-1 reset (清除历史数据)
rabbitmqctl -n rabbit-1 join_cluster rabbit-2@'vpn-servere'(加入集群)
rabbitmqctl -n rabbit-1 start_app (启动结点)
效果如下:
接下来要给主节点创建一个admin跟刚安装时候步骤类似(主服务器操作)
rabbitmqctl -n rabbit-2 add_user admin admin
rabbitmqctl -n rabbit-2 set_user_tags admin administrator
11、利用admin登录rabbit-2所在的网页端显示如下两个结点则一般集群搭建完成
12、此处同上刚安装的时候创建一个v_admin的virtualhost。并给admin相应访问权限。
13、查看集群状态(在主节点所在服务器238上执行):
rabbitmqctl -n rabbit-2 cluster_status
如图所示可以看到集群中有两个rabbitmq结点
14、设置镜像集群状态,在网页管理页面中配置策略如下图
(1)如图
(2)如下图
15、观察创建的queue有如下标志即配置成功
补充:ps -ef | grep rabbitmq | grep -v grep | awk '{print $2}' | xargs kill -9 可以用来杀死所有rabbitmq进程,如果在启动运行的时候发现rabbitmq已经在启动的话可以用此命令关闭。
安装HAProxy
在主节点所在服务器上238安装
1、安装
yum install haproxy
2、启动
haproxy
3、找到配置文件所在位置 可能会有两个,那就两个都修改
find / -name haproxy.cfg
我的文件所在位置/etc/haproxy/haproxy.cfg
4、vim直接把原文件内容修改为如下内容:<font color='red'> **记得将其中对应主从结点的ip地址替换为自己服务器的ip地址**! </font>
# Example configuration for a possible web application. See the
# full configuration options online.
#
# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the '-r' option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode tcp
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
#timeout http-request 10s
#timeout queue 1m
timeout connect 20
timeout client 1m
timeout server 1m
timeout http-keep-alive 20s
timeout check 20s
maxconn 3000
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
listen rabbitmq_cluster
bind 192.168.30.238:5673 #通过5673对m1和m2进行映射
option tcplog #记录TCP连接状态和时间
mode tcp #四层协议代理,即对TCP进行转发
option tcpka #开启TCP的Keep Alive(长连接模式)
timeout connect 10s #haproxy与mq建立连接的超时时间
timeout client 1m #客户端与haproxy最大空闲时间
timeout server 1m #服务器与haproxy最大空闲时间
balance roundrobin #采用轮询转发消息
#每5秒发送一次心跳包,如果连续两次有响应则代表状态良好
#如果连续3次没有响应,则视为服务故障,该节点将被剔除
server rabbit-2 192.168.30.238:5672 check inter 5s rise 2 fall 2
server rabbit-1 192.168.30.211:5672 check inter 5s rise 2 fall 2
#开启监控服务
listen stats
bind 192.168.30.238:8100 #监听端口
stats refresh 30s #每30秒刷新一次
mode http
stats enable
stats uri /rabbitmq-stats #统计页面uri
#统计页面用户名和密码
5、 启动haproxy命令如下
haproxy -f /etc/haproxy/haproxy.cfg
若此时启动报错如下图
则搜索server-key.pem文件和server-cert.pem文件,将两个文件中的内容合在一起如下图。两个文件都互相添加一下内容
5、再次启动
haproxy -f ./etc/haproxy/haproxy.cfg