文档章节

RabbitMQ(3)-单机与集群搭建

你我他有个梦
 你我他有个梦
发布于 2015/12/20 13:13
字数 1853
阅读 1619
收藏 3

一.windows下搭建单机RabbitMQ

RabbitMQ依赖于ErLang(面向并发的编程语言)

1.ErLang for windows 64 bit


下载最新版Erlanghttp://www.erlang.org/download.html,然后安装,设置环境变量

ERLANG_HOME=E:\erl7.1erlang安装位置)

添加到PATH:       ;% ERLANG_HOME%\bin

2.RabbitMQ for windows 64 bit


下载地址:http://www.rabbitmq.com/download.html

官网安装教程http://www.rabbitmq.com/install-windows.html

设置环境变量:RABBITMQ_SERVER=E:\RabbitMQ Server\rabbitmq_server-3.5.6rabbitmq服务安装位置)

添加到PATH     ;% RABBITMQ_SERVER%\sbin

3.测试RabbitMQ安装成功

命令行中运行rabbitmq-service,出现下面的界面证明配置成功



4.激活Rabbit MQ's Management Plugin

使用可视化的方式查看RabbitMQ的服务实例状态,激活方式:

 

进入% RABBITMQ_SERVER%\sbin目录,执行rabbitmq-plugins.bat enable rabbitmq_management

然后重启服务即可生效:net stop RabbitMQ  -->   net start RabbitMQ(不区分大小写)

访问http://localhost:15672  默认用户名密码都是guest

针对web管理界面,在overview视图最下方可以导出当前所有配置的json数据,也可以更改json文件,上传到web管理界面,刷新即可看到相关修改

二.ubuntu15.1搭建单机RabbitMQ

(可选的)为了避免未签名的错误信息,请使用apt-key命令将公钥添加到你的可信任密钥列表中:

wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc

sudo apt-key add rabbitmq-signing-key-public.asc

更新仓库:

apt-get update

安装服务:

sudo apt-get install rabbitmq-server

激活rabbitmq的管理插件

sudo rabbitmq-plugins enable rabbitmq_management

开启服务:

sudo rabbitmq-server

停止rabbitmq的服务:

sudo rabbitmqctl stop

查看其代理状态:

sudo rabbitmqctl status

测试Erlang是否安装成功:命令行下输入erl,可进入ErlangEshell模式

测试RabbitMQ,开启服务后访问http://localhost:15672


三.Centos6.5搭建单机RabbitMQ

1.ErLang搭建

前提是你的系统中需要有java编译环境,如果没有请自行安装

下载最新版erlang OTP18.1

 

wget http://www.erlang.org/download/otp_src_18.1.tar.gz

解压

tar -zxvf otp_src_18.1.tar.gz -C /

在编译前可能会遇到缺少依赖包的问题


*********************************************************************
********************** APPLICATIONS DISABLED **********************
*********************************************************************
crypto : No usable OpenSSL found
jinterface : Java compiler disabled by user
odbc : ODBC library - link check failed
orber : No C++ compiler found
ssh : No usable OpenSSL found
ssl : No usable OpenSSL found
*********************************************************************

可依次安装

yum -y install ncurses-devel

yum -y install openssl-devel

yum -y install unixODBC-devel

yum -y install gcc-c++

编译以及安装

mkdir /home/erlang

cd otp_src_18.1/

./configure --prefix=/home/erlang --without-javac

make && make install

配置环境变量:

vim /etc/profile

export ERLANG_HOME=

export PATH=$PATH:$ERLANG_HOME/bin

输入erl即可进入其shell模式

2.rabbitmq安装

下载最新版rabbitmq-server-3.5.6

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server-3.5.6.tar.gz

然后解压

tar -zxvf  rabbitmq-server-3.5.6.tar.gz -C /

编译前安装其依赖包,否则会报错:/bin/sh: xmlto: command not found

yum -y install xmlto

进行编译:

make

make install TARGET_DIR=/usr/rabbitmq SBIN_DIR=/usr/rabbitmq/sbin MAN_DIR=/usr/rabbitmq/man DOC_INSTALL_DIR=/usr/rabbitmq/doc

为了方便使用rabbitmq的相关启动等命令,将其配置到环境变量下

vim /etc/profile

export RABBITMQ_HOME=/usr/rabbitmq

export PATH=$PATH:$RABBITMQ_HOME/sbin

 

安装web插件管理界面:

mkdir /etc/rabbitmq

rabbitmq-plugins enable rabbitmq_management

启动   即可访问管理界面:

rabbitmq-server start

停止:

rabbitmqctl stop

四.Centos6.5搭建RabbitMQ集群

首先有四台机器,一台使用磁盘模式,另外两台使用内存模式,这三台的rabbitmq已经搭建好,然后下面进行集群的配置

1.服务器说明

前三台用于搭建rabbitmq集群,第四台用于提供对rabbitmq的负载均衡

192.168.111.128     liuzhaoqiang128

192.168.111.129     liuzhaoqiang129

192.168.111.130     liuzhaoqiang130

192.168.111.131     liuzhaoqiang131

2.erlang集群

rabbitmqctl首先会启动erlang节点,然后会从erlang分布式系统尝试连接RabbitMQ,而这时候需要erlang cookie和合适的节点名称,erlang节点通过交换作为秘密令牌的erlang cookie以获得认证,.erlang.cookie中存储的就是此令牌信息,所以集群所以erlang节点的erlang.cookie令牌信息必须一致

由于Rabbitmq的集群依赖erlang的集群,所以需要构建erlang集群,erlang集群之间是通过magic cookie实现的,这个cookie存放在$HOME/.erlang.cookie,随便选取一个节点的cookie复制到另外两个节点使三台保持一致

scp .erlang.cookie root@liuzhaoqiang129:/root

scp .erlang.cookie root@liuzhaoqiang130:/root

设置好之后即可重启rabbitmq

3.使用detached参数运行rabbitmq

在遇到增加或停止节点时这一步是必要的

root@liuzhaoqiang128#rabbitmqctl stop

root@liuzhaoqiang129#rabbitmqctl stop

root@liuzhaoqiang130#rabbitmqctl stop

 

root@liuzhaoqiang128#rabbitmq-server detached

root@liuzhaoqiang129# rabbitmq-server detached

root@liuzhaoqiang130# rabbitmq-server detached

可以查看每个节点上的集群信息:

rabbitmqctl cluster_status

4.节点连接

liuzhaoqiang129liuzhaoqiang130作为内存节点与liuzhaoqiang128连接起来,分别在两台内存节点上执行以下命令

rabbitmqctl stop_app

rabbitmqctl join_cluster --ram rabbit@liuzhaoqiang128

rabbitmqctl start_app

其中--ram代表是内存节点,如果希望是磁盘节点则不用加--ram,在rabbitmq集群中,至少需要一个磁盘节点

然后可以使用localhost:15672即可访问,可以查看到三台节点的信息

5.镜像模式

上面搭建的仅仅是普通集群,虽然交换机、绑定等可以复制到集群的其他节点,但是队列内容不会复制,如果队列宕机将会导致队列无法使用,不能保证队列的高可用性。


更多详情:http://my.oschina.net/moooofly/blog/94113

6.增加负载均衡器

会监听5672端口,轮询每个内存节点

安装haproxy

yum -y install haproxy

修改/etc/haproxy/haproxy.cfg文件

# round robin balancing between the various backends

#---------------------------------------------------------------------

listen rabbitmq_cluster 192.168.111.131:5670

mode tcp

    balance     roundrobin

    server  rqslave1 192.168.111.129:5672 check inter 2000 rise 2 fall 3

    server  rqslave2 192.168.111.130:5672 check inter 2000 rise 2 fall 3

    server  rqmaster 192.168.111.128:5672 check inter 2000 rise 2 fall 3

参数说明:

check inter:每隔两秒进行健康检测

rise:服务器被确认2次为可正常工作

fall:失败三次不可用

所以当某台节点宕机,而正在发送消息,会经过6秒(check inter*fall)连接到其他节点重新发送

7.设置镜像队列策略

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

将所有队列设置为镜像队列,队列会被复制到各个节点,状态保持一致

rabbitmqctl set_policy -p newvhost ha-allqueue"^rqmessage" '{"ha-mode":"all"}'

这行命令在vhost名称为newvhost创建了一个策略,策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称。

更多介绍在http://www.rabbitmq.com/man/rabbitmqctl.1.man.html

8.haproxy监控

haproxy.cfg配置文件中

listen rabbitmq_cluster 0.0.0.0:5670上面增加下列内容

listen monitoring_stats                        //自定义listener

        bind *:8100

        mode    http

        option  httplog

        stats enable

        stats  uri  /stats                  //访问的uri   ip:8100/stats

        stats auth admin:admin          //客户端连接需要认证用户名和密码

       #stats hide-version

        stats admin if TRUE             //管理界面,如果认证成功了,可通过webui管理节点

        stats  refresh  5s                //统计页面自动刷新时间

将默认的负载均衡选项删除:

backend static

    balance     roundrobin

    server      static 127.0.0.1:4331 check

frontend  main *:5000

    acl url_static       path_beg       -i /static /images /javascript /stylesheets

    acl url_static       path_end       -i .jpg .gif .png .css .js


    use_backend static          if url_static


    default_backend             app

启动haproxyservice haproxy start

http://192.168.111.131:8100/stats访问监控界面

可以监控到整个集群状态,客户端在连接的时候可以访问131这台主机5670端口,并且使用认证用户名和密码既可以通过haproxy访问其他几台rabbitmq服务器,作负载均衡以及故障转移操作




 


© 著作权归作者所有

你我他有个梦

你我他有个梦

粉丝 96
博文 130
码字总数 109764
作品 0
通州
程序员
私信 提问
使用 Docker 部署 RabbitMQ 集群

🏷 基础环境 虚拟机:node1 / node2 / node3 集群:docker swarm,node1 为 manager 节点,node2 / node3 为 worker 节点 集群搭建可参考:Docker Swarm 入门:单机创建 Swarm 集群 🏷 ...

Anoyi
04/11
0
0
rabbitmq 集群搭建方法

RabbitMQ集群搭建方法 这里展示的是多机集群的部署,如果机器受限,可以选择单机集群部署,详细可以参考《RabbitMQ单机多实例配置》。 这里选用三台主机,主机名分别是hidden1, hidden2, hid...

sktj
2018/11/01
0
0
Rabbitmq集群(单机多实例)

Rabbitmq集群 Distributed Rabbitmq brokers的实现方式有三种,分别是clustering、federation、shovel。本节围绕clustering(集群)讲述。 搭建rabbitmq集群要求: 可靠的网络环境; 集群中所...

阿dai
2018/07/11
833
0
rabbitmq单机多实例集群搭建

1.安装单机版的 2.要搭建集群,先将之前单机版中历史记录干掉,删除rabbitmq /var/lib/rabbitmq/mnesia下的所有内容。 3.启动3个实例 #因为我配置了web管理插件,所以还要指定其web插件占用的端...

watermelon11
02/18
29
0
Docker下RabbitMQ三部曲之一:极速体验(单机和集群)

从本章开始,我们一起在Docker环境实战RabbitMQ环境部署和对应的Java开发,当前是《Docker下RabbitMQ三部曲》系列的第一篇,整个三部曲由以下三篇文章组成: 1. 第一篇,即本章,我们用最快的...

boling_cavalry
2018/05/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用原生css+js+html实现打印A4纸张的功能页面

有时候我们需要使用html+css实现打印A4纸张的功能页面,以下代码实现 <!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatibl......

b0cloud
18分钟前
2
0
读组件化之MGJRouter源码第二次的收获与思考

上一次我们写好了一个自定义的 路由类 ,然后我们来制作自己的 库 ,可以用来被 pod 引入 : 库的制作参考:https://www.jianshu.com/p/928d2ab053be 以下是我创建的: 利用上篇提到的 ,组件...

T型人才追梦者
20分钟前
1
0
spring cache、ehcache的使用及集成

项目中需要加缓存,故学习了 1、spring cache、ehcache的使用及集成 2、缓存的命中率等统计数据 一、spring cache 1、概述 Spring 3.1 引入了基于注解(annotation)的缓存(cache)技术 2、...

qkKing
21分钟前
3
0
Windows 10上源码编译Poco并编写httpserver和tcpserver | compile and install poco cpp library on windows

本文首发于个人博客https://kezunlin.me/post/9587bb47/,欢迎阅读! compile and install poco cpp library on windows Series guide to compile and install poco cpp library on windows g......

kezunlin
22分钟前
2
0
if-else-if-else与switch的区别

if-else-if-else: 适合分支较少 判断条件类型不单一 支持取 boolean 类型的所有运算 满足条件即停止对后续分支语句的执行 switch: 适合分支较多 判断条件类型单一,JDK 1.7 之前仅支持 in...

ConstXiong
22分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部