我是靠谱客的博主 尊敬毛衣,最近开发中收集的这篇文章主要介绍rabbitmq+keepalived+haproxy的部署rabbitmq+keepalived+haproxy的部署,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

rabbitmq+keepalived+haproxy的部署

生产者通过通道发送消息,经过keepalived的vip访问到haproxy负载均衡,在通过haproxy到达消息队列rabbitmq,这里创建了三个rabbitmq,最后在供消费者消费.

环境部署

搭建三个节点,创建三个rabbitmq节点,两台高可用,两台负载均衡.

一 部署rabbitmq

作域名解析,修改主机名,三台server都要部署

192.168.122.115 rabbitmq02
192.168.122.166 rabbitmq01
192.168.122.76  rabbitmq03
[root@rabbitmq01 ~]# hostnamectl --static set-hostname rabbitmq01
[root@rabbitmq01 ~]# hostnamectl --static set-hostname rabbitmq02
[root@rabbitmq01 ~]# hostnamectl --static set-hostname rabbitmq03
[root@rabbitmq01 ~]# yum -y install erlang
[root@rabbitmq01 ~]# yum -y install socat
[root@rabbitmq01 ~]# yum -y install rabbitmq-server
[root@rabbitmq1 ~]# systemctl start rabbitmq-server.service 
[root@rabbitmq1 ~]# systemctl stop rabbitmq-server.service 
[root@rabbitmq1 ~]# systemctl enable rabbitmq-server.service 
[root@rabbitmq1 ~]# systemctl restart rabbitmq-server.service 
[root@rabbitmq1 ~]# rabbitmq-plugins enable rabbitmq_management #启动监控管理
[root@rabbitmq1 ~]# ss -auntpl |grep rabbitmq   #查看端口有没有启动
#进入浏览器访问  http://192.168.122.166:15672 

在这里插入图片描述

访问到这个页面就成功,以上图片是加入节点的

二 搭建集群cluster

在rabbitmq01中加入其他的两个节点

[root@rabbitmq2 ~]# rabbitmqctl stop_app    
[root@rabbitmq2 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq1    #加入集群
[root@rabbitmq2 ~]# rabbitmqctl start_app
[root@rabbitmq2 ~]# rabbitmq-plugins enable rabbitmq_management
[root@rabbitmq2 ~]# systemctl restart rabbitmq-server.service 
[root@rabbitmq1 rabbitmq]# rabbitmqctl cluster_status   #查看集群的状态
Cluster status of node rabbit@rabbitmq1
[{nodes,[{disc,[rabbit@rabbitmq1]},{ram,[rabbit@rabbitmq3,rabbit@rabbitmq2]}]},
 {running_nodes,[rabbit@rabbitmq3,rabbit@rabbitmq2,rabbit@rabbitmq1]},
 {cluster_name,<<"rabbit_cluster">>},
 {partitions,[]},
 {alarms,[{rabbit@rabbitmq3,[]},{rabbit@rabbitmq2,[]},{rabbit@rabbitmq1,[]}]}]

再次进入浏览器访问,若看到插入的三个节点(以上插入的图片),就证明集群搭建成功

三 部署haproxy

部署两台haproxy和keepalived,分别为主从,一下的操作两台都需要做

[root@hamaster ~]# yum -y install haproxy
[root@hamaster ~]# vim /etc/haproxy/haproxy.cfg 

global
    log                     127.0.0.1 local0
    chroot                  /var/lib/haproxy
    pidfile                 /var/run/haproxy.pid
    maxconn                 4000
    user                    nobody
    group                   nobody
    daemon

defaults
    mode                     http
    log                      global
    option                   dontlognull
    retries                  3
    maxconn                  3000
    contimeout               50000
    clitimeout               50000
    srvtimeout               50000

listen stats
    bind                    *:9999
    stats                   enable
    stats                   hide-version
    stats uri               /haproxy
    stats realm             Haproxy stats
    stats auth              admin:admin
    stats admin             if TRUE

listen  rabbitmq          #修改为rabbitmq,监听的内容
        bind *:15672      #端口修改为rabbitmq的端口
        mode tcp
        balance roundrobin
        server rabbitmq1 192.168.122.166:15672 check    #三台的rabbitmq的ip
        server rabbitmq2 192.168.122.115:15672 check
        server rabbitmq3 192.168.122.76:15672 check
[root@hamaster ~]# systemctl restart haproxy.service  #重新启动服务
[root@hamaster ~]# systemctl status haproxy.service #查看一下状态

四 部署keepalived

[root@hamaster ~]# yum -y install keepalived
[root@hamaster ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id directory1     #主和从的id不同
}

vrrp_script check_run {    #需要执行的脚本,与下边调用的名称应该保持一致,这里是check_run
   script "/etc/ha.sh"     #脚本的位置,这里执行的脚本注意要授权
   interval 5
}
vrrp_instance VI_1 {
    state MASTER         #从的记住改成BACKUP
    interface eth0       #查看自己的网卡名称,注意修改
    nopreempt
    virtual_router_id 80     #rouit-id 保持一直
    priority 100				#从的优先级低于主的优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {				#vip
        192.168.122.20/24
    }
    track_script {					#调用执行上边的脚本
        check_run					#与上边的函数名称保持一致
    }
}
#判断haproxy的脚本

#!/bin/bash
systemctl status haproxy
        if [ $? -eq 0 ];then
                echo "successful"
        else
                systemctl stop keepalived
        fi
! Configuration File for keepalived

global_defs {
   router_id directory1
}

vrrp_script check_run {
   script "/etc/ha.sh"
   interval 5
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 80
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.122.20/24
    }
   track_script {
        check_run
    }
} 
#插入两个vip的情况,两台server互为主从
vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    nopreempt
    virtual_router_id 81
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 111
    }
    virtual_ipaddress {
        192.168.122.21/24
    }

}

访问vip,会得到rabbitmq的节点信息
在这里插入图片描述

最后

以上就是尊敬毛衣为你收集整理的rabbitmq+keepalived+haproxy的部署rabbitmq+keepalived+haproxy的部署的全部内容,希望文章能够帮你解决rabbitmq+keepalived+haproxy的部署rabbitmq+keepalived+haproxy的部署所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部