首页 > 其他分享 >RabbitMQ 集群环境搭建

RabbitMQ 集群环境搭建

时间:2023-06-07 10:03:09浏览次数:35  
标签:haproxy HAProxy stats RabbitMQ rabbitmqctl cookie 集群 #--------------------------


1. 使用集群的原因


最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的


要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitMQ


服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞 吐量呢?购买昂贵的服务器来增强单机 RabbitMQ 务的性能显得捉襟见肘,搭建一个 RabbitMQ 集群才是


解决实际问题的关键 .


2. 搭建步骤


1. 修改 3 台机器的主机名称



vim /etc/hostname



2. 配置各个节点的 hosts 文件,让各个节点都能互相识别对方



vim /etc/hosts

10.211.55.74 node1

10.211.55.75 node2

10.211.55.76 node3


重启网络生效: /etc/init.d/network restart




3. 以确保各个节点的 cookie 文件使用的是同一个值



在 node1 上执行远程操作命令


scp /var/lib/rabbitmq/.erlang.cookie root@node2:/usr/local/rabbitmq/.erlang.cookie

scp /var/lib/rabbitmq/.erlang.cookie root@node3:/usr/local/rabbitmq/.erlang.cookie



官方在介绍集群的文档中提到过.erlang.cookie一般会存在这两个地址:第一个是$home/.erlang.cookie;第二个地方就是/var/lib/rabbitmq/.erlang.cookie。

  • 如果我们使用解压缩方式安装部署的rabbitmq,那么这个文件会在${home}目录下,也就是$home/.erlang.cookie。
  • 如果我们使用rpm等安装包方式进行安装的,那么这个文件会在/var/lib/rabbitmq目录下。



特别注意:两个地方的cookie文件都要修改一致




4. 启动 RabbitMQ 服务 , 顺带启动 Erlang 虚拟机和 RbbitMQ 应用服务 ( 在三台节点上分别执行以


下命令 )



rabbitmq-server -detached



开放端口: 4369   25672端口


具体开放端口命令查看


5. 在节点 2 执行



rabbitmqctl stop_app (rabbitmqctl stop 会将 Erlang 虚拟机关闭, rabbitmqctl stop_app 只关闭 RabbitMQ 服务 )

rabbitmqctl reset

rabbitmqctl join_cluster rabbit@node1

rabbitmqctl start_app( 只启动应用服务 )



6. 在节点 3 执行



rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl join_cluster rabbit@node2

rabbitmqctl start_app



7. 集群状态



rabbitmqctl cluster_status



8. 需要重新设置用户



创建账号

rabbitmqctl add_user admin 123

设置用户角色

rabbitmqctl set_user_tags admin administrator

设置用户权限

rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"



9. 解除集群节点 (node2 和 node3 机器分别执行 )



rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl start_app

rabbitmqctl cluster_status

rabbitmqctl forget_cluster_node rabbit@node2(node1 机器上执行 )

3、HAProxy负载均衡

HAProxy的特点是:
  1、HAProxy是支持虚拟主机的,,并能支持上万级别的连接;
  2、能够补充Nginx的一些缺点比如Session的保持,cookie的引导等工作;
  3、支持url检测后端的服务器出问题的检测会有很好的帮助;
  4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
  5、HAProxy可以对mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS
  6、能够提供4层,7层代理。HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量,7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则;
  7、HAProxy负载均衡算法具体有如下几种:
     ①roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
     ②static-rr,表示根据权重;
     ③leastconn,表示最少连接者先处理;
     ④source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法;
     ⑤ri,表示根据请求的URI;
     ⑥rl_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name;
     ⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
     ⑧rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

1、下载依赖包

yum install gcc

2、下载haproxy

yum install haproxy -y

3、编辑 haproxy 配置文件

vi /etc/haproxy/haproxy.cfg

新增listen内容,根据实际情况,修改default内容:

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
# haproxy统计页面配置段
listen stats
	# 指定统计页面监听的端口
	bind *:9188
	# 指定统计页面运行的模式
	mode http
	# 指定开启统计页面功能
	stats enable
	# 如果不设置URI,默认是/haproxy?stats
	stats uri /status
	# 指定登入是提示信息,\表示转义空白字符
	stats realm HAProxy\ statistics
	# 指定用户名和密码
	stats auth admin:admin123
	# 指定统计页面自动刷新的时长
	stats refresh 20
	# 如果用户认证成功,统计页面可以被访问
	stats admin if TRUE
	#隐藏统计页面上HAProxy的版本信息
	stats hide-version
	
listen rabbitmq_cluster
	bind *:5671
	option tcplog
	mode tcp
	timeout client 3h
	timeout server 3h
	balance roundrobin
	# inter 2000 是健康状态检测的时间间隔,rise 2:2次请求成功认为服务器可用,fall 3:3次请求不成功认为服务器不可用
	 server   node_206 10.10.240.206:5672 check inter 5s rise 2 fall 3   
	 server   node2_207 10.10.240.207:5672 check inter 5s rise 2 fall 3
	 server   node3_107 10.10.252.107:5672 check inter 5s rise 2 fall 3
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    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
    maxconn                 3000

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:5000
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static
    default_backend             app

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
    balance     roundrobin
    server      static 127.0.0.1:4331 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
    balance     roundrobin
    server  app1 127.0.0.1:5001 check
    server  app2 127.0.0.1:5002 check
    server  app3 127.0.0.1:5003 check
    server  app4 127.0.0.1:5004 check

4、启动haproxy

systemctl  start haproxy

5、错误记录

    HAProxy 报错(Starting proxy stats: cannot bind socket [0....:7777]

执行如下命令可解决

setsebool -P haproxy_connect_any=1

启动完成后可查看haproxy管理端:

http://10.10.252.107:9188/status

RabbitMQ 集群环境搭建_负载均衡

标签:haproxy,HAProxy,stats,RabbitMQ,rabbitmqctl,cookie,集群,#--------------------------
From: https://blog.51cto.com/u_15564034/6429989

相关文章

  • Redis哨兵模式搭建
    ##一:哨兵主要作用监控:监控redis主库及从库运行状态;通知:如果redis发生故障转移,可以通过邮件通知管理员;自动故障转移:一旦发现主库宕机,则在从库中通过选举新的master进行故障转移。##二:工作原理哨兵(sentinel)是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel)进程,......
  • Python | VSCode的Python编程环境搭建
    1、简介VScode是一款轻量化的代码编辑器,也是目前极为流行的适配性极强的写代码的工具,不仅仅可以用于C/C++代码项目的编写,还能够用于Python、java等其他语言。2、内容a、先下载安装Python的解释器b、安装VSCodec、安装Python相关的插件d、即可运行编译Python代码附:完整教程步骤......
  • openwrt 搭建halo
    1、openwrt中安装docker2、更具情况在自己安装的目录里新建目录mkdir-p/opt/docker/Configs/.halomkdir-p/data/docker/.halo3、进入安装目录cd/opt/docker/Config/.halo4.创建容器并拉取镜像dockerrun-it-d--namehalo -p8090:8090 -v/opt/docker/Configs/.......
  • http服务器搭建
    参考来源:https://www.cnblogs.com/roluodev/p/13585182.html# yuminstallhttpd #关闭防火墙 #可以访问http://ip #http服务器的默认目录#http服务器开启目录sudovi/etc/httpd/conf.d/welcome.conf把Options-Indexes中的减号改为加号此处作用为访问目录......
  • Kafka 单机部署搭建及其基本使用
    最近在搞Flink框架其中数据源需要模拟kafka取数据,于是自己搭建了一套单机的kafka环境,以便用于测试。现整理如下的笔记,发上来和大家分享。后续还会有kafka的相关笔记,会与大家继续分享!当前文档所部署服务器IP地址为192.168.118.218hostname为web一、kafka环境搭建下载kafka......
  • git服务器搭建
    参考来源:https://www.runoob.com/git/git-server.html#安装gitpipinstallgitgit--version#创建一个git用户组和用户,用来运行git服务#创建证书登录收集所有需要登录的用户的公钥,公钥位于id_rsa.pub文件中,把我们的公钥导入到/home/git/.ssh/authorized_keys文件里,一行一......
  • 第三天:环境变量搭建和运行HelloWord程序
    java开发环境搭建配置环境变量我的电脑-->右键属性点击高级系统设置选择环境变量选择系统变量,新建--》JAVA_HOME配置path变量测试是否安装成功打开cmd输入命令java-version目录含义bin:存放一些可执行程序include:JDK是由C和C++编写启动时......
  • 网关服务Kong、Konga搭建记录
    安装使用docker-compose安装是最方便的在/opt/目录下创建kong文件夹,然后创建一个docker-compose.yml文件并编辑cd/optmkdirkongcdkongvidocker-compose.yml在docker-compose.yml添加如下配置(20220528亲测可用)version:'3'services:kong-database:imag......
  • 阿里云虚拟主机搭建多个网站的方法
    阿里云虚拟主机搭建多个网站,需要用到伪静态文件.htaccess文件具体步骤如下:比如说你先在已经搭建了一个A网站www.a.com,想再搭建一个B网站www.b.com那么需要先在A网站的根目录下,新建一个文件夹,比如名字叫做B_file然后再A网站的根目录下,新建一个.htaccess文件,内容如下:RewriteE......
  • RabbitMQ消息堆积
    1.堆积原因主要的问题有两个,第一个原因在于消费者消费消息的速度低于生产者的生产速度,其次消费者存在问题无法对消息进行消费2.解决的思路根据堆积的原因我们可以我们有两种思路,其中第一种就是去限制生产者的消息生产速度,另一种就是去提高消费者的消费能力。2.1......