百万架构师第三十七课:RabbitMq:高可用集群搭建步骤|JavaGuide
安装环境
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
微信公众号:不止极客
百万架构师第三十七课:RabbitMq:高可用集群搭建步骤|JavaGuide的更多相关文章
- RabbitMQ 高可用集群搭建及电商平台使用经验总结
面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue policy设置 两个不错的RabbitMQ p ...
- RabbitMQ 高可用集群搭建
面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue policy设置 两个不错的RabbitMQ p ...
- RabbitMQ高级指南:从配置、使用到高可用集群搭建
本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...
- Linux源码安装RabbitMQ高可用集群
1.环境说明 linux版本:CentOS Linux release 7.9.2009 erlang版本:erlang-24.0 rabbitmq版本:rabbitmq_server-3.9.13 ...
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
Redis总结(五)缓存雪崩和缓存穿透等问题 前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...
- RabbitMQ学习系列(六): RabbitMQ 高可用集群
前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/ca ...
- rabbitmq+haproxy+keepalived实现高可用集群搭建
项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说). 搭建环境 CentOS7 64位 R ...
- [Open Source] RabbitMQ 高可用集群方案
简介 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模式.镜像模式 Rabb ...
- docker下rabbitMQ高可用集群部署
第一步:docker 安装: mac 下安装命令: brew cask install docker 安装完之后查看版本 docker --version 第二步:开始集群搭建: 采用bijukunj ...
- RabbitMQ高可用集群配置
1.安装RabbitMQ 1)下载和安装erlang 下载erlang wget http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el6.x ...
随机推荐
- PythonDay5Advance
PythonDay5Advance 函数和模块 main函数要有,用户自己选择要做的功能,根据选择调用不同的函数 用户注册的信息需要使用一个文件存储,登录需要判断用户是否存在,密码是否正确 注册的时候 ...
- Ubuntu下xrdp登陆故障解决方案
故障描述: Ubuntu使用xrdp远程桌面运行一段时间后,出现登陆错误: xrdp_mm_process_login_response: login failed 原因分析: 远程桌面没有正确关闭所 ...
- 使用 yum 安装 nginx
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm ...
- Vue.js 文本交替滚动
1.前言 当一段文本需要单行显示,但是又限于容器宽度无法完全展示时,我们需要对其滚动展示,所以就有了这个插件,如图: 2.封装思路 使用js模拟循环滚动的动画,容器宽度固定且超出隐藏,文本元素禁止换行 ...
- RAG分块策略:主流方法(递归、jina-seg)+前沿推荐(Meta-chunking、Late chunking、SLM-SFT)
RAG分块策略:主流方法(递归.jina-seg)+前沿推荐(Meta-chunking.Late chunking.SLM-SFT) 大多数常用的数据分块方法(chunking)都是基于规则的,采用 ...
- RabbitMQ 快速入门
RabbitMQ 快速入门 官网:https://www.rabbitmq.com/ 入门教程:https://www.rabbitmq.com/tutorials 最新版本:4.0.2 版本参考:J ...
- Ubuntu22.04安装cuda12.1+cudnn8.9.2+TensorRT8.6.1+pytorch2.3.0+opencv_cuda4.9+onnxruntime-gpu1.18
说来话长,我想配一个一劳永逸的环境,方便以后复用.省的以后反复查教程重新装了 1. 安装miniconda+py3.10 cd /root wget -q https://repo.anaconda. ...
- 【Python】【图像处理】图片压缩方法
一直想找个"无损压缩"的办法. 当然这并非真的无损. 我采用了Opencv的处理图像相关的方法. 请见代码: 注意: opencv安装:pip install opencv-pyt ...
- 【转载】理解分布式id生成算法SnowFlake
分布式id生成算法的有很多种,Twitter的SnowFlake就是其中经典的一种. https://segmentfault.com/a/1190000011282426 概述 SnowFlake算 ...
- Qt开发经验小技巧101-110
如果需要在尺寸改变的时候不重绘窗体,则设置属性即可 this->setAttribute(Qt::WA_StaticContents, true); 这样可以避免可以避免对已经显示区域的重新绘制 ...