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的节点信息
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值