zoukankan      html  css  js  c++  java
  • 私有云Rabbitmq 集群部署

      默认openstack使用rabbitmq做信息队列,如果想要是云高可用,那么需要对每个涉及的组件都进行高可用配置,本文介绍如何使用rabbitmq

    做高可用

    高可用方法

    通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。
    这些节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列结构复制。本方案中搭建 3 个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ 集群对外就能提供服务。

    主机服务器信息

    node1 192.168.56.60 rabbitmq01
    node2 192.168.56.61 rabbitmq02
    node3 192.168.56.62 rabbitmq03

    系统环境为

    rabbitmq版本为3.3.5

    # cat /etc/redhat-release 
    CentOS Linux release 7.2.1511 (Core) 
    # uname -r
    3.10.0-327.el7.x86_64

    主机解析配置

    #cat /etc/hosts
    192.168.56.60 rabbitmq01
    192.168.56.61 rabbitmq02
    192.168.56.62 rabbitmq03

    NTP 三台都配置上 保持时间是一致的

    一 软件安装

    安装第三方库与rabbitmq
    可以安装阿里云的epel
    #yum install rabbitmq-server

    启动服务

    systemctl enable rabbitmq-server.service
    systemctl start rabbitmq-server.service

    二 配置

    在node1里配置

    (1)设置每个节点Cookie

    Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信

    将node1的/var/lib/rabbitmq/.erlang.cookie复制到node2与node3

    修改权限(所有节点)

    chmod 400 /var/lib/rabbitmq/.erlang.cookie
    chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

    在node2里面配置

    [root@rabbitmq02 rabbitmq]# rabbitmqctl stop_app
    Stopping node rabbit@rabbitmq02 ...
    ...done.
    [root@rabbitmq02 rabbitmq]# rabbitmq join_cluster rabbit@rabbitmq01
    
    [root@rabbitmq02 rabbitmq]# rabbitmqctl start_app

    在node3里面配置

    [root@rabbitmq03 rabbitmq]# rabbitmqctl stop_app
    Stopping node rabbit@rabbitmq03 ...
    ...done.
    [root@rabbitmq03 rabbitmq]# rabbitmq join_cluster rabbit@rabbitmq01
    
    [root@rabbitmq03 rabbitmq]# rabbitmqctl start_app

    此时 node2 与 node3 也会自动建立连接;如果要使用内存节点,则可以使用

    node2 # rabbitmqctl join_cluster --ram rabbit@node1 加入集群
     

    查看集群状态

    # rabbitmqctl cluster_status
    Cluster status of node rabbit@rabbitmq02 ...
    [{nodes,[{disc,[rabbit@rabbitmq01,rabbit@rabbitmq02,rabbit@rabbitmq03]}]},
     {running_nodes,[rabbit@rabbitmq01,rabbit@rabbitmq03,rabbit@rabbitmq02]},
     {cluster_name,<<"rabbit@rabbitmq01">>},
     {partitions,[]}]
    ...done.

    三 集群高可用配置

    设计镜像队列策略

    在任何一个节点配置

    #rabbitmqctl set_policy ha-all '^(?!amq.).*' '{"ha-mode": "all"}'

    四 远程添加账户登陆

    如果要从远程登录怎么做呢?处于安全考虑,guest这个默认的用户只能通过http://localhost:15672来登录,其他的IP无法直接用这个guest帐号。这里我们可以通过配置文件来实现从远程登录管理界面,只要编辑/etc/rabbitmq/rabbitmq.config文件(没有就新增),添加以下配置就可以了。

    [ 
    {rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["asdf"]}]} 
    ].

    现在添加了一个新授权用户asdf,可以远程使用这个用户名。记得要先用命令添加这个命令才行:

    $ cd /usr/lib/rabbitmq/bin/
    #用户名与密码
    $ sudo rabbitmqctl add_user asdf 123456
    #用户设置为administrator才能远程访问
    $ sudo rabbitmqctl set_user_tags asdf administrator 
    $ sudo rabbitmqctl set_permissions -p / asdf ".*" ".*" ".*"
  • 相关阅读:
    MongoDB中常用的find
    MongoDB文档的增删改操作
    我的notepad++
    MongoDB入门知识
    Python基础5-常用模块
    Python基础4
    Python基础3(2017-07-20)
    Python基础2(2017-07-18)
    Python基础1(2017-07-16)
    Python简介(2017-07-16)
  • 原文地址:https://www.cnblogs.com/yexiaochong/p/6164023.html
Copyright © 2011-2022 走看看