安装环境

Centos-7

三台虚拟机

192.168.8.150(磁盘节点)
192.168.8.45 (内存节点)
192.168.8.40 (内存节点)

一、安装Erlang

1、erlang 下载地址:

http://www.rabbitmq.com/releases/erlang/

2、创建目录
[root@nogeek ]# mkdir -p /usr/local/tools/rabbitmq
[root@nogeek ]# cd /usr/local/tools/rabbitmq
3、下载安装包
[root@nogeek ]# wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el6.x86_64.rpm
4、安装
[root@nogeek ]# rpm -ivh erlang-19.0.4-1.el6.x86_64.rpm

二、安装RabbitMQ

1、rabbitMQ 下载地址

https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/

2、下载安装包

[root@nogeek ]# wget https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.12-1.el6.noarch.rpm
[root@nogeek ]# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

3、安装

[root@nogeek ]#  rpm -ivh rabbitmq-server-3.6.12-1.el6.noarch.rpm

问题解决

1、错误:依赖检测失败:

socat 被 rabbitmq-server-3.6.12-1.el6.noarch 需要

解决报错:
[root@nogeek ]#  wget –no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo
[root@nogeek ]# yum makecache -y
[root@nogeek ]# yum install socat -y
2、如果yum源有问题,无法安装:将CentOS的yum源更换为国内的阿里云源

使用yum时File contains no section headers.解决办法

http://xiaojingjing.iteye.com/blog/2393165

[root@nogeek ]#  rm -f /etc/yum.repos.d/*
[root@nogeek ]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@nogeek ]# yum clean all

三、集群配置

1、hosts配置

三台机器的hosts都配置

[root@nogeek ]# vim /etc/hosts
192.168.8.150 rabbit1 (磁盘节点)
192.168.8.45 rabbit2(内存节点)
192.168.8.40 rabbit3(内存节点)

2、同步.erlang.cookie

保持三台机器的.erlang.cookie同步

/var/lib/rabbitmq/.erlang.cookie

在第二台机器8.45执行:

[root@nogeek ]# scp .erlang.cookie root@192.168.8.45:/var/lib/rabbitmq/
[root@nogeek ]# chown rabbitmq:rabbitmq .erlang.cookie

在第三台机器8.40执行:

[root@nogeek ]# scp .erlang.cookie root@192.168.8.40:/var/lib/rabbitmq/
[root@nogeek ]# chown rabbitmq:rabbitmq .erlang.cookie

重启服务

[root@nogeek ]# systemctl stop rabbitmq-server.service
[root@nogeek ]# systemctl start rabbitmq-server.service

或:

[root@nogeek ]# systemctl restart rabbitmq-server.service

查看服务状态:

[root@nogeek ]# systemctl status rabbitmq-server.service

如果启动报错:

Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.

如果是因为服务停不掉,就要kill 端口。

3、加入集群

首先开放集群通信端口:

[root@nogeek ]# firewall-cmd --permanent --add-port={5672/tcp,4369/tcp,25672/tcp}
[root@nogeek ]# firewall-cmd --reload
[root@nogeek ]# setsebool -P nis_enabled 1

在第二台45,第三台机,40上执行:

[root@nogeek ]# rabbitmqctl stop_app
[root@nogeek ]# rabbitmqctl reset
[root@nogeek ]# rabbitmqctl join_cluster rabbit@rabbit1 --ram

创建用户:三台服务器都执行

 [root@nogeek ]# firewall-cmd --permanent --add-port=15672/tcp
[root@nogeek ]# firewall-cmd –-reload
[root@nogeek ]# rabbitmqctl add_user admin admin
[root@nogeek ]# rabbitmqctl set_user_tags admin administrator
[root@nogeek ]# rabbitmqctl set_permissions -p / admin "." "." ".*"

4、

RabbitMQ镜像队列

可以参考:

https://www.cnblogs.com/saneri/p/7798251.html

5、HAProxy + Keepalived 高可用方案

一、HAProxy

将5672端口映射为5673端口,15672端口映射为15673端口。

1)在两个内存节点上安装HAProxy

 [root@nogeek ]#  yum install haproxy

2)编辑配置文件

 [root@nogeek ]# vim /etc/haproxy/haproxy.cfg

内容修改为:

global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats defaults
log global
option dontlognull
option redispatch
retries 3
timeout connect 10s
timeout client 1m
timeout server 1m
maxconn 3000 listen http_front
mode http
bind 0.0.0.0:1080 #监听端口
stats refresh 30s #统计页面自动刷新时间
stats uri /haproxy?stats #统计页面url
stats realm Haproxy Manager #统计页面密码框上提示文本
stats auth admin:123456 #统计页面用户名和密码设置 listen rabbitmq_admin
bind 0.0.0.0:15673
server node1 192.168.8.40:15672
server node2 192.168.8.45:15672 listen rabbitmq_cluster 0.0.0.0:5673
mode tcp
balance roundrobin
timeout client 3h
timeout server 3h
timeout connect 3h
server node1 192.168.8.40:5672 check inter 5s rise 2 fall 3
server node2 192.168.8.45:5672 check inter 5s rise 2 fall 3

3)启动HAProxy

 [root@nogeek ]# haproxy -f /etc/haproxy/haproxy.cfg

二、在两个内存节点上安装Keepalived

VIP 为 192.168.8.201

1)安装Keepalived

 [root@nogeek ]# yum -y install keepalived

2)修改配置文件

 [root@nogeek ]# vim /etc/keepalived/keepalived.conf

内容改成(物理网卡和当前主机IP要修改):

global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict # 注释掉,不然访问不到VIP
vrrp_garp_interval 0
vrrp_gna_interval 0
}
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict # 注释掉,不然访问不到VIP
vrrp_garp_interval 0
vrrp_gna_interval 0
} # 检测任务
vrrp_script check_haproxy {
# 检测HAProxy脚本
script "/etc/keepalived/script/check_haproxy.sh"
# 每隔两秒检测
interval 2
# 权重
weight 2
} # 虚拟组
vrrp_instance haproxy {
state MASTER # 此处为`主`,备机是 `BACKUP`【此处要修改】
interface ens33 # 物理网卡,根据情况而定 【此处要修改】
mcast_src_ip 192.168.8.40 # 当前主机ip 【此处要修改】
virtual_router_id 51 # 虚拟路由id,同一个组内需要相同
priority 100 # 主机的优先权要比备机高
advert_int 1 # 心跳检查频率,单位:秒
authentication { # 认证,组内的要相同
auth_type PASS
auth_pass 1111
}
# 调用脚本
track_script {
check_haproxy
}
# 虚拟ip,多个换行
virtual_ipaddress {
192.168.8.201
}
}

3)启动keepalived

[root@nogeek ]# keepalived -D

来源于: https://javaguide.net

微信公众号:不止极客

百万架构师第三十七课:RabbitMq:高可用集群搭建步骤|JavaGuide的更多相关文章

  1. RabbitMQ 高可用集群搭建及电商平台使用经验总结

    面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue policy设置 两个不错的RabbitMQ p ...

  2. RabbitMQ 高可用集群搭建

    面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue policy设置 两个不错的RabbitMQ p ...

  3. RabbitMQ高级指南:从配置、使用到高可用集群搭建

    本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...

  4. Linux源码安装RabbitMQ高可用集群

    1.环境说明 linux版本:CentOS Linux release 7.9.2009 erlang版本:erlang-24.0 rabbitmq版本:rabbitmq_server-3.9.13 ...

  5. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  6. RabbitMQ学习系列(六): RabbitMQ 高可用集群

    前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/ca ...

  7. rabbitmq+haproxy+keepalived实现高可用集群搭建

    项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说). 搭建环境 CentOS7 64位 R ...

  8. [Open Source] RabbitMQ 高可用集群方案

    简介 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模式.镜像模式 Rabb ...

  9. docker下rabbitMQ高可用集群部署

    第一步:docker 安装: mac 下安装命令: brew cask install docker 安装完之后查看版本 docker --version 第二步:开始集群搭建: 采用bijukunj ...

  10. RabbitMQ高可用集群配置

    1.安装RabbitMQ 1)下载和安装erlang 下载erlang wget http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el6.x ...

随机推荐

  1. vite2+vue3使用tsx报错React is not defined、h is not defined

    vite 为 .jsx 和 .tsx 文件提供开箱即用支持. 如果不是在 react 中使用 jsx,对于报错: React is not defined 需要在 vite.config.js 文件中 ...

  2. C#微信公众号开发

    C#微信公众号开发 一> 准备 [开发文档] [微信公众号测试接口] 用自己的微信扫码登陆,然后就可以获取就有了appId 和 appsecret. 二>获取access_token 打开 ...

  3. 《数据万象带你玩转视图场景》第一期:avif图片压缩详解

    前言 随着硬件的发展,不管是手机还是专业摄像设备拍出的图片随便可能就有几M,甚至几十M,并且现在我们处于随处可及的信息海洋里,海量的图片带来了存储问题.带宽问题.加载时延问题等等.对图片信息进行有效的 ...

  4. 使用nvm管理node版本,动态切换不同版本的node(解决安装报错)

    使用nvm管理node版本,动态切换不同版本的node 1. 下载nvm安装包 下载地址,点这里进行下载 往下拉,选择 nvm-setup.zip 安装包 2. 安装nvm 注: 安装nvm之前,卸载 ...

  5. Flutter之GetX之GetConnect

    Flutter之GetX之GetConnect GetConnect可以便捷的通过http或websockets进行前后台通信. 默认配置 能轻松的通过extend GetConnect就能使用GET ...

  6. 常用 NoSQL 比较

    Q: 请根据 CAP 实现程度,分布式实现方式,数据结构,查询方式,存储引擎等比较 mongodb, redis, cassandra, scylladb, dragonflydb, TiKV, co ...

  7. Spring AOP实例操作 简单易懂

    AOP的功能,不改变源代码可以增强类中的方法      (增强 = 代理) AOP切入点表达式: execution([权限修饰符] [返回值类型] [类全路径] [方法名称] ([参数列表])) 例 ...

  8. [python]Markdown图片引用格式批处理桌面应用程序

    需求 使用python编写一个exe,实现批量修改图片引用,将修改后的文件生成为 文件名_blog.md.有一个编辑框,允许接收拖动过来md文件,拖入文件时获取文件路径,有一个编辑框编辑修改后的文件的 ...

  9. 【数据库】【MySQL】创建数据库、数据表、修改数据表字段的一些基本操作

    这是一份作业,仅此而已. 代码仅供参考. # 创建数据库yggl_mllt9920 CREATE DATABASE yggl_mllt9920; # 选择数据库 USE yggl_mllt9920; ...

  10. 夜莺 v8 第一个版本来了,开始做有意思的功能了

    夜莺 v8 大版本已经启动开发,预计 25 年 7.8 月份发正式版,相比 v7 大概会做四五个大功能,每个功能做完了做稳定了都会提前放出来供大家体验,虽然以 beta 来命名,实际是稳定的,大家可以 ...