文档章节

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

你我他有个梦
 你我他有个梦
发布于 2015/12/20 13:13
字数 1853
阅读 1437
收藏 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
博文 110
码字总数 98858
作品 0
昌平
程序员
私信 提问
Rabbitmq集群(单机多实例)

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

阿dai
07/11
0
0
Docker下RabbitMQ三部曲之一:极速体验(单机和集群)

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

boling_cavalry
05/12
0
0
消息中间件—RabbitMQ(集群原理与搭建篇)

摘要:实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理 一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试...

癫狂侠
05/25
0
0
Docker下RabbitMQ四部曲之二:细说RabbitMQ镜像制作

本章是《Docker下RabbitMQ四部曲》系列的第二篇,将详细简述Docker下制作RabbitMQ镜像的技术细节,包括以下内容: 1. 列举制作RabbitMQ镜像时用到的所有材料; 2. 编写Dockerfile; 3. 编写容...

boling_cavalry
05/13
0
0
rabbitmq集群部署及配置 

rabbitmq集群部署及配置 消息中间件rabbitmq,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息异步。本篇将以rabbitmq+HA方式进行部署。 一、原理介绍 rabbitmq是依据...

DemonsI
08/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

腾讯与Github的魔幻会面背后的故事…

10月22日,腾讯开源管理办公室有幸邀请到Github新晋CEO Nat Friedman,前来鹅厂参观交流。目前腾讯已经有近70个项目在Github上开源,共获得17w stars,世界排名11位。Github是腾讯开源的主阵...

腾讯开源
24分钟前
1
0
单例模式

单例模式(Singleton pattern)属于创建型设计模式。 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对...

NinjaFrog
29分钟前
0
0
TypeScript基础入门之装饰器(三)

转载 TypeScript基础入门之装饰器(三) 继续上篇文章[TypeScript基础入门之装饰器(二)] 访问器装饰器 Accessor Decorator在访问器声明之前声明。 访问器装饰器应用于访问器的属性描述符,可用...

durban
46分钟前
2
0
spring5调研学习(转载)

Spring框架的新功能 这一章主要提供Spring框架新的功能和变更。 升级到新版本的框架可以参考。Spring git。 内容列表 Spring 5.x框架新的功能 Spring 4.x框架新的功能 Spring 3.x框架新的功能...

小海bug
57分钟前
2
0
为何Spring框架能这么流行?

想要学习更多关于Spring框架在Java开发者中如此流行?看这篇文章可以学到更多! Spring框架特性 Spring是用于应用开发中的一款强大,轻量级框架。更广泛地说,你可以认为Spring框架是一个定义...

java知识分子
59分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部