zoukankan      html  css  js  c++  java
  • CentOS RabbitMQ 高可用(Mirrored)

    原文:https://www.sunjianhua.cn/archives/centos-rabbitmq.html

    一、RabbitMQ 单节点

    1.1、Windows 版安装配置

    1.1.1 安装Erlang环境

    下载地址: http://www.erlang.org/downloads
    文件: http://erlang.org/download/otp_win64_20.3.exe

    安装: 一直下一步安装结束!
    1.1.2 安装RabbitMQ
    默认安装:https://www.rabbitmq.com/install-windows.html
    文件:https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.5/rabbitmq-server-3.7.5.exe

    安装:一直下一步安装结束!

    1.1.3 配置管理插件

    A.开始菜单出搜索rabbitmq,打开RabbitMQ Command Prompt命令行
    RabbitMQ-win1.png

    B.启动管理插件
    https://www.rabbitmq.com/rabbitmq-plugins.8.html

    RabbitMQ-win2.png

    C.访问RabbitMQ管理地址:http://127.0.0.1:15672,默认密码:guest/guest
    RabbitMQ-win3.png
    RabbitMQ-win4.png

    1.1.4 开启关闭服务
    RabbitMQ-win5.png

    1.2、Linux CE 版 (centos7 )

    系统:CentOS Linux release 7.4.1708
    地址:192.168.2.113

    1.2.1 安装Erlang环境
    http://www.rabbitmq.com/install-rpm.html
    https://www.erlang-solutions.com/resources/download.html

    > wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
    > rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
    > rpm --import https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
    > yum install epel-release -y
    > sudo yum install erlang  
    
    
    #验证:终端输入 erl ,出现如下图,安装成功!
    

    1.2.2 安装RabbitMQ
    https://www.rabbitmq.com/install-rpm.html

    #安装:
    > wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.5/rabbitmq-server-3.7.5-1.el7.noarch.rpm
    
    > rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
    
    > yum install rabbitmq-server-3.7.5-1.el7.noarch.rpm
    
    
    #开机启动:
    > systemctl enable rabbitmq-server.service
    
    #启动:
    > systemctl start rabbitmq-server.service
    
    #停止:
    > systemctl stop rabbitmq-server.service
    
    #查看状态:
    > systemctl status rabbitmq-server.service
    

    RabbitMQ-linux1.png

    1.2.3 配置管理插件

    #A.开启插件
    > rabbitmq-plugins enable rabbitmq_management
    
    #B.添加用户
    
    > sudo rabbitmqctl add_user admin 123456
    > sudo rabbitmqctl set_user_tags admin administrator
    > sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
    
    #C.重启查看
        
    > systemctl restart rabbitmq-server.service
    
    
    #关闭防火墙: 
    管理地址: http://192.168.2.113:15672/
    

    RabbitMQ-linux-manage1.png
    RabbitMQ-linux-manage2.png

    1.2.4 卸载

    > yum erase rabbitmq-server -y
    > rm -rf /var/lib/rabbitmq/
    > rm -rf /etc/rabbitmq
    

    二、RabbitMQ 集群

    https://www.rabbitmq.com/clustering.html

    系统:CentOS Linux release 7.4.1708
    192.168.2.113 hostname host01 存储方式是Disk 硬盘
    192.168.2.114 hostname host02 存储方式是RAM 内存
    192.168.2.115 hostname host03 存储方式是Disk 硬盘

    2.1、安装

    三台服务器同时安装Linux CE版,同单机方式

    2.2、配置

    2.2.1 设置hosts

    > vi /etc/hosts
    
    192.168.2.113 host01
    192.168.2.114 host02
    192.168.2.115 host03
    

    如下图:
    RabbitMQ-linux-hosts.png

    2.2.2 统一使用erlang.cookie

    > scp -r /var/lib/rabbitmq/.erlang.cookie  rabbitmq02:/var/lib/rabbitmq/.erlang.cookie
    > scp -r /var/lib/rabbitmq/.erlang.cookie  rabbitmq03:/var/lib/rabbitmq/.erlang.cookie
    

    2.2.3 重启三个rabbitmq-server

    > systemctl restart rabbitmq-server
    

    查看日志:

    RabbitMQ-linux-logs.png

    2.2.4 创建集群

    将rabbit@host02和rabbit@host03节点加入rabbit@host01

    #在host02执行:
    > rabbitmqctl stop_app
    > rabbitmqctl join_cluster --ram rabbit@host01
    > rabbitmqctl start app

    RabbitMQ-linux-host02.png

    #在host03执行:
    > rabbitmqctl stop_app
    > rabbitmqctl join_cluster --ram rabbit@host01
    > rabbitmqctl start app

    RabbitMQ-linux-host03.png

    #然后在host01上查看集群:
    > rabbitmqctl cluster_status

    RabbitMQ-linux-cluster-status.png

    #设置镜像策略:
    > rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
    

    2.2.4 设置管理员

    # 在host01上面设置管理员:
    > sudo rabbitmqctl add_user root 123456
    > sudo rabbitmqctl set_user_tags root administrator
    > sudo rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
    

    打开一下任意地址:
    http://192.168.2.113:15672
    http://192.168.2.114:15672
    http://192.168.2.115:15672

    都可以登录
    RabbitMQ-linux-cluster-login.png

    2.3、常见命令

    2.3.1 服务启动关闭
    启动:systemctl start rabbitmq-server
    重启:systemctl restart rabbitmq-server
    关闭:systemctl stop rabbitmq-server
    2.3.2 集群配置相关命令
    停止节点:rabbitmqctl stop_app 
    重置节点:rabbitmqctl reset 
    将当前节点加入集群:rabbitmqctl join_cluster {rabbit_node_name}
    集群状态:rabbitmqctl cluster_status 
    从当前节点剔除节点:rabbitmqctl forget_cluster_node {rabbit_node_name}
    
    2.3.3 插件管理
    查看插件列表: rabbitmq-plugins list
    开启某个插件: rabbitmq-plugins enable {插件名} 
    关闭某个插件: rabbitmq-plugins disable {插件名}
    
    2.3.4 用户管理
    
    
    添加用户:rabbitmqctl add_user {username} {password} 
    删除用户:rabbitmqctl delete_user {username} 
    修改密码:rabbitmqctl change_password {username} {newpassword} 
    设置用户角色:rabbitmqctl set_user_tags {username} {tag} 
    tag可以为administrator, monitoring, management 
    举例: 
    rabbitmqctl add_user root 123456
    rabbitmqctl set_user_tags root administrator 
    rabbitmqctl list_users
    
    2.3.5 权限管理
    
    
    权限设置:rabbitmqctl set_permissions [-p vhostpath] {user} {conf} {write} {read} 
        conf:一个正则表达式match哪些配置资源能够被该用户访问。 
        write:一个正则表达式match哪些配置资源能够被该用户读。 
        read:一个正则表达式match哪些配置资源能够被该用户访问。
    查看(指定vhost)所有用户的权限信息:rabbitmqctl list_permissions [-p vhostPath] 
    查看指定用户的权限信息:rabbitmqctl list_user_permissions {username} 
    清除用户的权限信息: rabbitmqctl clear_permissions [-p vhostPath] {username}
    举例: 
    rabbitmqctl set_permissions -p / root “.*” “.*” “.*”
    
    2.3.6 获取服务器状态信息
    
    服务器状态:rabbitmqctl status 
    队列信息: rabbitmqctl list_queues [-p vhostpath] [queueinfoitem …] 
    queueinfoitem可以为: name, durable, auto_delete, arguments, messages_ready, messages_unacknowled, messages, consumers, memory.
    Exchange信息: rabbitmqctl list_exchanges [-p vhostpath] [exchangeinfoitem …] 
    exchangeinfoitem有:name, type, durable, auto_delete, internal, arguments.
    Binding信息:rabbitmqctl list_bindings [-p vhostpath] [bindinginfoitem …] 
    bindinginfoitem有:source_name, source_kind, destination_name, destination_kind, routing_key, arguments.等
    connection信息:rabbitmqctl list_connections [connectioninfoitem …] 
    connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等。
    channel信息:rabbitmqctl list_channels [channelinfoitem …] 
    channelinfoitem有:consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked
    举例: 
    rabbitmqctl list_queues name messages_ready pid slave_pids
    
    2.3.7 更改节点类型
    
    rabbitmqctl stop_app 
    rabbitmqctl change_cluster_node_type disc 
    或 
    rabbitmqctl change_cluster_node_type ram 
    rabbitmqctl start_app
    
    2.3.8 vhost管理
    
    添加vhost: rabbitmqctl add vhost {name} 
    删除vhost: rabbitmqctl delete vhost {name}
    2.3.9 镜像队列的设置
    
    镜像队列的配置通过添加policy完成,policy添加的命令为: 
    rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority] 
    -p Vhost: 可选参数,针对指定vhost下的queue进行设置 
    Name: policy的名称 
    Pattern: queue的匹配模式(正则表达式) 
    Definition: 镜像定义,包括三个部分 ha-mode,ha-params,ha-sync-mode 
        ha-mode: 指明镜像队列的模式,有效值为 all/exactly/nodes 
            all表示在集群所有的节点上进行镜像 
            exactly表示在指定个数的节点上进行镜像,节点的个数由ha-params指定 
            nodes表示在指定的节点上进行镜像,节点名称通过ha-params指定 
        ha-params: ha-mode模式需要用到的参数 
        ha-sync-mode: 镜像队列中消息的同步方式,有效值为automatic,manually 
    Priority: 可选参数, policy的优先级
    例如,对队列名称以hello开头的所有队列进行镜像,并在集群的两个节点上完成镜像,policy的设置命令为: 
    rabbitmqctl set_policy hello-ha “^hello” ‘{“ha-mode”:”exactly”,”ha-params”:2,”ha-sync-mode”:”automatic”}’
    

    三、RabbitMQ 附录

    3.1 参考文档
    http://www.rabbitmq.com/getstarted.html
    https://github.com/rabbitmq/rabbitmq-server
    http://www.rabbitmq.com/install-rpm.html
    https://www.rabbitmq.com/clustering.html
    https://blog.csdn.net/jackliu16/article/details/79972121
    https://blog.csdn.net/jinyidong/article/details/80003362
    http://www.cnblogs.com/lylife/p/5584019.html
    https://github.com/rabbitmq/erlang-rpm
    https://www.erlang-solutions.com/resources/download.html
    http://www.rabbitmq.com/which-erlang.html
    http://www.dahouduan.com/2017/11/22/centos6-yum-install-rabbitmq/
    https://blog.csdn.net/happyzwh/article/details/53008803

  • 相关阅读:
    HDU 3681 Prison Break 越狱(状压DP,变形)
    POJ 2411 Mondriaan's Dream (状压DP,骨牌覆盖,经典)
    ZOJ 3471 Most Powerful (状压DP,经典)
    POJ 2288 Islands and Bridges (状压DP,变形)
    HDU 3001 Travelling (状压DP,3进制)
    POJ 3311 Hie with the Pie (状压DP)
    POJ 1185 炮兵阵地 (状压DP,轮廓线DP)
    FZU 2204 7
    POJ 3254 Corn Fields (状压DP,轮廓线DP)
    ZOJ 3494 BCD Code (数位DP,AC自动机)
  • 原文地址:https://www.cnblogs.com/shihaiming/p/9990474.html
Copyright © 2011-2022 走看看