• RabbitMQ集群搭建和使用


    .环境准备

    1选择RabbitMQ的版本

    http://www.rabbitmq.com/changelog.html

    : 不同版本的Linux选择的RabbitMQ版本也不同,参照

    http://www.rabbitmq.com/install-rpm.html

    查看CentOS版本:more /etc/redhat-release

    2RabbitMQ依赖于Erlang,两者版本需匹配,版本对照表如下:

    http://www.rabbitmq.com/which-erlang.html

    2.1选择Erlang的版本

    http://www.erlang.org/downloads

     二.安装单机RabbtiMQ

    2.1 安装Erlang

    2.1.1 安装Erlang依赖

    yum install gcc glibc-devel make ncurses-devel openssl-devel autoconf

     

    2.1.2 下载解压缩

    wget 复制的下载链接地址

    wget http://erlang.org/download/otp_src_20.3.tar.gz

    tar -xvf otp_src_20.3.tar.gz

     

    2.1.3 安装Erlang

    转到解压目录下 cd otp_src_20.3 挨个运行一下命令

    ./configure

    make install

     

    2.2 安装RabbitMQ

    2.2.1 下载RabbitMQ

    wget 复制的下载链接地址

    wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.4/rabbitmq-server-3.7.4-1.el6.noarch.rpm

    2.2.2 安装RabbitMQ

    rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

    rpm  -i --nodeps rabbitmq-server-3.7.4-1.el6.noarch.rpm

    /opt/rabbitmq文件夹下

    查看安装包:rpm -qa | grep -i rabbitmq-server-3.7.4-1.el6.noarch

    删除安装包:rpm -e rabbitmq-server-3.7.4-1.el6.noarch

    2.2.3 新建文件,指定节点名

    文件路径: /etc/rabbitmq/rabbitmq-env.conf

    文件内容: NODENAME=rabbit@节点名

    节点名设为机器名称即可

    2.2.4 启动RabbitMQ

    进入  /usr/lib/rabbitmq/bin/

    运行   rabbitmq-server

    Ctrl+C,等一下就退出了

    2.2.5 Web管理后台

    加载插件:rabbitmq-plugins enable rabbitmq_management

    再次运行   rabbitmq-server

    页面访问:http://IP:15672/

     

     

    .RabbtiMQ用户管理

     

    3.1 参考链接

    https://www.cnblogs.com/java-zhao/p/5670476.html

     

    3.2 添加一个用户

    rabbitmqctl add_user 用户名 用户密码

    3.3 给用户赋角色

    rabbitmqctl set_user_tags 用户名 角色名

    3.4 给用户赋权限

    rabbitmqctl set_permissions -p "/" 用户名 ".*" ".*" ".*"

    3.5 删除用户

    rabbitmqctl  delete_user  用户名

    3.6查看用户

    rabbitmqctl  list_users

    注: 默认用户为guest guest,可新建用户

    给文件赋权限:

    chmod 777 /文件夹名字/文件名字或者*

    .RabbitMQ集群搭建

    4.1 环境准备

    多台(3台)安装RabbitMQ Server的服务器,服务器IP分别为 ip1,ip2,ip3,以选择ip1服务器为主节点为例

     

    4.2 保持.erlang.cookie一致

    1)复制ip1服务器中的.erlang.cookie

    (.erlang.cookie 存在于/var/lib/rabbitmq/.erlang.cookie 和~/.erlang.cookie中)

    2)保持ip1,ip2,ip3服务器中的/var/lib/rabbitmq/.erlang.cookie和~/.erlang.cookie一致

     

    4.3 后台启动各个节点

    rabbitmq-server -detached

    这样就成功了,网页访问一下能成功就行

    切记:启动后不要关闭,否则会出现错误

    4.4 查看各节点状态

    rabbitmqctl status

    4.5 配置各节点的hosts文件

    文件路径:vi /etc/hosts

    文件内容:(注:名称为2.2.3中的节点名)

    10.170.1.22 linux02

    10.170.1.23 linux03

    4.6 建立集群

    *以ip1服务器为主节点为例,在ip2,ip3上执行相同的如下操作

    ip1服务器要启动着(在/usr/lib/rabbitmq/bin下运行rabbitmq-server),然后在ip2和ip3上做以下操作

    rabbitmqctl stop_app

    rabbitmqctl reset  //可以不做

    rabbitmqctl join_cluster rabbit@名称1

    rabbitmqctl start_app

     

    4.7 查看集群的状态信息

    rabbitmqctl cluster_status

     

    4.8 镜像队列

    1).登录web后台管理页面

    2).Admin -> Policies -> Add/update a policy

    3).填写内容(例如:

    Name:Mirror_RabbitMQ

    Pattern:^                         //"^"表示所有,最好手动输入,不要粘贴

    Definition:HAmode=exactly

      HAprarms=2

      HAsyncmode=automatic)

    4).Add policy

    添加一个,其他的也都会有该策略

    以下不用做

    4.9 退出集群

    rabbitmqctl stop_app

    rabbitmqctl reset

    rabbitmqctl start_app

     

    4.10 移除节点

    1)关闭要移除的节点A

    rabbitmqctl stop_app

    2)在其他节点B移除节点A

    rabbitmqctl forget_cluster_node rabbit@rabbitName

     

    .负载均衡-HAProxy

    5.1 安装epel

    rpm -ivh https://mirrors.tongji.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm

     

    5.2 安装HAProxy

    yum -y install haproxy

    5.1/5.2每台服务器都安装

    5.3 修改配置文件

    1) 配置文件路径:vi /etc/haproxy/haproxy.cfg

    注:此配置需要在每台服务器上做一下,里面标红的IP必须和该配置文件所在的服务器IP一致

    2)在配置文件中追加如下内容:

    #---------------------------------------------------------------------

    # RabbitMQ集群负载均衡

    #---------------------------------------------------------------------

    # 1.HAProxy统计页面配置

    # 通过访问http://10.170.1.18:1080/haproxy/stats 账号密码admin:admin查看统计信息

    listen haproxy_front 10.170.1.18:1080

            mode http

            stats refresh 30s

            stats uri /haproxy/stats

            stats realm Haproxy Manager

            stats auth admin:admin

     

    # 2.rabbitmq集群负载均衡配置

    # 通过10.170.1.18:5678接入rabbitmq

    listen rabbitmq_cluster 10.170.1.18:5678

            option tcplog

            mode tcp

            timeout client  3h

            timeout server  3h

            balance roundrobin

            server   node1 10.170.1.18:5672 check inter 5s rise 2 fall 3

            server   node2 10.170.1.16:5672 check inter 5s rise 2 fall 3

    # 3.rabbitmq集群web管理页面均衡配置

    # 访问http://10.170.1.18:15678/ 接入rabbitmq web管理页面

    listen rabbitmq_admin 10.170.1.18:15678

            balance roundrobin

            server node1 10.170.1.18:15672

            server node2 10.170.1.16:15672

    5.4 重启HAproxy

    service haproxy restart

    然后网页访问http://10.170.1.23:15678

     

    .主备-Keepalived

    6.1 安装Keepalived

    yum install keepalived

     

    6.2 创建监控脚本

    脚本路径:vi /etc/keepalived/check_haproxy.sh

    脚本内容:

    #!/bin/bash

    if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then       

    fi

    sleep 2

    if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then

            service keepalived stop

    fi

    6.1/6.2主备机都需要做

    6.3 修改主机Keepalived配置文件

    文件路径:vi /etc/keepalived/keepalived.conf  (这个文件先删除,然后在新建即可)

    文件内容:

    #Keepalived配置文件

    global_defs {

            router_id NodeA                 #路由ID, 主备的ID不能相同

    }

     

    #自定义监控脚本

    vrrp_script chk_haproxy {

            script "/etc/keepalived/check_haproxy.sh"

            interval 5

            weight 2

    }

     

    vrrp_instance VI_1 {

            state MASTER    #Keepalived的角色。Master表示主服务器,从服务器设置为BACKUP

            interface eth0          #指定监测网卡

            virtual_router_id 1

            priority 100            #优先级,BACKUP机器上的优先级要小于这个值

            advert_int 1            #设置主备之间的检查时间,单位为s

            authentication {        #定义验证类型和密码

                    auth_type PASS

                    auth_pass root123

            }

            track_script {

                    chk_haproxy

            }

            virtual_ipaddress {     #虚拟地址(可以随便设,主备保持一致即可),可以设置多个

                    192.1.170.180

            }

    }

     

    6.4 修配备机Keepalived配置文件

    文件路径:vi /etc/keepalived/keepalived.conf  (这个文件先删除,然后在新建即可)

    #Keepalived配置文件

    global_defs {

            router_id NodeB                 #路由ID, 主备的ID不能相同

    }

     

    #自定义监控脚本

    vrrp_script chk_haproxy {

            script "/etc/keepalived/check_haproxy.sh"

            interval 5

            weight 2

    }

     

    vrrp_instance VI_1 {

            state BACKUP    #Keepalived的角色。Master表示主服务器,从服务器设置为BACKUP

            interface eth0          #指定监测网卡

            virtual_router_id 1

            priority 50            #优先级,BACKUP机器上的优先级要小于这个值

            advert_int 1            #设置主备之间的检查时间,单位为s

            authentication {        #定义验证类型和密码

                    auth_type PASS

                    auth_pass root123

            }

            track_script {

                    chk_haproxy

            }

            virtual_ipaddress {     #虚拟地址,可以设置多个

                    192.1.170.180

            }

    }

     

    6.5 启动Keepalived

    service keepalived start

     

    6.6 查看Keepalived运行情况(可不看)

    1)查看Keepalived日志输出

    tail -f /var/log/messages -n 200

    2)查看添加的虚拟IP

    ip add show

    3)MASTER模拟异常关闭

    service keepalived stop

    对应的MASTER上的虚拟IP也会消失

    MASTER关闭后,BACKUP成为新的MASTER

     

    6.7 代码访问RabbitMQ

    1) IP 为Keepalived中配置的虚拟IP

    2) PORT 为RabbitMQ的PORT 默认为5672

    3)  账号密码同RabbitMQ

    七.运行在内存或者硬盘中

    注意:集群搭建完毕后,测试中是只在备机上修改成功了,主机上修改不成功

    /usr/lib/rabbitmq/bin下运行,rabbitmq默认安装在这里

    rabbitmqctl stop_app

    rabbitmqctl change_cluster_node_type ram

    rabbitmqctl start_app

     

    注:disc-硬盘,ram-内存

     

    八、springboot连接rabbitMQ集群配置

    spring:

    # 消息队列配置

      rabbitmq:

        host: 192.1.170.180    #虚拟地址

        port: 5672

        username: ****

        password: ****

        listener:

          simple:

            acknowledge-mode: AUTO

    参考链接

    [ 1 ]    http://www.rabbitmq.com/tutorials/tutorial-one-java.html 

    RabbitMQ队列模式介绍

    [ 2 ]    https://www.cnblogs.com/xmzJava/p/8036591.html 

    Springboot Rabbitmq 整合

    [ 3 ]    https://www.cnblogs.com/lylife/p/5584019.html 

    Rabbitmq+haproxy+keepalived实现高可用集群搭建

    [ 4 ]    http://blog.csdn.net/woogeyu/article/details/51119101 

    RabbitMQ分布式集群架构

    [ 5 ]   https://www.cnblogs.com/lion.net/p/5725474.html 

    RabbitMQ3.6.3集群搭建+HAProxy1.6做负载均衡

    [ 6 ]    http://blog.csdn.net/u013256816/article/details/77171017 

    RabbitMQ负载均衡(3——Keepalived+HAProxy实现高可用的负载均衡

    [ 7 ]   http://blog.csdn.net/u014308482/article/details/52947492 

    RabbitMQ常用命令

  • 相关阅读:
    小程序mpvue 关闭eslint
    微信开发者工具更新后报错navigationBarBackgroundColor不是hexColor?
    微信小程序图片裁剪插件image-cropper
    A小程序跳转到B小程序,B小程序如何获取参数?
    EditText取消焦点
    RxJava + Retrofit
    TextView显示内容不全
    Android之StrictMode
    CoordinatorLayout实现的效果(标题栏效果)
    Rxbus的使用
  • 原文地址:https://www.cnblogs.com/java-spring/p/8855862.html
Copyright © 2020-2023  润新知