rabbitmq 安装
- 格式:doc
- 大小:93.00 KB
- 文档页数:4
rabbitmq 使用手册RabbitMQ 是一个开源的消息代理软件,它实现了高效的消息传递机制,可以在分布式系统中进行消息的发布和订阅。
下面是 RabbitMQ 的使用手册的详细精确说明:1. 安装 RabbitMQ:首先,你需要下载并安装 RabbitMQ。
你可以从RabbitMQ 官方网站上下载适合你操作系统的安装包,并按照官方文档中的说明进行安装。
2. 启动 RabbitMQ 服务器:安装完成后,你可以启动 RabbitMQ 服务器。
在大多数操作系统中,你可以通过命令行执行以下命令来启动RabbitMQ:```rabbitmq-server```如果一切正常,你将会看到 RabbitMQ 服务器成功启动的日志信息。
3. 创建和管理队列:RabbitMQ 使用队列来存储消息。
你可以使用 RabbitMQ 的管理界面或者命令行工具来创建和管理队列。
以下是一些常用的队列操作命令:- 创建队列:```rabbitmqadmin declare queue name=<queue_name>```- 查看队列列表:```rabbitmqadmin list queues```- 删除队列:```rabbitmqadmin delete queue name=<queue_name>```4. 发布和消费消息:使用 RabbitMQ,你可以将消息发布到队列中,并从队列中消费消息。
以下是一些常用的消息操作命令:- 发布消息:```rabbitmqadmin publish routing_key=<routing_key>payload=<message>```- 消费消息:```rabbitmqadmin get queue=<queue_name>```- 确认消息已被消费:```rabbitmqadmin ack delivery_tag=<delivery_tag> ```5. 设置消息交换机和绑定:RabbitMQ 使用消息交换机来将消息路由到队列。
rabbitmq的使用方法RabbitMQ是一个开源的消息代理软件,用于实现异步消息传递。
以下是使用RabbitMQ的一些基本方法:1. 安装和配置:首先,你需要从RabbitMQ的官网下载并安装RabbitMQ 服务器。
安装完成后,你可以通过浏览器访问RabbitMQ的管理界面,进行基本的配置。
2. 创建队列:在RabbitMQ中,消息被存储在队列中。
你可以使用RabbitMQ的管理界面或者通过编程的方式创建队列。
例如,使用Python 的pika库,你可以这样创建一个队列:```pythonimport pikaconnection = (('localhost'))channel = ()_declare(queue='hello')()```3. 发送消息:一旦你创建了队列,你就可以开始发送消息到这个队列。
同样使用pika库,你可以这样发送消息:```pythonimport pikaconnection = (('localhost'))channel = ()_publish(exchange='', routing_key='hello', body='Hello World!') ()```4. 接收消息:要接收消息,你需要创建一个消费者来从队列中获取消息。
消费者可以是任何能够处理RabbitMQ消息的应用程序。
例如,你可以创建一个Python消费者来接收消息:```pythonimport pikaconnection = (('localhost'))channel = ()_declare(queue='hello')def callback(ch, method, properties, body):print(f" [x] Received {body}")_consume(queue='hello', on_message_callback=callback,auto_ack=True)print(' [] Waiting for messages. To exit press CTRL+C')_consuming()```5. 确认消息处理:在RabbitMQ中,你可以选择自动确认(auto_ack)或手动确认(manual_ack)消息处理。
RabbitMQ安装需要安装较多的依赖包,之前如果安装过RabbitMQ-server必须要先彻底删除。
重装的ubuntu系统(ubuntu server)的开发环境几乎是裸的,再重新编译安装erlang需要一些关键库。
1. gcc/g++、make等开发工具Bash代码1.sudo apt-get install build-essential2. 其它Erlang用到的关键库Bash代码1.sudo apt-get install libncurses5-dev2.sudo apt-get install m43.sudo apt-get install libssl-dev3. 此外还有一些非关键库也可以装上,不然make也通不过Bash代码1.sudo apt-get install libc6 (Ubuntu 9.10以后自动带这个,所以不用再装了)2.sudo apt-get install unixodbc unixodbc-dev ODBC方式提供对传统关系数据库支持3.sudo apt-get install freeglut3-dev libwxgtk2.8-dev4. 安装JDK,需要这个编译JInterfacesudo apt-get install sun-java6-jdk安装后设置环境变量JAVA_HOME和PATH,并在/usr/bin中设置java和javac 的符号链接:Bash代码1.sudo ln -s /usr/local/jdk1.6.0_20/bin/java /usr/bin/java2.sudo ln -s /usr/local/jdk1.6.0_20/bin/javac /usr/bin/javac5. 在R13B03后,帮助文档的生成方式有了变化,要想自动生成帮助文件,需要安装xsltproc和Bash代码1.sudo apt-get install xsltproc2.sudo apt-get install fop6.然后下载安装ERLANG源代码(otp_src_R14B02.tar.gz)tar -xvf otp_src_R14B02.tar.gzcd otp_src_R14B02.tar.gzsudo ./configure --prefix=/otp/erlangsudo makesudo make install安装完毕,能够rm -fr otp_src_R14B02.tar.gz删除源代码然后改改/etc/profileexport PATH=/opt/erlang/bin:$PATHalias ls='ls -color=auto'alias ll='ll -lht'能够source /etc/profile一下,及时修改PATH7. 下载安装RabbitMQ-Server下载rabbitmq-server_2.4.1-1_all.deb软件包安装:dpkg –i rabbitmq-server_2.4.1-1_all.deb(有关dpkg安装软件的步骤和方法网上有很多)默认安装在ubuntu操作系统的/etc/lib8.使用和权限设置下面我们使用rabbitmqctl控制台命令(位于D:\rabbitmq\sbin>)来配置vhost,创建用户,密码,绑定权限等。
rabbitmq使用手册RabbitMQ是一种开源的消息队列中间件,采用AMQP协议,被广泛应用于构建可靠、高效的分布式系统。
本手册将详细介绍RabbitMQ 的安装、配置、使用和常见问题解决方案,帮助读者快速上手使用RabbitMQ。
第一章安装与配置1.1 环境准备在开始安装RabbitMQ之前,需要确保系统满足以下要求:操作系统(例如Linux、Windows)、Erlang运行时环境以及RabbitMQ软件包。
1.2 安装RabbitMQ按照文档提供的方式,在所选的操作系统上安装RabbitMQ。
安装过程中需注意版本兼容性和安全配置。
1.3 配置RabbitMQ在安装完成后,需要对RabbitMQ进行适当的配置。
主要包括网络配置、认证与授权、虚拟主机、交换机和队列的创建等。
第二章消息发布与订阅2.1 消息生产者通过使用RabbitMQ的API,开发者可以编写生产者代码将消息发布到RabbitMQ的交换机上。
这里需要注意消息的序列化和指定交换机名称。
2.2 消息消费者RabbitMQ的消费者通过订阅交换机的队列来接收消息,可以使用RabbitMQ的API编写消费者代码,并实现消息的处理逻辑。
2.3 消息确认机制RabbitMQ提供了消息的确认机制,确保消息在传输过程中的可靠性。
开发者可以选择隐式确认或显式确认来保证消息的消费状态。
第三章消息路由与过滤3.1 路由模式RabbitMQ支持多种路由模式,如直接路由、主题路由和广播路由。
开发者可以根据实际需求选择最适合的路由模式。
3.2 消息过滤通过使用RabbitMQ的消息过滤功能,可以根据消息的属性进行过滤,只有满足条件的消息才会被消费者接收。
第四章高级特性与扩展4.1 持久化使用RabbitMQ的持久化机制,可以确保消息在服务器重启后依然存在,防止消息丢失。
4.2 集群与高可用通过搭建RabbitMQ集群,可以提高系统的可用性和扩展性。
在集群中,消息将自动在节点之间进行复制。
RabbitMQ——安装、集群搭建、镜像队列配置⼀、环境说明1、Centos7.7-64位2、Erlang-OTP 233、RabbitMQ-3.8.9操作系统ip主机名配置centos 7.717.16.10.62rabbit-14核8gcentos 7.717.16.10.63rabbit-24核8gcentos 7.717.16.10.66rabbit-34核8g⼆、下载安装⽂件1、RabbitMQ软件:2、erlang是RabbitMQ的依賴軟件,在erlang官⽹下载以下版本:3、把下载的⽂件分别上传到3台服务器的 /root/soft/rabbitmq ⽬录下。
三、安装RabbitMQ依赖包安装基础依赖包1. 配置yum源:touch /etc/yum.repos.d/rabbitmq_erlang.repovim /etc/yum.repos.d/rabbitmq_erlang.repo[rabbitmq-erlang]name=rabbitmq-erlangbaseurl=https:///rabbitmq-erlang/rpm/erlang/23/el/7gpgcheck=1gpgkey=https:///rabbitmq/Keys/rabbitmq-release-signing-key.asc repo_gpgcheck=0enabled=12. 导⼊key:rpm --import https:///rabbitmq-release-signing-key.asc注:安装 rabbitMQ 时需要key。
3. 安装socat:yum -y install epel-releaseyum -y install socat注:安装 rabbitMQ 时需要依赖socat。
安装与配置erlang1. erlang和rabbitmq的版本对应关系2. 安装erlangcd /root/soft/rabbitmqrpm -ivh erlang-23.2.1-1.el7.x86_64.rpm3. 使⽤以下指令进⼊erlang如出现以下讯息表⽰成功安装:shell>erl⽤ctrl+c退出。
RabbitMQ集群搭建和使⽤⼀.环境准备1、选择RabbitMQ的版本注: 不同版本的Linux选择的RabbitMQ版本也不同,参照查看CentOS版本:more /etc/redhat-release2、RabbitMQ依赖于Erlang,两者版本需匹配,版本对照表如下: 2.1选择Erlang的版本⼆.安装单机RabbtiMQ2.1 安装Erlang2.1.1 安装Erlang依赖yum install gcc glibc-devel make ncurses-devel openssl-devel autoconf2.1.2 下载解压缩wget 复制的下载链接地址tar -xvf otp_src_20.3.tar.gz2.1.3 安装Erlang转到解压⽬录下 cd otp_src_20.3 挨个运⾏⼀下命令./configuremake install2.2 安装RabbitMQ2.2.1 下载RabbitMQwget 复制的下载链接地址2.2.2 安装RabbitMQrpm -i --nodeps rabbitmq-server-3.7.4-1.el6.noarch.rpm在/opt/rabbitmq⽂件夹下查看安装包:rpm -qa | grep -i rabbitmq-server-3.7.4-1.el6.noarch删除安装包:rpm -e rabbitmq-server-3.7.4-1.el6.noarch2.2.3 新建⽂件,指定节点名⽂件路径: /etc/rabbitmq/rabbitmq-env.conf⽂件内容: NODENAME=rabbit@节点名节点名设为机器名称即可2.2.4 启动RabbitMQ进⼊ /usr/lib/rabbitmq/bin/运⾏ rabbitmq-server按Ctrl+C,等⼀下就退出了2.2.5 Web管理后台加载插件:rabbitmq-plugins enable rabbitmq_management再次运⾏ rabbitmq-server三.RabbtiMQ⽤户管理3.1 参考链接3.2 添加⼀个⽤户rabbitmqctl add_user ⽤户名⽤户密码3.3 给⽤户赋⾓⾊rabbitmqctl set_user_tags ⽤户名⾓⾊名3.4 给⽤户赋权限rabbitmqctl set_permissions -p "/" ⽤户名 ".*" ".*" ".*"3.5 删除⽤户rabbitmqctl delete_user ⽤户名3.6查看⽤户rabbitmqctl list_users注: 默认⽤户为guest guest,可新建⽤户给⽂件赋权限:chmod 777 /⽂件夹名字/⽂件名字或者*四.RabbitMQ集群搭建4.1 环境准备多台(3台)安装RabbitMQ Server的服务器,服务器IP分别为 ip1,ip2,ip3,以选择ip1服务器为主节点为例4.2 保持.erlang.cookie⼀致1)复制ip1服务器中的.erlang.cookie(.erlang.cookie 存在于/var/lib/rabbitmq/.erlang.cookie 和~/.erlang.cookie中)2)保持ip1,ip2,ip3服务器中的/var/lib/rabbitmq/.erlang.cookie和~/.erlang.cookie⼀致4.3 后台启动各个节点这样就成功了,⽹页访问⼀下能成功就⾏切记:启动后不要关闭,否则会出现错误4.4 查看各节点状态rabbitmqctl status4.5 配置各节点的hosts⽂件⽂件路径:vi /etc/hosts⽂件内容:(注:名称为2.2.3中的节点名)10.170.1.22 linux0210.170.1.23 linux034.6 建⽴集群*以ip1服务器为主节点为例,在ip2,ip3上执⾏相同的如下操作ip1服务器要启动着(在/usr/lib/rabbitmq/bin下运⾏rabbitmq-server),然后在ip2和ip3上做以下操作rabbitmqctl stop_apprabbitmqctl reset //可以不做rabbitmqctl join_cluster rabbit@名称1rabbitmqctl start_app4.7 查看集群的状态信息rabbitmqctl cluster_status4.8 镜像队列1).登录web后台管理页⾯2).Admin -> Policies -> Add/update a policy3).填写内容(例如:Name:Mirror_RabbitMQPattern:^ //"^"表⽰所有,最好⼿动输⼊,不要粘贴Definition:HAmode=exactlyHAprarms=2HAsyncmode=automatic)4).Add policy添加⼀个,其他的也都会有该策略以下不⽤做4.9 退出集群rabbitmqctl stop_apprabbitmqctl resetrabbitmqctl start_app4.10 移除节点1)关闭要移除的节点Arabbitmqctl stop_app2)在其他节点B移除节点Arabbitmqctl forget_cluster_node rabbit@rabbitName五.负载均衡-HAProxy5.1 安装epel5.2 安装HAProxyyum -y install haproxy5.1/5.2每台服务器都安装5.3 修改配置⽂件1) 配置⽂件路径:vi /etc/haproxy/haproxy.cfg注:此配置需要在每台服务器上做⼀下,⾥⾯标红的IP必须和该配置⽂件所在的服务器IP⼀致2)在配置⽂件中追加如下内容:#---------------------------------------------------------------------# RabbitMQ集群负载均衡#---------------------------------------------------------------------# 1.HAProxy统计页⾯配置listen haproxy_front 10.170.1.18:1080mode httpstats refresh 30sstats uri /haproxy/statsstats realm Haproxy Managerstats auth admin:admin# 2.rabbitmq集群负载均衡配置# 通过10.170.1.18:5678接⼊rabbitmqlisten rabbitmq_cluster 10.170.1.18:5678option tcplogmode tcptimeout client 3htimeout server 3hbalance roundrobinserver node1 10.170.1.18:5672 check inter 5s rise 2 fall 3server node2 10.170.1.16:5672 check inter 5s rise 2 fall 3# 3.rabbitmq集群web管理页⾯均衡配置listen rabbitmq_admin 10.170.1.18:15678server node1 10.170.1.18:15672server node2 10.170.1.16:156725.4 重启HAproxyservice haproxy restart六.主备-Keepalived6.1 安装Keepalivedyum install keepalived6.2 创建监控脚本脚本路径:vi /etc/keepalived/check_haproxy.sh脚本内容:#!/bin/bashif [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];thenfisleep 2if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];thenservice keepalived stopfi6.1/6.2主备机都需要做6.3 修改主机Keepalived配置⽂件⽂件路径:vi /etc/keepalived/keepalived.conf (这个⽂件先删除,然后在新建即可)⽂件内容:#Keepalived配置⽂件global_defs {router_id NodeA #路由ID, 主备的ID不能相同}#⾃定义监控脚本vrrp_script chk_haproxy {script "/etc/keepalived/check_haproxy.sh"interval 5weight 2}vrrp_instance VI_1 {state MASTER #Keepalived的⾓⾊。
RabbitMQ使用手册一、简介RabbitMQ是一个开源的消息代理软件,它实现了AMQP(高级消息队列协议)。
RabbitMQ可以在分布式系统中可靠地传递消息,并提供了多种消息传递模式。
通过使用RabbitMQ,应用程序可以解耦和简化其组件之间的通信。
二、安装与配置RabbitMQ可以通过包管理器(如APT或YUM)或直接从源代码进行安装。
安装完成后,您需要配置RabbitMQ服务器,包括设置用户、创建虚拟主机和配置交换机等。
三、生产者与消费者在RabbitMQ中,生产者负责创建并发送消息,而消费者负责接收和处理这些消息。
生产者需要先连接到RabbitMQ服务器,然后创建一个通道,并使用该通道发送消息到一个队列中。
消费者也需要连接到服务器,创建一个通道,然后从队列中接收消息。
四、消息路由RabbitMQ通过交换机和队列来实现消息路由。
交换机负责接收生产者发送的消息,并根据绑定的队列将消息转发给它们。
队列是存储消息的地方,消费者可以从队列中获取并处理消息。
五、可靠性RabbitMQ提供了多种可靠性机制,以确保消息在传输过程中不会丢失或重复。
例如,您可以使用持久化队列和交换机来确保即使在服务器重启后,消息也不会丢失。
此外,您还可以使用确认机制来确保消息被成功处理。
六、插件与扩展RabbitMQ提供了许多插件和扩展,以支持更多的功能和协议。
例如,您可以使用RabbitMQ的插件来支持延迟消息、主题交换、集群等。
此外,还有一些第三方插件可以与RabbitMQ集成,以支持其他协议和功能。
七、监控与管理RabbitMQ提供了丰富的监控和管理工具,以帮助您了解系统的运行状况和性能。
您可以使用RabbitMQ的管理插件来查看队列的统计信息、监视内存使用情况、查看日志等。
此外,您还可以使用第三方工具来进一步扩展监控和管理功能。
一、介绍RabbitMQRabbitMQ是使用AMQP(高级消息队列协议)的开源消息代理软件。
它可以用来处理高度的消息量,同时支持多种消息传输协议,如:AMQP、MQTT、STOMP等。
RabbitMQ的消息队列机制可以用来实现应用程序之间的异步通信,可以更好地解耦,提高系统的可扩展性和灵活性。
二、RabbitMQ的安装和部署1. 安装Erlang在安装RabbitMQ之前,首先需要安装Erlang,因为RabbitMQ是使用Erlang语言开发的。
在Linux环境下,可以通过apt或yum包管理器安装Erlang;在Windows环境下,可以通过下载安装包进行安装。
2. 安装RabbitMQ安装完成Erlang之后,可以下载RabbitMQ安装包,并按照冠方文档进行安装。
安装完成后,可以通过浏览器访问网络协议xxx,使用默认用户名和密码guest/guest登入RabbitMQ的管理界面。
3. 配置RabbitMQ在安装和部署完RabbitMQ之后,可以根据实际需要进行配置,如配置虚拟主机、用户、权限、队列等。
三、Python使用RabbitMQ1. 安装pika库在Python中使用RabbitMQ,通常会使用pika库来进行操作。
可以通过pip命令来安装pika库:`pip install pika`2. 连接RabbitMQ在Python中可以通过pika库来连接RabbitMQ,示例代码如下:```pythonimport pikaconnection =pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel()```3. 发送消息通过pika库,可以很方便地向RabbitMQ发送消息,示例代码如下:```pythonchannel.queue_declare(queue='hello')channel.basic_publish(exchange='', routing_key='hello',body='Hello, RabbitMQ!')print(" [x] Sent 'Hello, RabbitMQ!'")```4. 接收消息通过pika库,可以很方便地从RabbitMQ接收消息,示例代码如下:```pythondef callback(ch, method, properties, body):print(" [x] Received r" body)channel.basic_consume(queue='hello',on_message_callback=callback, auto_ack=True)print(' [*] W本人ting for messages. To exit press CTRL+C') channel.start_consuming()```四、总结通过以上内容的介绍,我们了解了RabbitMQ的基本概念,安装和部署方法,以及在Python中使用RabbitMQ的方法。
Linux系统RabbitMQ⾼可⽤集群安装部署⽂档RabbitMQ⾼可⽤集群安装部署⽂档架构图1)RabbitMQ集群元数据的同步RabbitMQ集群会始终同步四种类型的内部元数据(类似索引):a.队列元数据:队列名称和它的属性;b.交换器元数据:交换器名称、类型和属性;c.绑定元数据:⼀张简单的表格展⽰了如何将消息路由到队列;d.vhost元数据:为vhost内的队列、交换器和绑定提供命名空间和安全属性;2)集群配置⽅式cluster:不⽀持跨⽹段,⽤于同⼀个⽹段内的局域⽹;可以随意的动态增加或者减少;节点之间需要运⾏相同版本的 RabbitMQ 和 Erlang。
节点类型RAM node:内存节点将所有的队列、交换机、绑定、⽤户、权限和 vhost 的元数据定义存储在内存中,好处是可以使得像交换机和队列声明等操作更加的快速。
Disk node:将元数据存储在磁盘中,单节点系统只允许磁盘类型的节点,防⽌重启 RabbitMQ 的时候,丢失系统的配置信息。
解决⽅案:设置两个磁盘节点,⾄少有⼀个是可⽤的,可以保存元数据的更改。
Erlang Cookieerlang Cookie 是保证不同节点可以相互通信的密钥,要保证集群中的不同节点相互通信必须共享相同的 Erlang Cookie3)搭建RabbitMQ集群所需要安装的组件a.Jdk 1.8b.Erlang运⾏时环境c.RabbitMq的Server组件1、安装yum源⽂件2、安装Erlang# yum -y install erlang3、配置java环境 /etc/profileJAVA_HOME=/usr/local/java/jdk1.8.0_151PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar4、安装配置rabbitmq# tar -xf rabbitmq-server-generic-unix-3.6.15.tar -C /usr/local/# mv /usr/local/rabbitmq_server-3.6.15/ /usr/local/rabbitmq5、配置RabbitMQ环境变量/etc/profileRABBITMQ_HOME=/usr/local/rabbitmqPATH=$PATH:$ERL_HOME/bin:/usr/local/rabbitmq/sbin# source /etc/profile6、修改主机配置⽂件/etc/hosts192.168.2.208 rabbitmq-node1192.168.2.41 rabbitmq-node2192.168.2.40 rabbitmq-node3各个主机修改配置⽂件保持⼀致# /root/.erlang.cookie7、后台启动rabbitmq# /usr/local/rabbitmq/sbin/rabbitmq-server -detached添加⽤户# rabbitmqctl add_user admin admin给⽤户授权# rabbitmqctl set_user_tags admin administrator# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"启⽤插件,可以使⽤rabbitmq管理界⾯# rabbitmq-plugins enable rabbitmq_management查看⽤户列表# rabbitmqctl list_users查看节点状态# rabbitmqctl status查看集群状态# rabbitmqctl cluster_status查看插件# rabbitmq-plugins list添加防⽕墙规则/etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 28017 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 15672 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 5672 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 25672 -j ACCEPT8、添加集群node节点,从节点执⾏(⽬前配置2个节点)# rabbitmqctl stop_app# rabbitmqctl join_cluster --ram rabbit@rabbitmq-node2或者# rabbitmqctl join_cluster rabbit@rabbitmq-node2# rabbitmqctl change_cluster_node_type ram启动节点#rabbitmqctl start_app9、删除集群node 节点删除1. rabbitmq-server -detached2. rabbitmqctl stop_app3. rabbitmqctl reset4. rabbitmqctl start_app设置镜像队列策略在web界⾯,登陆后,点击“Admin--Virtual Hosts(页⾯右侧)”,在打开的页⾯上的下⽅的“Add a new virtual host”处增加⼀个虚拟主机,同时给⽤户“admin”和“guest”均加上权限1、2、# rabbitmqctl set_policy -p hasystem ha-allqueue "^" '{"ha-mode":"all"}' -n rabbit"hasystem" vhost名称, "^"匹配所有的队列, ha-allqueue 策略名称为ha-all, '{"ha-mode":"all"}' 策略模式为 all 即复制到所有节点,包含新增节点,则此时镜像队列设置成功.rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]-p Vhost:可选参数,针对指定vhost下的queue进⾏设置Name: policy的名称Pattern: queue的匹配模式(正则表达式)Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-modeha-mode:指明镜像队列的模式,有效值为 all/exactly/nodesall:表⽰在集群中所有的节点上进⾏镜像exactly:表⽰在指定个数的节点上进⾏镜像,节点的个数由ha-params指定nodes:表⽰在指定的节点上进⾏镜像,节点名称通过ha-params指定ha-params:ha-mode模式需要⽤到的参数ha-sync-mode:进⾏队列中消息的同步⽅式,有效值为automatic和manualpriority:可选参数,policy的优先级注以上集群配置完成⾼可⽤HA配置Haproxy 负载均衡,keepalived实现健康检查HA服务安装配置解压⽂件# tar -zxf haproxy-1.8.17.tar.gz查看内核版本# uname –r# yum -y install gcc gcc-c++ make切换到解压⽬录执⾏安装# make TARGET=3100 PREFIX=/usr/local/haproxy # make install PREFIX=/usr/local/haproxy创建配置⽂件相关⽬录# mkdir /usr/local/haproxy/conf# mkdir /var/lib/haproxy/# touch /usr/local/haproxy/haproxy.cfg# groupadd haproxy# useradd haproxy -g haproxy# chown -R haproxy.haproxy /usr/local/haproxy# chown -R haproxy.haproxy /var/lib/haproxy配置⽂件globallog 127.0.0.1 local2chroot /var/lib/haproxypidfile /var/run/haproxy.pidmaxconn 4000user haproxygroup haproxydaemon# turn on stats unix socketstats socket /var/lib/haproxy/stats#---------------------------------------------------------------------defaultsmode httplog globaloption httplogoption dontlognulloption http-server-closeoption redispatchretries 3timeout http-request 10stimeout queue 1mtimeout connect 10stimeout client 1mtimeout server 1mtimeout http-keep-alive 10stimeout check 10smaxconn 3000#监控MQ管理平台listen rabbitmq_adminbind 0.0.0.0:8300 server rabbitmq-node1 192.168.2.208:15672 server rabbitmq-node2 192.168.2.41:15672 server rabbitmq-node3 192.168.2.40:15672#rabbitmq_cluster监控代理listen rabbitmq_local_clusterbind 0.0.0.0:8200#配置TCP模式mode tcpoption tcplog#简单的轮询balance roundrobin#rabbitmq集群节点配置 server rabbitmq-node1 192.168.2.208:5672 check inter 5000 rise 2 fall 2 server rabbitmq-node2 192.168.2.41:5672 check inter 5000 rise 2 fall 2 server rabbitmq-node3 192.168.2.40:5672 check inter 5000 rise 2 fall 2 #配置haproxy web监控,查看统计信息listen private_monitoringbind 0.0.0.0:8100mode httpoption httplogstats enablestats uri /statsstats refresh 30s#添加⽤户名密码认证stats auth admin:admin启动haproxy服务# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg#Keepalived 源码安装软件包路径 /usr/local/src安装路径 /usr/local/keepalived配置⽂件/etc/keepalived/keeplived.conf# tar -zxf keepalived-2.0.10.tar.gz#安装依赖包# yum -y install openssl-devel libnl libnl-devel libnfnetlink-devel# ./configure --prefix=/usr/local/keepalived && make && make install创建keepalived配置⽂件⽬录#mkdir /etc/keepalived拷贝配置⽂件到/etc/keepalived⽬录下# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/复制keepalived脚本到/etc/init.d/ ⽬录# cp /usr/local/src/keepalived-2.0.10/keepalived/etc/init.d/keepalived /etc/init.d/拷贝keepalived脚本到/etc/sysconfig/ ⽬录# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/建⽴软连接# ln -s /usr/local/keepalived/sbin/keepalived /sbin/添加到开机启动# chkconfig keepalived on查看服务状况# systemctl status keepalivedKeepalived启动# systemctl start keepalivedmaster 配置⽂件#Master :global_defs {notification_email {134********m@}notification_email_from 134********m@smtp_server 127.0.0.1smtp_connect_timeout 30router_id NGINX_DEVEL}vrrp_script chk_haproxy {script "/usr/local/keepalived/check_haproxy.sh"interval 2weight 2fall 3rise 2}vrrp_instance haproxy_1 {state MASTERinterface ens33virtual_router_id 104priority 150advert_int 1mcast_src_ip 192.168.2.41authentication {auth_type PASSauth_pass 1111}track_interface {ens33}track_script {check_haproxy.sh}virtual_ipaddress {192.168.33.110}}#virtual_server 192.168.2.110 80 {# delay_loop 6 # 设置健康检查时间,单位是秒# lb_algo wrr # 设置负载调度的算法为wlc# lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式# nat_mask 255.255.255.0# persistence_timeout 0# protocol TCP# real_server 192.168.220.128 80 { # 指定real server1的IP地址# weight 3 # 配置节点权值,数字越⼤权重越⾼#TCP_CHECK {# connect_timeout 10# nb_get_retry 3# delay_before_retry 3# connect_port 80# }# }# }}#Slave :global_defs {notification_email {134********m@}notification_email_from 134********m@smtp_server 127.0.0.1smtp_connect_timeout 30router_id NGINX_DEVEL}vrrp_script chk_haproxy {script "/usr/local/keepalived/check_haproxy.sh"interval 2weight 2fall 3rise 2}vrrp_instance haproxy_2 {state SLAVEinterface ens33virtual_router_id 104priority 150advert_int 1mcast_src_ip 192.168.2.208authentication {auth_type PASSauth_pass 1111}track_interface {ens33}track_script {check_haproxy.sh}virtual_ipaddress {192.168.2.246}}#virtual_server 192.168.2.110 80 {# delay_loop 6 # 设置健康检查时间,单位是秒# lb_algo wrr # 设置负载调度的算法为wlc# lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式# nat_mask 255.255.255.0# persistence_timeout 0# protocol TCP# real_server 192.168.220.128 80 { # 指定real server1的IP地址# weight 3 # 配置节点权值,数字越⼤权重越⾼#TCP_CHECK {# connect_timeout 10# nb_get_retry 3# delay_before_retry 3# connect_port 80# }# }# }}haproxy检测#!/bin/bashHaproxyStatus=`ps -C haproxy --no-header | wc -l`if [ $HaproxyStatus-eq 0 ];then/etc/init.d/haproxy startsleep 3if [ `ps -C haproxy --no-header | wc -l ` -eq 0 ];then/etc/init.d/keepalived stopfifi。
RabbitMQ的安装配置环境:Ubuntu16 linux系统,ERlang语⾔的源码包:otp_src_22.0.tar.gz,rabbitMQ安装包:rabbitmq-server-generic-unix-3.7.16.tar ,jdk1.8(ERLang的编译需要系统有jdk的⽀持)想要安装rabbitMQ服务组件,需要配置ERlang语⾔环境的依赖。
⼀:ERLang语⾔的安装与配置1.更新系统软件包,想要安装ERlang语⾔环境,需要先配置⽀持库1.apt-get update2.apt-get -y install libncurses5-dev //2或者2.1依赖库选择⼀个即可2.1 apt-get -y install make g++ gcc libpcre3 libpcrecpp* libpcre3-dev libssl-dev autoconf automake libtool nfs-kernel-server libncurses5-dev libaio.dev ruby-dev rubygems vim 2.把已经上传的ERlang语⾔环境包上传服务器解压缩tar xzvf /srv/ftp/otp_src_22.0.tar.gz -C /usr/local/src/3.ERLang编译完成后需要设置⼀个编译后的程序的存储⽬录mkdir -p /usr/local/erlang4.进⼊ERLang源码⽬录cd /usr/local/src/otp_src_22.0/5.指定编译后的内容保存到指定⽬录,./configure --prefix=/usr/local/erlang6.对源码进⾏编译make && make install7.编译完成后,所有内容会⾃动保存在之前指定的“usr/local/erlang”⽬录,为了⽅便使⽤,修改profile配置⽂件,把内容设置到系统环境中vim /etc/profileexport ERLANG_HOME=/usr/local/erlangexport PATH=:$ERLANG_HOME/bin:source /etc/profile //添加后配置后进⾏激活注:如果之后出现Command 'ls' is available in '/bin/ls'类似错误,请参照我的环境变量位置添加,/usr/bin/vim /etc/profile 命令可以使⽤vim对profile⽂件进⾏修改,参考:export JAVA_HOME=/usr/local/jdk1.8export MYSQL_HOME=/usr/local/mysqlexport M2_HOME=/usr/local/mavenexport ERLANG_HOME=/usr/local/erlangexport PATH=$PATH:$JAVA_HOME/bin:$MYSQL_HOME/bin:$M2_HOME/bin:$ERLANG_HOME/bin:8.检查环境配置是否正常,可以直接输⼊ “ erl ” ,命令启动erlang的交互式编程环境打印erlio:format("Hello World!").退出编译环境halt().9.如果此时成功打印出 “Hello World!” ,说明我们的ERL环境已经配置好了。
目录
安装erlang (1)
安装rabbitmq-server-3.0.0-1 (1)
rabbit集群 (2)
RabbitMQ集群方案 (3)
Rabbitmq插件 (4)
安装环境Centos 6.2 2.6.32-220.4.1.el6.x86_64
安装软件rabbitmq-server-3.0.0-1
安装erlang
添加yum erlang扩展源
epel-release-6-5.noarch.rpm
rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
可以在这里搜索rpm包/
安装扩展源后直接yum安装erlang
yum install erlang
如果安装未成功请先安装python
yum groupinstall Base*
安装rabbitmq-server-3.0.0-1
rabbitmq扩展源安装
rpm --import /rabbitmq-signing-key-public.asc
安装扩展源后直接yum安装rabbitmq
yum install rabbitmq-server-3.0.0-1.noarch.rpm
启动rabbitmq
/etc/init.d/rabbitmq-server start
如果启动未成功你可以看下是否rabbitmq端口给占用,rabbitmq用到端口为5672、15672
如果端口未给占用请检测hosts文件
检查主机名是否一致
rabbit集群
在master上把服务器rabbitmq-1加入集群rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@rabbitmq-1 rabbitmqctl start_app
查看下状态rabbitmqctl cluster_status
master为disc
rabbitmq-1为ram
把rabbitmq-1修改为disc
查看下状态
RabbitMQ集群方案
这些都和RabbitMQ的队列模式有关:
为直观起见,流程简化为单链接,中间为RabbitMQ节点,上方为publisher,下方
为consumer。
单一模式:最简单的情况,非集群模式。
没什么好说的。
普通模式:默认的集群模式。
对于Queue来说,消息实体只存在于其中一个节点,A、B两个节点仅有相同的元数据,即队列结构。
当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。
所以consumer应尽量连接每一个节点,从中取消息。
即对于同一个逻辑队列,要在多个节点建立物理Queue。
否则无论consumer连A或B,出口总在A,会产生瓶颈。
该模式存在一个问题就是当A节点故障后,B节点无法取到A节点中还未消费的消息实体。
如果做了消息持久化,那么得等A节点恢复,然后才可被消费;如果没有持久化的话,然后就没有然后了……
镜像模式:把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案。
该模式解决了上述问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在consumer取数据时临时拉取。
该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉。
所以在对可靠性要求较高的场合中适用。
Rabbitmq插件
wget /opensourceprojects/RabbitMQ/rabbithub.ez rabbitmq-plugins list
rabbitmq-plugins enable rabbithub
/etc/init.d/rabbitmq-server restart
wget
/downloads/jbrisbin/rabbitmq-webhooks/rabbitmq-webhooks-0.15.tar.gz
tar zxvf rabbitmq-webhooks-0.15.tar.gz
cp *.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.0.0/plugins/
rabbitmq-plugins enable rabbit_webhooks
/etc/init.d/rabbitmq-server restart。