ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RabbitMQ集群搭建

2021-11-16 12:31:08  阅读:150  来源: 互联网

标签:haproxy RabbitMQ rabbitmqctl 集群 atguigu root 节点 搭建


  1. 集群方案的原理
    image
  2. 单机多实例部署
    [root@atguigu ~]# systemctl start rabbitmq-server.service
    [root@atguigu ~]# systemctl status rabbitmq-server.service
    #停止rabbitmq服务
    [root@atguigu ~]# systemctl stop rabbitmq-server.service
    #启动三个节点做集群演示:
    [root@atguigu ~]# RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit1 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15672}]"  rabbitmq-server -detached
    [root@atguigu ~]# RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit2 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]"  rabbitmq-server -detached
    [root@atguigu ~]# RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=rabbit3 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]"  rabbitmq-server -detached
    #启动三个节点后,分别访问三个节点,后台管理页面,看看是否OK.
    #停止服务命令:
    rabbitmqctl -n rabbit1 stop
    rabbitmqctl -n rabbit2 stop
    rabbitmqctl -n rabbit3 stop
    
    #rabbit1操作作为主节点:
    [root@atguigu ~]# rabbitmqctl -n rabbit1 stop_app
    [root@atguigu ~]# rabbitmqctl -n rabbit1 reset
    [root@atguigu ~]# rabbitmqctl -n rabbit1 start_app
    
    #rabbit2操作为从节点:
    [root@atguigu ~]# rabbitmqctl -n rabbit2 stop_app
    [root@atguigu ~]# rabbitmqctl -n rabbit2 reset
    [root@atguigu ~]# rabbitmqctl -n rabbit2 join_cluster rabbit1
    [root@atguigu ~]# rabbitmqctl -n rabbit2 start_app
    
    #rabbit3操作为从节点:
    [root@atguigu ~]# rabbitmqctl -n rabbit3 stop_app
    [root@atguigu ~]# rabbitmqctl -n rabbit3 reset
    [root@atguigu ~]# rabbitmqctl -n rabbit3 join_cluster rabbit1
    [root@atguigu ~]# rabbitmqctl -n rabbit3 start_app
    
    #查看集群状态:
    [root@atguigu ~]# rabbitmqctl -n rabbit1 cluster_status
    
  3. 集群管理:
    #将节点加入指定集群中。在这个命令执行前需要停止RabbitMQ应用并重置节点。
    rabbitmqctl join_cluster {cluster_node} [–ram]
    
    #显示集群的状态。
    rabbitmqctl cluster_status
    
    #修改集群节点的类型。在这个命令执行前需要停止RabbitMQ应用。
    rabbitmqctl change_cluster_node_type {disc|ram}
    
    #将节点从集群中删除,允许离线执行。
    rabbitmqctl forget_cluster_node [–offline]
    
    #在集群中的节点应用启动前咨询clusternode节点的最新信息,并更新相应的集群信息。这个和join_cluster不同,它不加入集群。考虑这样一种情况,节点A和节点B都在集群中,当节点A离线了,节点C又和节点B组成了一个集群,然后节点B又离开了集群,当A醒来的时候,它会尝试联系节点B,但是这样会失败,因为节点B已经不在集群中了。
    rabbitmqctl update_cluster_nodes {clusternode}
    
    #取消队列queue同步镜像的操作。
    rabbitmqctl cancel_sync_queue [-p vhost] {queue}
    
    #设置集群名称。集群名称在客户端连接时会通报给客户端。Federation和Shovel插件也会有用到集群名称的地方。集群名称默认是集群中第一个节点的名称,通过这个命令可以重新设置。
    rabbitmqctl set_cluster_name {name}
    
  4. 镜像集群配置
    • rabbitmqctl set_policy my_ha "^"" '{"ha-mode":"all"}
    • image
    • Name:策略名称
    • Pattern:匹配的规则,如果是匹配所有的队列,是^.
    • Definition:使用ha-mode模式中的all,也就是同步所有匹配的队列。问号链接帮助文档。
  5. 负载均衡-HAProxy
    • HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案,包括Twitter,Reddit,StackOverflow,GitHub在内的多家知名互联网公司在使用。HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。
    • 安装HAProxy
      //下载依赖包
      yum install gcc vim wget
      //上传haproxy源码包
      //解压
      tar -zxvf haproxy-1.6.5.tar.gz -C /usr/local
      //进入目录、进行编译、安装
      cd /usr/local/haproxy-1.6.5
      make TARGET=linux31 PREFIX=/usr/local/haproxy
      make install PREFIX=/usr/local/haproxy
      mkdir /etc/haproxy
      //赋权
      groupadd -r -g 149 haproxy
      useradd -g haproxy -r -s /sbin/nologin -u 149 haproxy
      //创建haproxy配置文件
      vim /etc/haproxy/haproxy.cfg
      
    • 配置HAProxy
      #全局配置
      global
      	#日志输出配置,所有日志都记录在本机,通过local0输出
      	log 127.0.0.1 local0 info
      	#最大连接数
      	maxconn 5120
      	#改变当前的工作目录
      	chroot /usr/local/haproxy
      	#以指定的UID运行haproxy进程
      	uid 99
      	#以指定的GID运行haproxy进程
      	gid 99
      	#以守护进程方式运行haproxy
      	daemon
      	quiet
      	nbproc 20
      	#当前进程PID文件
      	pidfile /var/run/haproxy.pid
      #默认配置
      defaults
      	#应用全局的日志配置
      	log global
      	#默认的模式mode{tcp|http|health}
      	mode tcp
      	#日志类别
      	option tcplog
      	#不记录检查检查日志信息
      	option dontlognull
      	#3次失败则认为服务不可用
      	retries 3
      	option redispatch
      	#每个进程可用的最大连接数
      	maxconn 2000
      	#连接超时
      	contimeout 5s
      	#客户端超时
      	clitimeout 60s
      	#服务端超时
      	srvtimeout 15s    
      #绑定配置
      listen rabbitmq_cluster
      	bind 127.0.0.1:5677
      	#配置TCP模式
      	mode tcp
      	#balance url_param userid
      	#balance url_param session_id check_post 64
      	#balance hdr(User-Agent)
      	#balance hdr(host)
      	#balance hdr(Host) use_domain_only
      	#balance rdp-cookie
      	#balance leastconn
      	#balance source //ip
      	#简单的轮询
      	balance roundrobin
      	#server rabbit1 定义服务内部标识,
      	#127.0.0.1:5672 服务连接IP和端口,
      	#check inter 5000 定义每隔多少毫秒检查服务是否可用,
      	#rise 2 服务故障后需要多少次检查检查才能被再次确认可用,
      	#fall 2 经历多次失败的检查检查后,haproxy才会停止使用此服务
      	#weight 1 定义服务权重
      	server rabbit1 127.0.0.1:5672 check inter 5000 rise 2 fall 2 weight 1
      	server rabbit2 127.0.0.1:5673 check inter 5000 rise 2 fall 2 weight 1
      	server rabbit3 127.0.0.1:5674 check inter 5000 rise 2 fall 2 weight 1
      #haproxy监控页面地址
      listen stats
      	bind 192.168.137.130:8100
      	mode http
      	option httplog
      	stats enable
      	stats uri /rabbitmq-stats
      	stats refresh 5s
      
    • 启动HAproxy负载
      /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
      
    • 查看haproxy进程状态
      ps -ef | grep haproxy
      
    • 访问如下地址对mq节点进行监控:http://192.168.137.130:8100/rabbitmq-stats
      image

标签:haproxy,RabbitMQ,rabbitmqctl,集群,atguigu,root,节点,搭建
来源: https://www.cnblogs.com/rbwbear/p/15560575.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有