erlang rabbitmq源码解析_rabbitmq编译部署以及常见报错

本文详细介绍了如何源码安装Erlang,包括下载源码、解压、配置、编译和安装过程,以及解决安装过程中遇到的问题。接着讲解了RabbitMQ的启动和插件安装,并展示了如何部署RabbitMQ集群,重点在于Erlang Cookie的设置和同步,以及节点类型转换和从集群中分离的操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)源码安装Erlang

(1)下载erlang源码包

wget http://www.erlang.org/download/otp_src_R13B04.tar.gz

(2)解压缩erlang源码包

tar -zxvf otp_src_R13B04.tar.gz

(3)安装

./configure  --prefix=/usr/local/erlang

./make

./make install

如果抛出如下错误

No curses library functions found

请先安装 curses library

yum -y install ncurses-devel

在安装otp时遇到了一点问题,整体的安装过程比较简单。

这里我只需要解决APPLICATIONS DISABLED部分的问题:

1,安装unixODBC和unixODBC-devel,解决第一个问题;

2,因为我这里用不上Java编译了,因此可以在configure时增加 –disable-javac 避免第二个错误;

./configure --prefix=/usr/local/erlang --disable-javac

make && make install

定义环境变量 [root@localhost otp_src_R13B04]# cat /etc/profile.d/erlang.sh

export PATH=$PATH:/usr/local/erlang/bin

[root@localhost otp_src_R13B04]# erl -sname test

Erlang R13B04 (erts-5.7.5) [source] [64-bit] [rq:1] [async-threads:0] [kernel-poll:false]

(3)启动rabbitmq-server

cd rabbitmq_server-3.2.0

sbin/rabbitmq-server

插件安装

cd /usr/local/rabbitmq/sbin/

./rabbitmq-plugins enable rabbitmq_management

可以在浏览器中输入:http://192.168.1.164:15672/ 默认用户是guest 默认密码是guest

======================================================

集群部署

设置 Erlang Cookie

RabbitMQ节点之间和命令行工具 (e.g. rabbitmqctl)是使用Cookie互通的,Cookie是一组随机的数字+字母的字符串。当RabbitMQ服务器启动的时候,Erlang VM会自动创建一个随机内容的Cookie文件。如果是通过源安装RabbitMQ的话,Erlang Cookie 文件在/var/lib/rabbitmq/.erlang.cookie。如果是通过源码安装的RabbitMQ,Erlang Cookie文件$HOME/.erlang.cookie。

本文演示的实例是用源码安装,由于这个文件权限是 400,所以需要先修改 node2、node3 中的该文件权限为 777:

lion@node1:~$ chmod 777 .erlang.cookie  然后将文件复制到node2、node3上面。

node2:

lion@node2:~$ chmod 777 .erlang.cookie

lion@node2:~$ scp -r node1:/home/lion/.erlang.cookie ~/

lion@node1's password:

.erlang.cookie 100% 20 0.0KB/s 00:00node3:

lion@node3:~$ chmod 777 .erlang.cookie

lion@node3:~$ scp -r node1:/home/lion/.erlang.cookie ~/

lion@node1's password:

.erlang.cookie 100% 20 0.0KB/s 00:00  分别在node1、node2、node3将权限恢复过来:

lion@node1:~$ chmod 400 .erlang.cookie  最后分别在确认三台机器上的.erlang.cookie的值是一致的

lion@node1:~$ cat .erlang.cookie

VORMVSAAOFOFEQKTNWBA

lion@node2:~$ cat .erlang.cookie

VORMVSAAOFOFEQKTNWBA

lion@node3:~$ cat .erlang.cookie

VORMVSAAOFOFEQKTNWBA

(3)分别启动rabbitmq

[root@ptr164 rabbitmq_server-3.2.0]# sbin/rabbitmq-server -detached

[root@ptr165 rabbitmq_server-3.2.0]# sbin/rabbitmq-server -detached

[root@ptr165 rabbitmq_server-3.2.0]# sbin/rabbitmqctl start_app

查看集群状态

[root@ptr165 rabbitmq_server-3.2.0]# sbin/rabbitmqctl cluster_status

[root@rabbit104 rabbitmq_server-3.2.0]# sbin/rabbitmqctl cluster_status

Cluster status of node rabbit@rabbit104 ...br/>[{nodes,[{disc,[rabbit@rabbit103]},{ram,[rabbit@rabbit104]}]},

{running_nodes,[rabbit@rabbit103,rabbit@rabbit104]},

{partitions,[]}]

...done.

[root@rabbit104 rabbitmq_server-3.2.0]#

两个节点得到相同的输出,其中rabbit@ptr164节点形式是disc,rabbit@ptr165节点形式是ram。这和执行join_cluster命令是的选项--ram是一致的。

(5)改变节点形式

[plain] view plain copy print?1. [root@ptr165 rabbitmq_server-3.2.0]# sbin/rabbitmqctl stop_app

Stopping node rabbit@ptr165 ...

...done.

[root@ptr165 rabbitmq_server-3.2.0]# sbin/rabbitmqctl change_cluster_node_type disc

Turning rabbit@ptr165 into a disc node ...

...done.

[root@ptr165 rabbitmq_server-3.2.0]# sbin/rabbitmqctl start_app

Starting node rabbit@ptr165 ...

...done.

我们将rabbit@ptr165的节点改为disc

[plain] view plain copy print?1. [root@ptr164 rabbitmq_server-3.2.0]# sbin/rabbitmqctl cluster_status

Cluster status of node rabbit@ptr164 ...

[{nodes,[{disc,[rabbit@ptr164,rabbit@ptr165]}]},

{running_nodes,[rabbit@ptr165,rabbit@ptr164]},

{partitions,[]}]

...done.

两个节点都是disc的形式

(6)从cluster中分离

[plain] view plain copy print?1. [root@ptr165 rabbitmq_server-3.2.0]# sbin/rabbitmqctl stop_app

Stopping node rabbit@ptr165 ...

...done.

[root@ptr165 rabbitmq_server-3.2.0]# sbin/rabbitmqctl reset

Resetting node rabbit@ptr165 ...

...done.

[root@ptr165 rabbitmq_server-3.2.0]# sbin/rabbitmqctl start_app

Starting node rabbit@ptr165 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值