Rabbitmq

一 rabbitmq

RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种客户端

二 AMQP

全称高级消息队列协议。是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

三rabbitmq 功能

在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。

四 集群中节点的分配

1.集群的元数据:集群及节点的相关信息,存储在集群中的每一台节点上。

2.集群中节点的类型:disc 节点:将元数据存储在磁盘上

ram 节点:将元数据存储在内存中

注:ram 节点的特点:速度较 disc 节点快,重启后内存中的数据将会丢失

3.集群中节点的分配:至少一个 disc 节点如果是单节点系统,那么节点类型只能是 disc

4.当新节点加入到集群中,或者节点从集群中退出,需要通知集群中所有的 disc 节点。

五 rabbitmq 的安装与监控

1.配置 epel 源

#cd /etc/yum.repos.d

#vim y.repo

3.安装 rabbitmq

#yum --enablerepo=y install rabbitmq-server -y

4.启动服务

#systemctl start rabbitmq-server

查看服务状态:#netstat -lantu|grep 5672

5.启用 web 管理客户端

加载 web 管理插件:

#rabbitmq-plugins enable rabbitmq_management

重启 rabbitmq:

#systemctl restart rabbitmq-server

查看服务状态:netstat -lantu|grep 15672

注:web 端默认的用户名为 guest,默认密码为 guest。如需修改密码rabbitmqctl change_password guest password

6.使用 web 端管理 rabbitmq 服务器

使用浏览器浏览:http://rabbitmq服务器的IP:15672

使用真实机浏览:http://rabbitmq服务器的IP:15672

六 rabbitmq 集群的建立

1.准备实验环境:三台虚拟机,设置好主机名(host-4,host-5,host-6)配置好 IP 地址,编辑好/etc/hosts 文件,使得三台主机可以互相解析主机名。配置 ntp,使三台主机的时间同步

2每一台都下载安装rabbitmq

#vim /etc/yum.repos.d/y.repo

在另外两台主机上也配置yum源

#scp host-4:/etc/yum.repos.d/y.repo /etc/yum.repos.d/

每一台主机下载安装rabbitmq

#yum --enablerepo=y install rabbitmq-server -y

2.在主(host-4)节点上开启 rabbitmq 服务,以获得.erlang.cookie

#systemctl restart rabbitmq-server

注:/var/lib/rabbitmq/.erlang.cookie 文件用于各节点之间的通信

3.在每个节点上

编辑 rabbitmq 的配置文件

#cd /etc/rabbitmq

#mv rabbitmq.config rabbitmq.config.bak

#vim rabbitmq.config

[

{rabbit,[

{default_user,<<"guest">>},

{default_pass,<<"guest">>}

]},

{kernel,[

]}

].

注:编写配置文件一定要按照上述格式

4.在 node2、node3 上复制 node1(主节点)上的.erlang.cookie

#scp host-4:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/

#chown rabbitmq. .erlang.cookie

注:.erlang.cookie 的权限为 400,属主、属组应为 rabbitmq

5.重置主节点

#rabbitmqctl stop_app

#rabbitmqctl start

6.将 node2、node3 加入至集群

#systemctl restart rabbitmq-server

#rabbitmqctl stop_app

#rabbitmqctl join_cluster --ram rabbit@host-4

#rabbitmqctl start_app

注:node2、node3 加入集群后,可通过命令 rabbitmqctl cluster_status 来查看集群的信息

7.在每个节点上

开启 web 管理功能:

#rabbitmq-plugins enable rabbitmq_management

重启 rabbitmq-server:

#systemctl restart rabbitmq-server

8.使用浏览器访问主节点:++++http://主节点 IP:15672++++

可见集群内各节点的状态及节点类型(disc/ram)

七 集群内节点管理

1.查看集群状态(在每个节点上都可以查看)

rabbitmqctl cluster_status

2.更改节点类型(在相应的节点上操作)

rabbitmqctl stop_app

rabbitmqctl change_cluster_node_type ram

rabbitmqctl start_app

3.从集群中移除节点

在被移除的节点上操作

rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl start_app

使用命令 rabbitmqctl cluster_status 可查看当前集群状态

八 自动配置集群

1.准备实验环境:三台虚拟机,设置好主机名(node1,node2,node3)配置好 IP 地址,编辑好/etc/hosts 文件,使得三台主机可以互相解析主机名。配置 ntp,使三台主机的时间同步

2.在主节点上开启服务:#systemctl restart rabbitmq-server

3.在其他节点上:

#scp root@node1:/var/lib/rabbimq/.erlang.cookie /var/lib/rabbimq

注:注意.erlang.cookie 的属主、属组应为 rabbitmq

4.在所有节点上编辑配置文件

#cd /etc/rabbitmq

#mv rabbitmq.config rabbitmq.config.bak

#vim rabbimq.config

[{rabbit,

[{cluster_nodes, {['rabbit@host-4', 'rabbit@host-5',

'rabbit@host-6'], disc}}]}].

5.所有节点重启 rabbitmq:

#systemctl restart rabbitmq-server

6.可通过命令:rabbitmqctl cluster_status 查看集群内节点状态也可以通过浏览器查看集群状态,但是需在每个节点上启动 web 管理功能插件

相关推荐
一点媛艺1 小时前
Kotlin函数由易到难
开发语言·python·kotlin
姑苏风1 小时前
《Kotlin实战》-附录
android·开发语言·kotlin
奋斗的小花生2 小时前
c++ 多态性
开发语言·c++
魔道不误砍柴功2 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2342 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
闲晨2 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
老猿讲编程2 小时前
一个例子来说明Ada语言的实时性支持
开发语言·ada
Chrikk3 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*3 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue3 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang