Linux下RabbitMQ的集群
一、RabbitMQ安装
1.1、下载Erlang的rpm包
RabbitMQ是Erlang语言编写,所以Erang环境必须要有,注:Erlang环境一定要与RabbitMQ版本匹配:https://www.rabbitmq.com/which-erlang.html
Erlang下载地址:https://www.rabbitmq.com/releases/erlang/(根据自身需求及匹配关系,下载对应rpm包)
请一定要注意 erlang的版本要跟 rabbitmq的版本要对应一致,不然会出现各种异常的错误。
1.2、下载RabbitMQ的rpm包
RabbitMQ下载地址:https://www.rabbitmq.com/releases/rabbitmq-server/(根据自身需求及匹配关系,下载对应rpm包)
1.3、下载socat的rpm包
rabbitmq安装依赖于socat,所以需要下载socat。
socat下载地址:http://repo.iotti.biz/CentOS/6/x86_64/socat-1.7.3.2-1.el6.lux.x86_64.rpm
1.4、需要安装logrotate
yum -y install logrotate
1.5、分别安装Erlang、Socat、RabbitMQ(一定按照顺序!)
一定按照以下顺序安装:
[root@A ~]#rpm -ivh erlang-18.3-1.el6.x86_64.rpm [root@A ~]#rpm -ivh socat-1.7.3.2-1.el6.lux.x86_64.rpm [root@A ~]#rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
二、配置Rabbitmq
2.1、配置rabbitmq
如果仅仅是允许guest账号访问的话,则需要做以下操作:
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
2.2、启用web管理插件
[root@A ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
amqp_client
cowlib
cowboy
rabbitmq_web_dispatch
rabbitmq_management_agent
rabbitmq_management Applying plugin configuration to rabbit@bigdata-arch-client11... started 6 plugins.
2.3、启动RabbitMQ
[root@A ~]cd /var/lib/rabbitmq/ [root@A ~]chown -R rabbitmq:rabbitmq .erlang.cookie [root@A ~]cd /usr/lib/rabbitmq/bin [root@A ~]./rabbitmq-server start #centos 7.0=>/bin/systemctl start rabbitmq-server.service
访问浏览器:http://ip地址:15672/,出现以下界面说明安装完成!默认用户名和密码都是:guest
三、配置RabbitMQ的账号
1、创建账号
rabbitmqctl add_user 用户名 密码
[root@A ~]# rabbitmqctl add_user admin admin
Creating user "admin"
如想修改密码:
rabbitmqctl change_password 用户名 密码
[root@A ~]# rabbitmqctl change_password admin test.1234
Creating user "admin"
2、将admin账号赋予管理员权限
rabbitmqctl set_user_tags 用户名 administrator
[root@A ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator]
3、设置权限
rabbitmqctl set_permissions -p '/' 用户名'.' '.' '.'
[root@A ~]# rabbitmqctl set_permissions -p '/' admin '.' '.' '.'
Setting permissions for user "admin" in vhost "/"
四、配置RabbitMQ集群
前提:我们这里会展示如何配置一个RabbitMQ集群,要保证三台服务器的IP能通。而且特别强调的是三台机器的服务都要配置上hosts:
[root@A ~]vim /etc/hosts
10.55.202.181 rabbitmqserver01 #第1台机器的 ip地址 主机名
10.55.202.182 rabbitmqserver02 #第2台机器的 ip地址 主机名
10.55.202.183 rabbitmqserver03 #第3台机器的 ip地址 主机名
1、安装好RabbitMQ
安装方法请按照上文描述
2、保证相同的Erlang Cookie
我这里是把rabbitmqserver01上的.erlang.cookie以scp的方式拷贝到另外两台机器。(如果mq没有启动过是没有erlang.cookie的)
[root@rabbitmqserver01 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmqserver02:/var/lib/rabbitmq
[root@rabbitmqserver01 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmqserver03:/var/lib/rabbitmq
3、 运行各个RabbitMQ节点
#systemctl restart rabbitmq-server.service
#rabbitmqctl stop
#rabbitmq-server -detached
4、运行成功后可以查看一下节点当前的集群状态,当然这个时候还没有组成集群。
[root@rabbitmqserver01 ~]# rabbitmqctl cluster_status
[root@rabbitmqserver02 ~]# rabbitmqctl cluster_status
[root@rabbitmqserver03 ~]# rabbitmqctl cluster_status
5、将节点连接成群
rabbitmqserver02:加入到集群rabbit@rabbitmqserver01
[root@rabbitmqserver02 ~]#rabbitmqctl stop_app
[root@rabbitmqserver02 ~]#rabbitmqctl join_cluster --ram rabbit@rabbitmqserver01
[root@rabbitmqserver02 ~]#rabbitmqctl start_app
rabbitmqserver03: 加入到集群rabbit@rabbitmqserver02
[root@rabbitmqserver03 ~]#rabbitmqctl stop_app
[root@rabbitmqserver03 ~]#rabbitmqctl join_cluster --ram rabbit@rabbitmqserver01
[root@rabbitmqserver03 ~]#rabbitmqctl start_app
A:不用加入自己
查看集群状态,我们可以在任意一台机器上查看,我们选择在client09上看
[root@A ~]# rabbitmqctl cluster_status Cluster status of node rabbit@A
[{nodes,[{disc,[rabbit@rabbitmqserver01,rabbit@rabbitmqserver02,rabbit@rabbitmqserver03]}]},
{running_nodes,[rabbit@rabbitmqserver03,rabbit@rabbitmqserver02,rabbit@rabbitmqserver01]},
{cluster_name,<<"rabbit@rabbitmqserver01">>},
{partitions,[]},
{alarms,[{rabbit@rabbitmqserver03,[]},{rabbit@rabbitmqserver02,[]},{rabbit@rabbitmqserver01,[]}]}]
这边需要强调的是,三台机器中必须有一台是磁盘模式,可以允许三台都是磁盘模式。
rabbitmqctl join_cluster --ram rabbit@rabbitmqserver01 => --ram 表示是内存模式
rabbitmqctl join_cluster rabbit@rabbitmqserver01 => 表示是磁盘模式
如果要切换模式的话:
rabbitmqctl change_cluster_node_type {disc|ram}
可以看到,3个实例已经组成了集群:
如果想删除节点的话:
rabbitmqctl -n rabbit@shtw-rabbitmqserver01 forget_cluster_node rabbit@shtw-rabbitmqserver03
Linux下RabbitMQ的集群的更多相关文章
- Linux下搭建tomcat集群全记录(转)
本文将讲述如何在Linux下搭建tomcat集群,以及搭建过程中可能的遇到的问题和解决方法.为简单起见,本文演示搭建的集群只有两个tomact节点外加一个apache组成,三者将安装在同一机器上:ap ...
- linux下配置tomcat集群的负载均衡
linux下配置tomcat集群的负载均衡 一.首先了解下与集群相关的几个概念集群:集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台.在客户端看来,一个集群就象是一个服 ...
- Linux下搭建tomcat集群全记录
(转) Linux下搭建tomcat集群全记录 2011-10-12 10:23 6133人阅读 评论(1) 收藏 举报 tomcatlinuxapacheinterceptorsession集群 1 ...
- 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)
Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...
- 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)
Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...
- Linux下安装zookeeper集群
首先,准备三台Linux虚拟机 三台机器 centos01 :192.168.1.168(lxs001) centos03 :192.168.1.178(lxs003) centos03 :1 ...
- Linux下搭建mpi集群(ubuntu下用虚拟机测试)
一 建立SSH连接(无密码登陆) 1 SSH连接的简单介绍 SSH 为 Secure Shell 的缩写,中文翻译为安全外壳协议,建立在应用层,是一种远程连接安全协议.传统的telnet,pop,ft ...
- Linux 下配置zookeeper集群
我们首先准备三台服务器,IP地址分别如下(前提是要先安装JDK) 192.168.100.101 192.168.100.102 192.168.100.103 1.配置主机名到IP地址的映射(此步骤 ...
- 170711、Linux下搭建MySQL集群
一.MySQL集群简介 1.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(r ...
随机推荐
- 最简容器动手小实践——FC坦克大战游戏容器化
FC 经典力作相信大家一点也不陌生.童年时期最频繁的操作莫过于跳关,在 果断跳到最后一关之后,一般都是以惨败告终,所以还是一关一关的过原始积累才能笑到最后.这款游戏的经典就在于双人配合,守家吃装备.也 ...
- windows安装docker,快捷启动方式无法启动
1.在双击“Docker Quickstart Terminal”时弹出缺少快捷方式,截图如下 2.单机快捷方式查看属性,发现配置的git位置是有问题的 现在只需要把git的正确地址配置好就可以了 现 ...
- MyBatis整合Spring+SpringMVC搭建一个web项目(SSM框架)
本文讲解如何搭建一个SSM架构的web站点 [工具] IDEA.SqlYog.Maven [简述] 该项目由3个模块组成:dao(数据访问层).service(业务处理层).web(表现层) dao层 ...
- 将网站升级为https并自动续期Https证书。
Let's Encrypt Let's Encrypt 是一个由Internet Security Research Group (互联网安全研究组)提供的免费,自动化和开放的证书颁发机构. 它秉承着 ...
- 二、openfeign生成并调用客户端动态代理对象
所有文章 https://www.cnblogs.com/lay2017/p/11908715.html 正文 上一篇文章中,我们了解到了@FeignClient注解的接口被扫描到以后,会生成一个Fe ...
- 如何实现高性能的IO及其原理?
程序运行在内存以及IO的体现 首先普及一下常识,如图所示: 1.在整个内存空间中,跑着各种各样的程序,有Java程序.C程序,他们共用一块内存空间. 2.对于Java程序,JVM会申请一块堆空间,通过 ...
- RocketMQ问题
RocketMQ原理(4)——消息ACK机制及消费进度管理 RocketMQ消费者,设置setConsumeFromWhere无效的问题 MQ的CONSUME_FROM_LAST_OFFSET未生效 ...
- [LeetCode] 342. 4的幂 ☆(是否4 的幂)
描述 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16输出: true示例 2: 输入: 5输出: false 进阶:你能不使用循环或者递归 ...
- python中read()、readline()、readlines()区别
1.read([size])方法 read([size])方法从文件当前位置读取size个字节,若无参数size,则表示读取至文件结束位置,它范围为字符串对象 2.readline()方法 从字面 ...
- [dev][ipsec] 基于路由的VPrivateN
VPrivateN的配置分两个模式 1. 基于策略的VPrivateN ( policy based) 2. 基于路由的VPrivateN (route based) 以strongswan为例, 在 ...