CentOS 6.3安装及配置RabbitMQ cluster

Why not ZeroMQ

ZeroMQ更快不是吗?是的,RabbitMQ更丰富。看场景了,还是那句话,没有最好的,只有最合适的。

Erlang编译安装

参考文档:http://www.erlang.org/doc/installation_guide/INSTALL.html#How-to-Build-and-Install-ErlangOTP


"By default, Erlang/OTP will be installed in /usr/local/{bin,lib/erlang}. To instead install in <BaseDir>/{bin,lib/erlang}, use the --prefix=<BaseDir> option."

 注:编译安装的目录结构如上描述。yum安装R15B03-1这个版本默认安装到了/usr/lib/erlang,而不是/usr/local/lib/erlang.

yum安装简单:

1.wget -O /etc/yum.repos.d/erlang_solutions.repo http://binaries.erlang-solutions.com/rpm/centos/erlang_solutions.repo

2. yum install esl-erlang

下文为编译安装过程:

[root@cx-t1 ~] # cd /usr/local/src/
[root@cx-t1 src] # tar -xzf ./otp_src_R15B03-1.tar.gz ; cd otp_src_R15B03
[root@cx-t1 src] # ./configure
[root@cx-t1 src] # make
[root@cx-t1 src] # make install 

 

RabbitMQ编译安装

  • 准备工作:修改机器名及安装依赖包
[root@cx-t1 ~] # hostname rabbitmq-1
[root@cx-t1 ~] # vi /etc/sysconfig/network
HOSTNAME= cx-t1
[root@cx-t1 ~] # vi /etc/hosts
# 有内部DNS的省事多了,墙裂推荐搞个内部DNS,以FQDN的形式保存主机名(别学我)
192.168.7.101     cx-t1
192.168.7.102     cx-t2
[root@cx-t2 ~] # yum install xmlto
 
  • 编译安装
[root@cx-t1 ~] # cd /usr/local/src/
[root@cx-t1 src] # tar -xzf ./rabbitmq-server-3.0.1.tar.gz; cd rabbitmq-server-3.0.1
[root@cx-t1 rabbitmq-server-3.0.1] # make
[root@cx-t1 rabbitmq-server-3.0.1] # make TARGET_DIR=/usr/local/rabbitmq-3.0.1 SBIN_DIR=/usr/local/rabbitmq-3.0.1/sbin MAN_DIR=/usr/local/rabbitmq-3.0.1/man install
[root@cx-t1 rabbitmq-server-3.0.1] # vi /usr/local/rabbitmq-3.0.1/sbin/rabbitmq-defaults
CONFIG_FILE= /data/rabbitmq/rabbitmq
LOG_BASE= /data/log/rabbitmq
MNESIA_BASE= /data/rabbitmq/mnesia
ENABLED_PLUGINS_FILE= /data/rabbitmq/enabled_plugins
CONF_ENV_FILE= /data/rabbitmq/rabbitmq-env .conf
[root@cx-t1 rabbitmq-server-3.0.1] # mkdir -pv /data/rabbitmq/mnesia /data/log/rabbitmq
[root@cx-t1 rabbitmq-server-3.0.1] # groupadd -g 5672 rabbitmq ; useradd -u 5672 -g 5672 -d /home/rabbitmq -m rabbitmq
[root@cx-t1 rabbitmq-server-3.0.1] # chown -R rabbitmq:rabbitmq /data/log/rabbitmq /data/rabbitmq
[root@cx-t1 rabbitmq-server-3.0.1] # ln -s /usr/local/rabbitmq-3.0.1 /usr/local/rabbitmq
[root@cx-t1 rabbitmq-server-3.0.1] # vi /etc/profile
export PATH= /usr/local/rabbitmq/sbin :$PATH
[root@cx-t1 rabbitmq-server-3.0.1] # source /etc/profile
[root@cx-t1 rabbitmq-server-3.0.1] # rabbitmqctl --help
通过查看安装包中的MakeFile可以发现几个配置参数TARGET_DIR、SBIN_DIR和MAN_DIR需要在make时指定,
而RABBITMQ_NODENAME、RABBITMQ_MNESIA_DIR和RABBITMQ_LOG_BASE等即可在make时指定亦可在install后修改sbin/rabbitmq-defaults这个文件。
[root@cx-t1 ~] # echo "your cookie, as complex as possible" > /home/rabbitmq/.erlang.cookie
[root@cx-t1 rabbitmq-server-3.0.1] # su - rabbitmq
[rabbitmq@cx-t1 ~]$ rabbitmq-plugins enable rabbitmq_management
  • 启动服务
[rabbitmq@cx-t1 ~]$ rabbitmq-server -detached
[rabbitmq@cx-t1 ~]$ rabbitmqctl list_users

配置RabbitMQ Clustering

Clustering配置有两种方式:

  • 使用rabbitmqctl

    这种方式轻便简洁,可以动态增减node(推荐)。

    下面这个脚本例子就是将node rabbit@cx-t2加入到rabbit@cx-t1这个node。这种方式即便rabbit@cx-t2中有数据也会被rabbit@cx-t1所覆盖,相当于rabbit@cx-t2自动reset了。

    [rabbitmq@cx-t2 ~]$ rabbitmqctl stop_app
    Stopping node 'rabbit@cx-t2' ...
    ... done .
    [rabbitmq@cx-t2 ~]$ rabbitmqctl join_cluster rabbit@cx-t1
    Clustering node 'rabbit@cx-t2' with 'rabbit@cx-t1' ...
    ... done .
    [rabbitmq@cx-t2 ~]$ rabbitmqctl start_app
    Starting node 'rabbit@cx-t2' ...
    ... done .
    [rabbitmq@cx-t2 ~]$ rabbitmqctl cluster_status
    Cluster status of node 'rabbit@cx-t2' ...
    [{nodes,[{disc,[ 'rabbit@cx-t1' , 'rabbit@cx-t2' ]}]},
      {running_nodes,[ 'rabbit@cx-t1' , 'rabbit@cx-t2' ]},
      {partitions,[]}]
    ... done .
  • 修改rabbitmq.config这个配置文件
    必须是fresh node——即mnesia数据库是空的,才可以正常启动,否则需要执行如下命令后rabbitmqctl reset才可以正常启动加入集群。

    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl start_app

At least one disk node should be running at all times to prevent data loss. RabbitMQ will prevent the creation of a RAM-only cluster in many situations, but it still won't stop you from stopping and forcefully resetting all the disc nodes, which will lead to a RAM-only cluster. Doing this is not advisable and makes losing data very easy.

集群中至少保证有一个disk node。实际上,两个disk node加若干个RAM node既能保证性能又能避免数据丢失(容灾)。

When the entire cluster is brought down, the last node to go down must be the first node to be brought online. If this doesn't happen, the nodes will wait 30 seconds for the last disc node to come back online, and fail afterwards. If the last node to go offline cannot be brought back up, it can be removed from the cluster using the forget_cluster_node command - consult the rabbitmqctl manpage for more information.

当集群中的node都stop后,再次启动时一定要第一个启动最后一个被stop的node。

more: http://www.rabbitmq.com/clustering.html


 

总结:

  • RabbitMQ安装步骤在每个机器上都是一样的,management plugin只需在一个机器上激活即可。
  • 一定要确保每个机器上的erlang cookie都是一样的,这样node间才可以互相访问。
  • 服务一定要用rabbitmq这个用户启动,不要使用root。
  • rabbitmq默认的端口为5672,management plugin的默认端口为15672。
  • 首次登录管理界面(http://yourhost:15672)用guest这个账号,密码为guest。登录后修改guest密码或新建一个管理员账号再删除guest
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 系统上安装配置 RabbitMQ,你可以按照以下步骤进行: **安装 RabbitMQ:** 1. 更新系统包列表并安装 EPEL (Extra Packages for Enterprise Linux) 插件,因为 RabbitMQ 的官方软件包不在 CentOS 的默认存储库中: ``` sudo yum install epel-release -y ``` 2. 添加 RabbitMQ 的官方仓库,并安装 RabbitMQ: ``` sudo yum install https://www.rabbitmq.com/rabbitmq-release-eol-3.9.noarch.rpm sudo yum install rabbitmq-server ``` **启动和设置服务:** 3. 启动 RabbitMQ 服务: ``` sudo systemctl start rabbitmq-server ``` 4. 验证 RabbitMQ 是否正在运行,可以使用 `rabbitmqctl` 命令: ``` sudo rabbitmqctl status ``` 5. 设置 RabbitMQ 为开机自启动: ``` sudo systemctl enable rabbitmq-server ``` **配置 RabbitMQ:** 6. 配置文件位于 `/etc/rabbitmq/rabbitmq.conf`,根据需求调整参数。比如,限制最大连接数、设置监听端口等。使用文本编辑器打开,例如: ``` sudo nano /etc/rabbitmq/rabbitmq.conf ``` 7. 安全性方面,你可以创建用户并设置权限,可以使用 `rabbitmqctl` 创建并管理用户: ``` sudo rabbitmqctl add_user user_name password sudo rabbitmqctl set_user_tags user_name administrator sudo rabbitmqctl set_permissions -p / user_name ".*" ".*" ".*" ``` **验证配置和访问:** 8. 使用 `rabbitmqctl` 或者 `rabbitmq-plugins list` 检查配置和插件状态。 9. 可以通过 `rabbitmqctl list_users` 查看用户列表,使用 `rabbitmq-plugins list` 列出已安装的插件。 10. 在服务器上通过浏览器访问 `http://localhost:15672`(默认管理界面端口),输入用户名和密码,验证能否登录管理界面。 **相关问题--:** 1. CentOS 中如何检查 Rabbimq 服务的状态? 2. 如何在 RabbitMQ 中创建和管理用户? 3. RabbitMQ 的默认管理界面是通过哪个 URL 访问的?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值