ubuntu 14.04 rabbitmq集群部署
1.准备机器,我这边准备的是三台ubuntu14.04
机器主机名不能相同,不然节点冲突
2.安装rabbitmq
3.修改hosts文件
root@abc-web-04:~# vim /etc/hosts
192.168.1.100 abc-web-04
192.168.1.101 abc-web-05
192.168.1.102 abc-web-06
4.安装 erlang
sudo apt-get install erlang
5.修改 .erlang.cookie 文件 ,确保每一台机器的.erlang.cookie 内容(一个字符串)一样 ;如果是通过源安装RabbitMQ的话,Erlang Cookie 文件在/var/lib/rabbitmq/.erlang.cookie。如果是通过源码安装的RabbitMQ,Erlang Cookie文件$HOME/.erlang.cookie,我是通过源安装的所以直接修改 /var/lib/rabbitmq/.erlang.cookie,
由于未知各个机器的root账户密码,复制文件无法实现,因此记录第一台机器的.erlang.cookie内容,再每一台机器上修改 /var/lib/rabbitmq/.erlang.cookie文件把值设置为同一个字符串
vim /var/lib/rabbitmq/.erlang.cookie
6.使用detached参数,在后台启动rabbit node,要先停止现有的Rabbitmq-server,再重新在后台支行, 遇到关闭错误请确认.erlang.cookie的权限,或用命令 ps aux|grep epmd 和 ps aux|grep erl 找出相关进程 kill 掉他们,启动成功后通过命令 rabbitmqctl cluster_status查看各个节点的状态
root@abc-web-04:~# rabbitmqctl stop
Stopping and halting node 'rabbit@abc-web-04' ...
...done.
root@abc-web-04:~# rabbitmq-server -detached
Warning: PID file not written; -detached was passed.
root@abc-web-04:~# rabbitmqctl cluster_status
Cluster status of node 'rabbit@abc-web-04' ...
[{nodes,[{disc,['rabbit@abc-web-04']}]},
{running_nodes,['rabbit@abc-web-04']},
{partitions,[]}]
...done.
7. 将各个机器节点 组成集群,其他机器只要和其中一台机器组成集群,那么其他机器之间也间接组成了集群连接
经测试,磁盘节点达到3台时就不能继续添加节点了,会分成两个2*2的集群, 需要把磁盘节点变成内存节点后可以继续添加
root@abc-web-05:~# rabbitmqctl stop_app
Stopping node 'rabbit@abc-web-05' ...
...done.
root@abc-web-05:~# rabbitmqctl join_cluster rabbit@abc-web-04
Clustering node 'rabbit@abc-web-05' with 'rabbit@abc-web-04' ...
...done.
8.查看各个节点集群状态
root@abc-web-05:~# rabbitmqctl cluster_status
Cluster status of node 'rabbit@abc-web-05' ...
[{nodes,[{disc,['rabbit@abc-web-04','rabbit@abc-web-05',
'rabbit@abc-web-06']}]},
{running_nodes,['rabbit@abc-web-04','rabbit@abc-web-06','rabbit@abc-web-05']},
{partitions,[]}]
...done.
集群配置好后,可以在 RabbitMQ 任意节点上执行 rabbitmqctl cluster_status 来查看是否集群配置成功。
9.变更节点类型 disc / ram 这里设置的是两台ram 一台disc
rabbitmqctl change_cluster_node_type disc
10.添加虚拟主机 vhost
rabbitmqctl add_vhost hrsystem
11.为虚拟主机设置策略
rabbitmqctl set_policy -p hrsystem ha-allqueue "^" '{"ha-mode":"all"}'
rabbitmqctl set_policy -p / ha-allqueue "^" '{"ha-mode":"all"}' //默认配置
这行命令在vhost名称为hrsystem创建了一个策略,策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称
12.设置集群名称 (经测试,set_cluster_name 命令不存在 原因未知 )
rabbitmqctl set_cluster_name abccluster
13. 安装 haproxy
sudo apt-cache showpkg haproxy
14.配置 https://www.cnblogs.com/lion.net/p/5725474.html
资料源自网络
ubuntu 14.04 rabbitmq集群部署的更多相关文章
- Ubuntu 14.04 上使用 Nginx 部署 Laravel
本教程将会涉及以下工具: Ubuntu 14.04 LTS PHP 5.5 MySQL Laravel 5.0 Nginx 参考文章:Ubuntu 14.04 上使用 Nginx 部署 Laravel ...
- Centos6.9下RabbitMQ集群部署记录
之前简单介绍了CentOS下单机部署RabbltMQ环境的操作记录,下面详细说下RabbitMQ集群知识,RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言, ...
- openstack(2) -------RabbitMQ集群部署
一.RabbitMQ简介 RabbitMQ属于一个流行的开源消息队列系统.属于AMQP( 高级消息队列协议 ) 标准的一个 实现.是应用层协议的一个开放标准,为面向消息的中间件设计.用于在分布式系统中 ...
- rabbitMQ集群部署以及集群之间同步
MQ集群部署 期待的部署架构 其中,一个机房有两台机器部署MQ,并组成集群,有一个机房的MQ集群作为中心集群,其他机房的MQ集群将消息同步到中心MQ集群中. 安装erlang,略.. 安装rabbit ...
- rabbitmq集群部署及配置
消息中间件rabbitmq,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息异步.本篇将以rabbitmq+HA方式进行部署. 一.原理介绍 rabbitmq是依据erlang的分 ...
- 160328、rabbitMQ集群部署示例
环境:Centos 6.5 x86_64MQ网址:http://www.rabbitmq.com/SERVER101\SERVER102 SERVER103 一.单节点安装 #yum install ...
- RabbitMQ集群部署、高可用和持久化
RabbitMQ 安装和使用 1.安装依赖环境 在 http://www.rabbitmq.com/which-erlang.html 页面查看安装rabbitmq需要安装erlang对应的版本 在 ...
- 私有云Rabbitmq 集群部署
默认openstack使用rabbitmq做信息队列,如果想要是云高可用,那么需要对每个涉及的组件都进行高可用配置,本文介绍如何使用rabbitmq 做高可用 高可用方法 通过 Erlang 的分布式 ...
- openstack——Rabbitmq集群部署
一.前期准备 1.条件:准备3台Linux系统虚拟机,保持系统版本一致,确保配置好yum源,及网络源 2.3台虚拟机做静态解析 [root@yun1 ~]# cat /etc/hosts 12 ...
随机推荐
- Java8 Lambda表达式原理扫盲
背景 在使用Lamdba表达式,一直以为是内部类的方式实现的,但是一想如果每次调用都实例化一个内部类,性能肯定不好,难道Java里的lambda表达式真的是这么实现的吗?也许是该研究下原理了. 正文 ...
- C# 解析torrent文件
基础知识: torrent文件信息存储格式: bencoding是一种以简洁格式指定和组织数据的方法.支持下列类型:字节串.整数.列表和字典. 1 字符串存储格式: <字符串的长度>:& ...
- Python2.7与3.6的一些区别
2.7实现了一部分3的功能, 更早版本可能会稍稍涉及一点 首先是关键字的差别 python3.6 import keyword print(keyword.kwlist) ['False', 'Non ...
- PHP提取页面第一张图为缩略图的代码
<?php $p = '/<img.*?src=[\'|\"](.+?)[\'|\"].*?>/i'; preg_match_all($p,$str,$match ...
- JavaScript 变量声明:var、let、const
1. 概述 1.1 说明 在ES5 声明变量的方法:var命令和function命令. 在ES6 声明变量的方法:var命令.function命令.let命令.const命令.import命令.cla ...
- 【转】Python——plot可视化数据,作业8
Python——plot可视化数据,作业8(python programming) subject1k和subject1v的形状相同 # -*- coding: utf-8 -*- import sc ...
- iframe 加form提交数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 基于spark-streaming实时推荐系统
基于spark-streaming实时推荐系统(一) 基于spark-streaming实时推荐系统( 二) 基于spark-streaming实时推荐系统(三)
- 如何选择 Apache Tomcat 与 JDK 版本
Apache Tomcat Version
- 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
1. 数据库有六大约束 主键(primary key) 外键(foreign key):被参照的键必须有唯一约束或是主键 非空(not null) 默认(default) 检查(check):orac ...