百万架构师第三十七课: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 ...
随机推荐
- Educational Codeforces Round 151 (Rated for Div
C. Strong Password 给定一个字符串\(s\),一个密码的长度\(m\),下界字符串\(l\)和上界字符串\(r\),上下界字符串长度均为\(m\),且字符只在0~9范围内,上界字符串 ...
- C++之OpenCV入门到提高006:图像混合
一.介绍 今天是这个系列<C++之 Opencv 入门到提高>的第六篇文章.这篇文章也不难,介绍如何图像的混合操作.图像本质上也是数据,既然是数据,我们就可以针对两张或者多张图片进行加.减 ...
- CI/CD集成规范
集成方式说明 a.用户向Gitlab提交代码,代码中包含 Dockerfile, JenkinsFile文件. b.Jenkins监听Gitlab代码库的推送和变更事件 c.Jenkins调用mave ...
- Kettle设置定时跑任务
1.Kettle设置作业 保存,test.kjb 2. 创建批处理 zxjb.bat C: cd C:\kettle\pdi-ce-9.4.0.0-343\data-integration kitch ...
- 聊一聊 C#线程池 的线程动态注入 (上)
一:背景 1. 讲故事 在线程饥饿的场景中,我们首先要了解的就是线程是如何动态注入的?其实现如今的ThreadPool内部的实现逻辑非常复杂,而且随着版本的迭代内部逻辑也在不断的变化,有时候也没必要详 ...
- 【javaweb】【Session】记录用户访问时间
效果 Servlet import jakarta.servlet.*; import jakarta.servlet.http.*; import jakarta.servlet.annotatio ...
- 将现有的系统环境文件打包成Docker镜像文件
一.现有A系统Centos7操作: 备注:A系统里最好不安装Docker,否则会报错 卸载不必要软件包 yum remove -y iwl* *firmware* --exclude=kernel-f ...
- 用EwoMail开源版搭建邮箱服务器
介绍: EwoMail是基于Linux的开源邮件服务器,支持一键搭建,集成了众多优秀稳定的组件,是一个快速部署.简单高效.安全稳定的邮件解决方案,支持电脑和手机的客户端,适合个人或邮箱功能需求少的企业 ...
- Qt/C++音视频开发71-指定mjpeg/h264格式采集本地摄像头/存储文件到mp4/设备推流/采集推流
一.前言 用ffmpeg采集本地摄像头,如果不指定格式的话,默认小分辨率比如640x480使用rawvideo格式,大分辨率比如1280x720使用mjpeg格式,当然前提是这个摄像头设备要支持这些格 ...
- Qt/C++音视频开发67-保存裸流加入sps/pps信息/支持264/265裸流/转码保存/拉流推流
一.前言 音视频组件除了支持保存MP4文件外,同时还支持保存裸流即264/265文件,以及解码后最原始的yuv文件.在实际使用过程中,会发现部分视频文件保存的裸流文件,并不能直接用播放器播放,查阅资料 ...