一 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 管理功能插件