# 两台主机都安装上rabbitMQ
yum install -y rabbitmq-server
 
# 两台主机都配置/etc/hosts文件
192.168.23.10 rabbitmq1
192.168.23.11 rabbitmq2
 
# 两台主机都以集群的方式启动rabbitmq-server
rabbitmq-server -detached
 
# 此时查看 rabbitmqctl cluster_status ,会发现:两台主机在各自的集群上
 
# 因此,将rabbitmq1加入rabbitmq2的集群中,返过来也可以。先将rabbitmq1的服务停止,再加入到rabbitmq2的集群中,但是node2需要先将cookie文件拷贝到node1。如果碰到问题,需要将node2的rabbitmq进程kill掉,在启动rabbitmq-server服务
rabbitmqctl stop_app(在node1上执行)
scp /var/lib/rabbitmq/.erlang.cookie 192.168.23.10:/var/lib/rabbitmq/.erlang.cookie(在node2上执行)
rabbitmqctl join_cluster "rabbit@rabbitmq2" --ram(在node1上执行, --ram表示是否为内存节点,如果不加为磁盘disc节点)
 
 
# 再次启动rabbitmq1
rabbitmqctl start_app
 
# 再次查看rabbitmq1的集群状态,会发现此时rabbitmq1的集群的集群名称为:"rabbit@rabbitmq2"
rabbitmqctl cluster_status
 
启动管理插件
rabbitmq-plugins enable rabbitmq_management
查看插件
rabbitmq-plugins list
 
重启服务rabbitmq
 
# 返回web接口
http://192.168.23.10:15672
 
# 但是此时可能无法查看到rabbitmq2节点的信息,因为rabbitmq2没有启用rabbitmq_management插件,因此启用插件,在重启服务
rabbitmq-plugins enable rabbitmq_management
systemctl restart rabbitmq-server
 
# 确保每一个节点的15672、25672、5672端口都是监听的
netstat -lntup
 
# 此时这两个节点都是disc节点,可以修改为ram节点, 将rabbitmq2改为ram节点
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type ram
rabbitmqctl start_app
 
# 再次查看集群状态,发现rabbitmq1已经为ram节点
rabbitmqctl cluster_status
 
 
  • 设置RabbitMQ镜像功能
# 在rabbitmq2上创建队列镜像,镜像需要指定策略,策略是用来控制和修改群集范围的队列行为和Exchange行为的
# 创建了一个名为ha-allqueue策略,“^” 表示所有匹配所有队列名称,策略模式ha-mode为 all 即复制到所有节点,包含新增节点。
rabbitmqctl set_policy ha-allqueue "^" '{"ha-mode":"all"}'
  • 搭建haproxy服务器,实现TCP层调度(haproxy:192.168.23.12)
# 在添加一条主机节点安装haproxy
yum install -y haproxy
 
# 修改配置文件/etc/haproxy/haproxy.cfg
global
# 指定日志记录路径,这个local2是需要在/etc/rsyslog.conf文件中指定的,指定了日志存储路径之后,需要重启rsyslog服务哦
log 127.0.0.1 local2
# 指定haproxy的运行环境
chroot /var/lib/haproxy
# 指定进程的pid
pidfile /var/run/haproxy.pid
# 指定单个进程的最大并发连接数
maxconn 4000
# 指定允许haproxy的用户
user haproxy
# 指定允许haproxy的组
group haproxy
# 指定haproxy以守护进程模式运行
daemon
# 设置后台运行2个haproxy进程,但是后台运行了3个进程
# nbproc 2
 
# 指定Unix socket通信(基本没用过)
# stats socket /var/lib/haproxy/stats
 
# 这里是默认的选项,如何在listen段,backend段,frontend段中将这些选项按需求重新制定
defaults
# 指定默认的模式
mode http
# 指定日志信息使用全局指定的日志存储路径,全局日志是存储在rsyslog服务中
log global
# 将log日志记录到rsyslog日志服务器中,指定日志级别为notice级别
log 192.168.23.10 local12 notice
# 日志格式可以不指定,有其默认的值
#log-format %T\ %t\ Some\ Text
# 指定压缩类型
compression algo gzip
# 指定需要压缩的资源类型
compression type text/html text/plain
option httplog
option dontlognull
option http-server-close
# 在后端服务器中可以记录客户端的源IP地址,在日志中加上%{X-Forwarded-For}i
option forwardfor except 127.0.0.1/8
# 如果后端服务器不提供服务,那么将会重新di
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
# 指定接受10000个并发
maxconn 10000
 
# haproxy统计页面配置段
listen stats
# 指定统计页面监听的端口
bind *:33559
# 指定统计页面运行的模式
mode http
# 指定开启统计页面功能
stats enable
# 如果不设置URI,默认是/haproxy?stats
stats uri /admin
# 指定登入是提示信息,\表示转义空白字符
stats realm HAProxy\ statistics
# 指定用户名和密码
stats auth uplooking:123456
# 指定统计页面自动刷新的时长
stats refresh 20
# 如果用户认证成功,统计页面可以被访问
stats admin if TRUE
#隐藏统计页面上HAProxy的版本信息
stats hide-version
 
listen rabbitmq_cluster
bind *:5672
option tcplog
mode tcp
timeout client 3h
timeout server 3h
balance roundrobin
# inter 2000 是健康状态检测的时间间隔,rise 2:2次请求成功认为服务器可用,fall 3:3次请求不成功认为服务器不可用
server mq1 192.168.23.10:5672 check inter 5s rise 2 fall 3
server mq2 192.168.23.11:5672 check inter 5s rise 2 fall 3
 
 
3:检测配置文件
haproxy -c -f /etc/haproxy/haproxy.cfg
 
4:登入haproxy的管理界面查看是否rabbitmq集群开始工作了
http://192.168.23.12:33559/admin

Haproxy + Rabbit 集群 简要介绍的更多相关文章

  1. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  2. DataBase MongoDB集群方案介绍

    MongoDB集群方案介绍 一.什么是mongodb集群? 是指由多台mongodb服务器组成的服务器集群,称之为mongodb集群. 二.mongodb集群搭建的方式: 1.Replica Set  ...

  3. PXC5.7(Percona XtraDB Cluster)+HAproxy+Keepalived 集群部署

    Percona-XtraDB-Cluster+Haproxy 搭建集群环境 环境准备及服务器信息: 配置防火墙 firewall-cmd --add-port=3306/tcp --permanent ...

  4. windows集群简单介绍

    windows集群简单介绍仔细看过以前网友发表的一些文章,总觉得对windows集群没有详细介绍,我也是借花献佛,引用了一些技术性文档.目前应用最为广泛的集群计算技术可以分为三大类:高可用性集群技术. ...

  5. 转载:【Oracle 集群】RAC知识图文详细教程(一)--集群概念介绍

    文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...

  6. MongoDB集群方案介绍

    MongoDB集群方案介绍 一.什么是mongodb集群? 是指由多台mongodb服务器组成的服务器集群,称之为mongodb集群. 二.mongodb集群搭建的方式: 1.Replica Set  ...

  7. 【转】【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    原文地址:http://www.cnblogs.com/baiboy/p/orc1.html 阅读目录 目录 集群概念介绍 什么是集群 为什么搭建数据库集群 数据库集群的分类 可扩展的分布式数据库架构 ...

  8. kafka集群原理介绍

    目录 kafka集群原理介绍 (一)基础理论 二.配置文件 三.错误处理 kafka集群原理介绍 @(博客文章)[kafka|大数据] 本系统文章共三篇,分别为 1.kafka集群原理介绍了以下几个方 ...

  9. Linux运维--12.手动部署Rabbit集群

    1.安装rabbit组件 10.100.2.51 controller1 10.100.2.52 controller2 10.100.2.53 controller3 #每个节点 yum insta ...

随机推荐

  1. centos 安装 telnet

    (转)centos7安装telnet服务 场景:在进行Telnet测试时候,发现无法连接,所以还得把这个软件也安装了 1 CentOS7.0 telnet-server 启动的问题 解决方法:   先 ...

  2. Python的print的底层实现

    默认调用 sys.stdout.write() 方法 import sys sys.stdout.write("hello") 会在控制台打印:hello

  3. # 20155224 课堂实践 MyOD

    20155224 课堂实践 MyOD 要求 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 提交测试代码和运行结果截图,加上学号水印,提交码云代 ...

  4. 20155224 《实验二 Java面向对象程序设计》实验报告

    实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 没有Linux ...

  5. 20155233 《Java程序设计》 实验三 敏捷开发与XP实践

    20155233 <Java程序设计> 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤与内容 1.在IDEA中使用工具(Code->Reformat ...

  6. 2017-2018-1 20155307 《信息安全系统设计基础》第san周学习总结

    2017-2018-1 20155307 <信息安全系统设计基础>第三周学习总结 教材学习内容总结 无符号数和有符号数的特性,数字如何表示,IEEE标准,浮点数格式.(我感觉我把课下测试做 ...

  7. 课上实践练习——MyOd

    编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 Linux下od -tx -tc XXX的功能 1.功能 od命令用于将指定文件内容以八进制.十 ...

  8. 2016-2017-2 20155339 实验二《Java面向对象程序设计》实验报告

    2016-2017-2 20155339 实验二<Java面向对象程序设计>实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟 ...

  9. eclipse 打包maven项目的坑

    一.问题: 公司开发了一个项目,需要作为后台服务运行,整个项目的构成是:[maven + spring + eclipse] 在使用打包的时候遇到许多问题: (1)eclipse中maven工具的集成 ...

  10. 前后端分离之JWT用户认证zf

    在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...