安装环境

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. Codeforces Round 732 (Div

    AquaMoon and Strange Sort 有 \(n\) 个人从左到右站成一排,从左数第 \(i\) 个人的衣服上印着 \(a_i\).每个人的朝向可以是朝左.朝右.一开始所有人的方向都是朝 ...

  2. 关于xml文件解析时'&'不能被解析的问题

    Bug情况:在解析xml文件的时候,&字符解析错误 解决方式:将符号进行转义

  3. K8S钩子、探针以及控制器完整版

    一. 生命周期钩子 Kubernetes 中的 生命周期钩子(Lifecycle Hooks) 是在容器生命周期的特定阶段执行操作的机制.通过钩子,可以在容器启动后(PostStart)或停止前(Pr ...

  4. 从FTP到Feem:文件传输技术的革新

    Feem是一个开源的文件传输协议,旨在提供高效.安全.快速的文件传输服务.与传统的FTP和HTTP协议相比,Feem具有许多优势,如支持任意大小的文件传输.支持实时传输和断点续传等. Feem_v4. ...

  5. codeforces1849 D. Array Painting

    题目链接 https://codeforces.com/problemset/problem/1849/D 题意 输入 \(n(1 \leq n \leq 2e5)\) 和长为 \(n\) 的数组 \ ...

  6. Gitee三方登录_Python (超详细)

    第三方登录是一种常见的身份验证机制,允许用户使用他们在其他平台(如社交媒体.电子邮件服务或开发平台)的账号来登录你的应用或网站,而不需要创建新的用户名和密码.这种方式不仅简化了用户的登录过程,还提高了 ...

  7. 使用 Autofac, MediatR 和 FluentValidator 构建松耦合 ASP.NET Core API 应用

    使用 MediatR 和 FluentValidator 1. 创建示例文件夹 Sample 首先,创建示例文件夹 Sample. 2. 创建表示层项目 Web 在示例文件夹 Sample 中,使用标 ...

  8. 关于 VMware 与 WSL 在 Win11 虚拟化的一些问题

    关于 VMware 与 WSL 在 Win11 虚拟化的一些问题 VMware 虚拟化问题 之前用虚拟机做计网 GNS3 组网实验的时候需要用到虚拟机虚拟化,然后一直显示虚拟化不成功,检查过 BIOS ...

  9. 【YashanDB知识库】Oracle pipelined函数在YashanDB中的改写

    本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7802940.html?templateId=1718516 [问题分类]功能使用 ...

  10. Spring事务管理深度解析-从实践到原理

    事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制 分类 主要分为编程式事务和声明式事务两种. 编程式事务 是指在代码中手动的管理事务的提交.回滚等操作,代码侵入性比较强,如下 ...