zoukankan      html  css  js  c++  java
  • RabbitMQ集群搭建 lq

    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
  • 相关阅读:
    2020.04.11【NOIP普及组】模拟赛C组25总结
    【华为云技术分享】云图说 | 容器交付流水线ContainerOps,提升持续交付效率
    【USACO 2020 January Silver】Wormhole Sort 题解
    【华为云技术分享】计算python程序执行时间
    HTAP会成为数据库的未来吗?
    【华为云技术分享】现代富文本编辑器Quill的模块化机制
    Cow Evolution 题解
    【USACO 2020 January Silver】Loan Repayment
    VS2012 黑色护眼主题
    常用的正则表达式
  • 原文地址:https://www.cnblogs.com/rbwbear/p/15560575.html
Copyright © 2011-2022 走看看