一、前期准备

  1.条件:准备3台Linux系统虚拟机,保持系统版本一致,确保配置好yum源,及网络源

     2.3台虚拟机做静态解析

[root@yun1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.127.135 yun1
192.168.127.136 yun2
192.168.127.137 yun3
192.168.127.138 yun4

  3.设置无密钥登陆

  4.配置防火墙规则

  • 将INPUT规则链设置为只允许指定网段的主机访问本机的rabbitmq服务监听端口5672,rabbitmq的web监听端口15672,拒绝来自其他所有主机的流量:
iptables -I INPUT -s 192.168.127.0/ -p tcp --dport  -j ACCEPT
iptables -I INPUT -s 192.168.127.0/ -p tcp --dport -j ACCEPT
iptables -A INPUT -p tcp --dport -j REJECT
iptables -A INPUT -p tcp --dport -j REJECT

二、安装过程

  • 所有node虚拟机安装rabbitmq和erlang软件包
yum install -y erlang rabbitmq-server.noarch
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
systemctl status rabbitmq-server.service
  • 查看监听端口5672
[root@yun1 ~]# netstat -lantp | grep 
  • rabbitmq配置文件
vim /etc/rabbitmq/rabbitmq.config
  • node1:修改guest密码为admin(默认用户为:guest 密码为:guest)
[root@yun1 ~]# rabbitmqctl change_password guest admin
Changing password for user "guest" ...
  • node1:添加一个openstack的用户,并设置密码为admin。并设置权限和成为管理员
[root@yun1 ~]# rabbitmqctl add_user openstack admin
Creating user "openstack" ...
[root@yun1 ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
[root@yun1 ~]# rabbitmqctl set_user_tags openstack administrator
Setting tags for user "openstack" to [administrator] ...
  • node1:编辑rabbitmq变量文件
RABBITMQ_NODE_PORT=
ulimit -S -n
RABBITMQ_SERVER_ERL_ARGS="+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]"
RABBITMQ_NODE_IP_ADDRESS=192.168.127.135
  • node1:将rabbitmq变量文件拷贝到其他两个节点,之后并修改相应节点的ip
"/etc/rabbitmq/rabbitmq-env.conf" 4L, 286C 已写入
[root@yun1 ~]# scp /etc/rabbitmq/rabbitmq-env.conf yun2:/etc/rabbitmq/
rabbitmq-env.conf % .3KB/s :
[root@yun1 ~]# scp /etc/rabbitmq/rabbitmq-env.conf yun3:/etc/rabbitmq/
rabbitmq-env.conf
  • 查看rabbitmq插件
[root@yun1 ~]# /usr/lib/rabbitmq/bin/rabbitmq-plugins list
  • 所有node开启rabbitmq的web管理页面
rabbitmq-plugins enable rabbitmq_management
systemctl restart rabbitmq-server.service
systemctl status rabbitmq-server.service
  • node1发送缓存文件erlang.cookie到其他节点配置集群
[root@yun2 ~]# rabbitmqctl cluster_status   #查看rabbitmq的状态
Cluster status of node rabbit@yun2 ...
[{nodes,[{disc,[rabbit@yun2]}]},
{running_nodes,[rabbit@yun2]},
{cluster_name,<<"rabbit@yun2">>},
{partitions,[]},
{alarms,[{rabbit@yun2,[]}]}]
[root@yun1 ~]# cat /var/lib/rabbitmq/.erlang.cookie
IRWFJQZPVRHYOTK
[root@yun1 ~]# scp /var/lib/rabbitmq/.erlang.cookie yun2:/var/lib/rabbitmq/.erlang.cookie
.erlang.cookie % .0KB/s :
[root@yun1 ~]# scp /var/lib/rabbitmq/.erlang.cookie yun3:/var/lib/rabbitmq/.erlang.cookie
.erlang.cookie
  • node2和node3停止应用,并以ram的方式加入node1节点,之后重启应用
[root@yun3 ~]# systemctl restart rabbitmq-server.service

[root@yun3 ~]# rabbitmqctl stop_app
Stopping node rabbit@yun3 .. [root@yun3 ~]# rabbitmqctl join_cluster --ram rabbit@yun1
Clustering node rabbit@yun3 with rabbit@yun1 ...
Error: unable to connect to nodes [rabbit@yun1]: nodedown DIAGNOSTICS
=========== attempted to contact: [rabbit@yun1] rabbit@yun1:
* unable to connect to epmd (port ) on yun1: address (cannot connect to host/port) current node details:
- node name: 'rabbitmq-cli-25@yun3'
- home dir: /var/lib/rabbitmq
- cookie hash: wCM6VjtONuseC1mVH1gL4A== [root@yun2 ~]# rabbitmqctl start_app
Starting node rabbit@yun2 ...
  • node1检查集群状态
[root@yun1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@yun1 ...
[{nodes,[{disc,[rabbit@yun1]},{ram,[rabbit@yun3,rabbit@yun2]}]},
{running_nodes,[rabbit@yun3,rabbit@yun2,rabbit@yun1]},
{cluster_name,<<"rabbit@yun1">>},
{partitions,[]},
{alarms,[{rabbit@yun3,[]},{rabbit@yun2,[]},{rabbit@yun1,[]}]}]
  • 登陆验证
http://192.168.127.135:15672/

注意:

  1. 保证集群中至少有一个磁盘类型的节点以防止数据丢失,在更改节点类型时尤其要注意。
  2. 若整个集群被停掉了,应保证最后一个down掉的节点被最先启动,若不能则要使用forget_cluster_node命令将其移除集群。
  3. 若集群节点中几乎同时以不可控的方式down了此时在其中一个节点使用forter_boot命令重启节点。  

openstack——Rabbitmq集群部署的更多相关文章

  1. Centos6.9下RabbitMQ集群部署记录

    之前简单介绍了CentOS下单机部署RabbltMQ环境的操作记录,下面详细说下RabbitMQ集群知识,RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言, ...

  2. openstack(2) -------RabbitMQ集群部署

    一.RabbitMQ简介 RabbitMQ属于一个流行的开源消息队列系统.属于AMQP( 高级消息队列协议 ) 标准的一个 实现.是应用层协议的一个开放标准,为面向消息的中间件设计.用于在分布式系统中 ...

  3. rabbitMQ集群部署以及集群之间同步

    MQ集群部署 期待的部署架构 其中,一个机房有两台机器部署MQ,并组成集群,有一个机房的MQ集群作为中心集群,其他机房的MQ集群将消息同步到中心MQ集群中. 安装erlang,略.. 安装rabbit ...

  4. OpenStack Swift集群部署流程与简单使用

    之前介绍了<OpenStack Swift All In One安装部署流程与简单使用>,那么接下来就说一说Swift集群部署吧. 1. 简介 本文档详细描述了使用两台PC部署一个小型Sw ...

  5. 私有云Rabbitmq 集群部署

    默认openstack使用rabbitmq做信息队列,如果想要是云高可用,那么需要对每个涉及的组件都进行高可用配置,本文介绍如何使用rabbitmq 做高可用 高可用方法 通过 Erlang 的分布式 ...

  6. rabbitmq集群部署及配置

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

  7. 160328、rabbitMQ集群部署示例

    环境:Centos 6.5 x86_64MQ网址:http://www.rabbitmq.com/SERVER101\SERVER102 SERVER103 一.单节点安装 #yum install ...

  8. RabbitMQ集群部署、高可用和持久化

    RabbitMQ 安装和使用 1.安装依赖环境 在 http://www.rabbitmq.com/which-erlang.html 页面查看安装rabbitmq需要安装erlang对应的版本 在 ...

  9. ubuntu 14.04 rabbitmq集群部署

    1.准备机器,我这边准备的是三台ubuntu14.04 机器主机名不能相同,不然节点冲突 2.安装rabbitmq 3.修改hosts文件 root@abc-web-04:~# vim /etc/ho ...

随机推荐

  1. 干货 | 以太坊Mist负责人教你建立无服务器应用

    作者:Alex Van de Sande译者:王建/蔡佳慧译者介绍: 王建:万云平台区块链技术专家,拥有多年应用系统架构经验,目前在区块链落地方面进行积极探索 蔡佳慧:万云平台实习生,区块链技术爱好者 ...

  2. 设置pycharm环境下python内存

    有的时候在pycharm下的python需要加载很大的内存,那我们如何去修改pycharm的环境的内存呢?? 第一个栈内存,第二是堆内存.

  3. Cogs 1688. [ZJOI2008]树的统计Count(树链剖分+线段树||LCT)

    [ZJOI2008]树的统计Count ★★★ 输入文件:bzoj_1036.in 输出文件:bzoj_1036.out 简单对比 时间限制:5 s 内存限制:162 MB [题目描述] 一棵树上有n ...

  4. Cocos Creator中按钮组件数组的使用

    Cocos Creator游戏开发中经常使用到按钮,特别是大量按钮的情况,此时使用数组来管理这些按钮就显得更具通用性.我大致走了一下官方的示例,好像没有发现有这个小内容(或者有,但我却是没有找到),于 ...

  5. Django基础之form表单

    1. form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时, 我们在好多场景下都需要对用户的输入做校验, 比如 ...

  6. [dos]切换工作目录

    dos切换目录: 最快速的方法: cd /d D:\your\heart 常规步骤: 1. d:  先必须切换盘符 2. cd D:\your\heart,其次切换工作目录

  7. ARTS打卡计划第十六周

    Algorithms: https://leetcode-cn.com/problems/min-stack/submissions// Review: https://www.infoq.cn/ar ...

  8. IntelliJ IDEA 2017 上传本地项目至码云

    码云免费还挺好用,和Git类似.首先需要注册一个码云.这个就不介绍了. 点击加号,新建一个项目. 填写项目名称.  复制一下你的项目地址.  如图勾选.将项目至于git管理. 首先commit.快捷按 ...

  9. 搬运 centos7.2 apache 绑定二级目录 访问依然是apache页面

    <VirtualHost *:80>ServerName xx.comDocumentRoot /var/www/html/xx</VirtualHost>

  10. curl_setopt(ch, option, value)函数上传文件

    bool curl_setopt ( resource $ch , int $option , mixed $value ) 为给定的cURL会话句柄设置一个选项 详细介绍请到:http://www. ...