keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群

这篇具有很好参考价值的文章主要介绍了keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、环境准备

1. 我这里准备了三台centos7 虚拟机

主机名 主机地址 软件
node-01 192.168.157.133 rabbitmq、erlang、haproxy、keepalived
node-02 192.168.157.134 rabbitmq、erlang、haproxy、keepalived
node-03 192.168.157.135 rabbitmq、erlang

2. 关闭三台机器的防火墙

# 关闭防火墙
service firewalld stop
# 关闭防火墙开机自启
systemctl disable firewalld

3. 三台主机的host和hostname配置

#配置hostname,重启生效
hostnamectl set-hostname <hostname>
# 加入三台主机的ip和hostname
vi /etc/hosts
192.168.157.133 node-01
192.168.157.134 node-02
192.168.157.135 node-03

4. erlang与rabbitmq版本选择RabbitMQ Erlang Version Requirements — RabbitMQhttps://www.rabbitmq.com/which-erlang.html二、安装erlang环境

1. 下载erlang,选择与rabbitmq版本匹配的版本,这里我选择的是25.0.4版本Downloads - Erlang/OTPThe official home of the Erlang Programming Languagehttps://www.erlang.org/downloads

2. 下载相关erlang编译依赖包

yum install –y ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-term ocaml-curses ocaml-curses-devel
yum install –y openssl-devel zlib-devel
yum install –y make ncurses-devel gcc gcc-c++ unixODBC unixODBC-devel openssl openssl-devel

2. 解压安装erlang

#创建erlang目录
mkdir /usr/local/erlang
#解压
tar -zxvf otp_src_25.0.4.tar.gz
#进入otp_src_25.0.4目录
./configure --prefix=/opt/erlang --without-javac
make && make install

3. configure的时候一般会遇到一些依赖不存在的情况,只需要用yum安装一下,重新运行configure命令即可。

4. 提示找不到wx-config: command not found

#更新epel第三方软件库
yum install -y epel-release
#再次执行,就可以安装了
yum install –y wxWidgets-devel
yum install wxBase #for /usr/bin/wx-config-3.0
cd /usr/bin
#创建软连接
ln -s wx-config-3.0 wx-config

5. 配置环境变量并验证

#修改/etc/profile
#加入如下配置,并保存
export ERLANG_HOME=/usr/local/erlang
export PATH=$ERLANG_HOME/bin:$PATH
#重新加载配置
source /etc/profile
#验证,输入erl命令,出现erlang命令行就是安装成功

三、安装rabbitmq镜像集群

1. github下载rabbitmq,我选择的 rabbitmq-server-generic-unix-3.11.21.tar.xzhttps://github.com/rabbitmq/rabbitmq-server/releaseshttps://github.com/rabbitmq/rabbitmq-server/releases

2. 解压安装

#解压到/usr/local目录
tar -xvf rabbitmq-server-generic-unix-3.11.21.tar.xz -C /usr/local
#配置rabbitmq环境变量
export ERLANG_HOME=/usr/local/erlang
export RABBITMQ_HOME=/usr/local/rabbitmq_server-3.11.21
export PATH=$ERLANG_HOME/bin:$RABBITMQ_HOME/sbin:$PATH
#重新加载/etc/profile
source /etc/profile
#开启rabbitmq管理界面
rabbitmq-plugins enable rabbitmq_management
#后台启动rabbitmq
rabbitmq-server -detached

3. 访问对应的host:15672进入rabbitmq管理页面,默认用户密码 guest/guest

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群,集群搭建,rabbitmq,服务器,linux

4. 创建rabbitmq用户

#创建admin用户,密码admin
rabbitmqctl add_user admin admin
#设置用户角色 
#超级管理员 administrator
#监控者     monitoring
#策略制定者 policymaker 
#普通管理者 management 
rabbitmqctl set_user_tags admin administrator
#设置权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
#查看所有用户
rabbitmqctl list_users

5. 拷贝.erlang.cookie到其他主机

如果启动rabbitmq的是root用户那么这个文件就在/root/用户下的隐藏文件,可以用ls -al查看到

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群,集群搭建,rabbitmq,服务器,linux

#使用scp命令将node-01上的.erlang.cookie复制到其他主机上
scp /root/.erlang.cookie node-02:/root/.erlang.cookie
scp /root/.erlang.cookie node-03:/root/.erlang.cookie

6. 将node-02和node-03加入到node-01集群

在node-02和node-03上执行

#以后台模式启动
rabbitmq-server -detached
#停掉rabbitmq服务,不会关闭erlang服务环境
rabbitmqctl stop_app
#用来清空数据,如果主节点有数据也需要清空
rabbitmqctl reset 
#加入node-01集群
rabbitmqctl join_cluster rabbit@node-01
#启动rabbitmq
rabbitmqctl start_app

7. 查看集群状态

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群,集群搭建,rabbitmq,服务器,linux

 登录任意节点后台可以看到集群状态

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群,集群搭建,rabbitmq,服务器,linux

 8. 添加集群同步策略

ha-mode: all,在集群中所有的节点上进行镜像

ha-sync-mode: automatic,在集群节点宕机重新连接后自动同步

方式一:命令添加

# 添加策略
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
# 查看策略
rabbitmqctl list_policies

方式二:管理后台界面上添加

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群,集群搭建,rabbitmq,服务器,linux

9. 验证镜像模式

在node-01上创建一个队列ha-queue,可以看到node里面有三个节点,进去查看可以看到使用的策略为ha-all,并且node-02和node-03为镜像节点。

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群,集群搭建,rabbitmq,服务器,linux

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群,集群搭建,rabbitmq,服务器,linux

四、安装haproxy

node-01 和 node-02上操作

#yum 安装haproxy
yum install -y haproxy
#修改haproxy.cnf配置,配置文件在/etc/haproxy目录下
vi haproxy.cnf
#增加如下配置
#页面配置
listen status
    # 绑定9188端口
    bind 0.0.0.0:9188
    mode http
    stats enable
    stats refresh 30s
    stats uri /stats 
    # 登录用户admin 密码admin
    stats auth admin:admin
    stats realm (Haproxy\ statistic)
    stats admin if TRUE

#配置rabbitmq管理端
listen rabbitmq_admin
    # 绑定15673端口
    bind 0.0.0.0:15673
    server node-01 192.168.157.133:15672
    server node-02 192.168.157.134:15672
    server node-03 192.168.157.135:15672

#配置rabbitmq集群
listen rabbitmq_cluster
    # 绑定5673端口
    bind 0.0.0.0:5673
    mode tcp
    option tcplog
    maxconn 10000
    # 负载模式为轮训
    balance roundrobin
    server node-03 192.168.157.135:5672 check inter 1000 rise 2 fall 2 backup
    server node-02 192.168.157.134:5672 check inter 1000 rise 2 fall 2 backup
    server node-01 192.168.157.133:5672 check inter 1000 rise 2 fall 2

启动haproxy

haproxy -f /etc/haproxy/haproxy.cnf

访问haproxy监控管理页面

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群,集群搭建,rabbitmq,服务器,linux

 通过haproxy配置的端口访问rabbitmq管理页面

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群,集群搭建,rabbitmq,服务器,linux

五、安装keepalived

#yum安装keepalived
yum install -y keepalived
#修改keepalived.cnf配置,在/etc/keepalived/keepalived.cnf

global_defs {
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

#检测脚本
vrrp_script check_haproxy {
    # 检测HAProxy脚本
    script "/etc/keepalived/script/check_haproxy.sh"
    # 每隔两秒检测
    interval 2
    # 权重
    weight 2
}


vrrp_instance haproxy {
    #MASTER为主 BACKUP为备
    state MASTER
    #填自己网卡的名字
    interface eno16777736
    mcast_src_ip 192.168.157.133    
    virtual_router_id 51
    priority 100
    advert_int 1
    #认证方式,主备配置一致就行
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #脚本
    track_script {
        check_haproxy
    }
    #虚拟IP地址
    virtual_ipaddress {
        192.168.157.11
    }    
}

启动keepalived

service keepalived restart

验证通过虚拟IP访问haproxy负载的rabbitmq管理端地址

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群,集群搭建,rabbitmq,服务器,linux

至此安装全部完成。文章来源地址https://www.toymoban.com/news/detail-675617.html

到了这里,关于keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高性能:负载均衡

    目录 什么是负载均衡 负载均衡分类 服务端负载均衡 服务端负载均衡——软硬件分类 服务端负载均衡——OSI模型分类 客户端负载均衡 负载均衡常见算法 七层负载均衡做法 DNS解析 反向代理         将用户请求 分摊(分流)  到不同的服务器上,提高系统整体并发能力及

    2024年02月03日
    浏览(116)
  • 架构篇21:高性能负载均衡-算法

    负载均衡算法数量较多,而且可以根据一些业务特性进行定制开发,抛开细节上的差异,根据算法期望达到的目的,大体上可以分为下面几类。 任务平分类:负载均衡系统将收到的任务平均分配给服务器进行处理,这里的“平均”可以是绝对数量的平均,也可以是比例或者权

    2024年01月25日
    浏览(54)
  • 高性能软件负载OpenResty介绍和安装

    OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项 当请求进入Nginx后先READ REQUEST HEADERS 读取头部 然后再分配由哪个指令操作 Identity 寻找匹配哪个Location* Apply Rate Limits 是否要对该请求限制 Preform Authertication 权限验

    2024年02月08日
    浏览(59)
  • 两台宿主机搭建keepalived+Haproxy+mysql实现高可用负载均衡集群(电脑有限弄了两台,更多台同理)

    注意事项 : 1.切记 percona/percona-xtradb-cluster 的版本要统一 ,否则可能出现各种各样的问题 2. 宿主机要关闭SELINUX 。修改文件 vi /etc/selinux/config ,设置SELINUX为disabled,然后reboot机子  两台主机为: 宿主机1:192.168.10.4 宿主机2:192.168.10.6 主节点(在宿主机1上执行) 子节点1(在宿主

    2023年04月26日
    浏览(53)
  • 架构篇20:高性能负载均衡-分类及架构

    单服务器无论如何优化,无论采用多好的硬件,总会有一个性能天花板,当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能。 高性能集群的本质很简单,通过增加更多的服务器来提升系统整体的计算能力。由于计算本身存在一个特点:

    2024年01月25日
    浏览(48)
  • 构建三高架构:高性能、高可用、高可扩展

    在当今计算机科学领域,构建强大、高效的系统已成为迫切需求。为了应对用户需求的不断增加,三高架构应运而生,包括高性能、高可用性和高可扩展性。本文将深入探讨这三个关键特性,并提供基于 Java 的代码示例来说明这些概念的实际应用。 1.1 优化的系统设计 在构建

    2024年01月25日
    浏览(57)
  • 基于k8s的高性能高可用的web集群

    模拟公司里的k8s生产环境,部署web,MySQL,nfs,harbor,Prometheus,Jenkins等应用,构建一个高性能高可用的web集群 CentOS7,k8s,docker,Prometheus,nfs,jumpserver,harbor,ansible,Jenkins等 k8s-master:192.168.121.101 k8s-node1:192.168.121.102 k8s-node2:192.168.121.103 nfs:192.168.121.104 harbor:192.168.121

    2024年04月28日
    浏览(43)
  • Nginx搭配负载均衡和动静分离:构建高性能Web应用的完美组合

    目录 前言 一、Nginx简介 1.Nginx是什么 2.Nginx的特点 3.Nginx在哪使用 4.如何使用Nginx 5.Nginx的优缺点 6.Nginx的应用场景 二、负载均衡和动静分离 1.负载均衡 2.动静分离 三、Nginx搭载负载均衡并提供前后端分离后台接口数据 1.Nginx安装 2.tomcat负载均衡 3.负载均衡后台项目发布 四、前

    2024年02月06日
    浏览(52)
  • 【MySQL】高性能高可用表设计实战-表设计篇(MySQL专栏启动)

    📫作者简介: 小明java问道之路,专注于研究 Java/ Liunx内核/ C++及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。   📫 热衷分享,喜欢原创~ 关注我会给你带来一些不一样

    2024年02月11日
    浏览(45)
  • Redis 分区:构建高性能、高可用的大规模数据存储解决方案

    在 Redis 中,分区是一种将数据分布在多个实例上的技术,用于处理大规模数据和提高系统性能。通过分区,可以将数据均匀地分布在多个节点上,从而减轻单个节点的负载压力,并实现水平扩展。 Redis 分区应用场景 1. 大规模数据存储 在 Redis 中,单个实例的内存有限,无法

    2024年04月14日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包