Haproxy+Keepalive 整合rabbitmq实现高可用负载均衡

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

Haproxy 实现负载均衡 

HAProxy 提供高可用性、负载均衡及基于 TCPHTTP 应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案,包括 Twitter,Reddit,StackOverflow,GitHub 在内的多家知名互联网公司在使用。HAProxy 实现了一种事件驱动、单一进程模型,此模型支持非常大的井发连接数。

架构图

Haproxy+Keepalive 整合rabbitmq实现高可用负载均衡,运维,rabbitmq,负载均衡,分布式

下载依赖 

yum -y install libnl libnl-devel
yum install gcc gcc-c++ openssl openssl-devel -y
yum update glib* -y

下载 haproxy

下载 haproxy,通过Index of /repo/pkgs/haproxy (fedoraproject.org)下载haproxy,进行解压 

tar -zxvf haproxy-2.0.3.tar.gz

进入解压后执行下面的编译命令

make TARGET=linux-glibc  PREFIX=/usr/app/haproxy-2.0.3
make install PREFIX=/usr/app/haproxy-2.0.3

配置环境变量,进入vim /etc/profile,写入配置

export HAPROXY_HOME=/usr/app/haproxy-2.0.3
export PATH=$PATH:$HAPROXY_HOME/sbin

Haproxy+Keepalive 整合rabbitmq实现高可用负载均衡,运维,rabbitmq,负载均衡,分布式  

使配置生效

source /etc/profile

修改haproxy.cfg

修改 node1 node2 的 haproxy.cfg,vim /etc/haproxy/haproxy.cfg

# 全局配置
global
    # 日志输出配置、所有日志都记录在本机,通过 local0 进行输出
    log 127.0.0.1 local0 info
    # 最大连接数
    maxconn 4096
    # 改变当前的工作目录
    chroot /usr/app/haproxy-2.0.3
    # 以指定的 UID 运行 haproxy 进程
    uid 99
    # 以指定的 GID 运行 haproxy 进程
    gid 99
    # 以守护进行的方式运行
    daemon
    # 当前进程的 pid 文件存放位置
    pidfile /usr/app/haproxy-2.0.3/haproxy.pid

# 默认配置
defaults
    # 应用全局的日志配置
    log global
    # 使用4层代理模式,7层代理模式则为"http"
    mode tcp
    # 日志类别
    option tcplog
    # 不记录健康检查的日志信息
    option dontlognull
    # 3次失败则认为服务不可用
    retries 3
    # 每个进程可用的最大连接数
    maxconn 2000
    # 连接超时
    timeout connect 5s
    # 客户端超时
    timeout client 120s
    # 服务端超时
    timeout server 120s

# 绑定配置
listen rabbitmq_admin
    bind :15673
    mode tcp
    balance roundrobin rabbit-node为每个主机名
    server node1 rabbit-node1:15672
    server node2 rabbit-node2:15672
    server node3 rabbit-node3:15672

# 绑定配置
listen rabbitmq_cluster
    bind :5673
    # 配置TCP模式
    mode tcp
    # 采用加权轮询的机制进行负载均衡
    balance roundrobin
    # RabbitMQ 集群节点配置 rabbit-node为每个主机名
    server node1 rabbit-node1:5672 check inter 5000 rise 2 fall 3 weight 1
    server node2 rabbit-node2:5672 check inter 5000 rise 2 fall 3 weight 1
    server node3 rabbit-node3:5672 check inter 5000 rise 2 fall 3 weight 1

# 配置监控页面
listen monitor
    bind :8100
    mode http
    option httplog
    stats enable
    stats uri /stats
    stats refresh 5s

启动 haproxy

在两台节点启动 haproxy 

haproxy -f /etc/haproxy/haproxy.cfg
ps -ef | grep haproxy

开放端口 

firewall-cmd --add-port=8100/tcp --permanent
# 重启防火墙
firewall-cmd --reload

访问地址

http://192.168.2.3:8100/stats  

Haproxy+Keepalive 整合rabbitmq实现高可用负载均衡,运维,rabbitmq,负载均衡,分布式

这样我们就可以通过192.168.2.3:5673或192.168.2.130:5673去访问rabbitmq

KeepAlived实现真正高可用

如果HAProxy 发生故障了怎么办,我们可以搭建 Keepalived 来解决 HAProxy 故障转移的问题 

下载KeepAlived

通过链接wget获取 

wget https://www.keepalived.org/software/keepalived-2.2.2.tar.gz

进行解压和编译

# 解压
tar -xvf keepalived-2.2.2.tar.gz

# 编译安装
mkdir keepalived-2.2.2/build
cd keepalived-2.2.2/build
../configure --prefix=/usr/local/keepalived-2.2.2
make && make install

环境配置,配置文件链接 

# 创建目录
mkdir /etc/keepalived
# 备份
cp /usr/local/keepalived-2.2.2/etc/keepalived/keepalived.conf /usr/local/keepalived-2.2.2/etc/keepalived/keepalived.conf_bak
# 链接
ln -s /usr/local/keepalived-2.2.2/etc/keepalived/keepalived.conf /etc/keepalived/

将所有 Keepalived 脚本拷贝到 /etc/init.d/ 目录下

# 编译目录中的脚本
cp keepalived-2.2.2/keepalived/etc/init.d/keepalived /etc/init.d/
# 安装目录中的脚本
cp /usr/local/keepalived-2.2.2/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived-2.2.2/sbin/keepalived /usr/sbin/

设置开机自启动

chmod +x /etc/init.d/keepalived
chkconfig --add keepalived
systemctl enable keepalived.service

 配置 Keepalived

对 node1 主节点上 keepalived.conf 配置文件进行修改 ,vi /etc/keepalived/keepalived.conf

global_defs {
   # 路由id,主备节点不能相同
   router_id node1
}

# 自定义监控脚本
vrrp_script chk_haproxy {
    # 脚本位置
    script "/etc/keepalived/haproxy_check.sh" 
    # 脚本执行的时间间隔
    interval 5 
    weight 10
}

vrrp_instance VI_1 {
    # Keepalived的角色,MASTER 表示主节点,BACKUP 表示备份节点
    state MASTER  
    # 指定监测的网卡,可以使用 ifconfig 进行查看
    interface ens33
    # 虚拟路由的id,主备节点需要设置为相同
    virtual_router_id 1
    # 优先级,主节点的优先级需要设置比备份节点高
    priority 100 
    # 设置主备之间的检查时间,单位为秒 
    advert_int 1 
    # 定义验证类型和密码
    authentication { 
        auth_type PASS
        auth_pass 123456
    }

    # 调用上面自定义的监控脚本
    track_script {
        chk_haproxy
    }

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

node2的操作跟node1差不多,对node2 备份节点上,vi /etc/keepalived/keepalived.conf

global_defs {
   # 路由id,主备节点不能相同    
   router_id node2
}

vrrp_script chk_haproxy {
    script "/etc/keepalived/haproxy_check.sh" 
    interval 5 
    weight 10
}

vrrp_instance VI_1 {
    # BACKUP 表示备份节点
    state BACKUP 
    interface ens33
    virtual_router_id 1
    # 优先级,备份节点要比主节点低
    priority 50 
    advert_int 1 
    authentication { 
        auth_type PASS
        auth_pass 123456
    }
    
    track_script {
        chk_haproxy
    }

    virtual_ipaddress {
        192.168.2.200  
    }
}

 编写HAProxy状态检测脚本

# 创建存放检测脚本的日志目录
mkdir -p /usr/local/keepalived-2.2.2/log

# 创建检测脚本
vim /etc/keepalived/haproxy_check.sh

 脚本如下:

#!/bin/bash

LOGFILE="/usr/local/keepalived-2.2.2/log/haproxy-check.log"
echo "[$(date)]:check_haproxy status" >> $LOGFILE

# 判断haproxy是否已经启动
HAProxyStatusA=`ps -C haproxy --no-header|wc -l`
if [ $HAProxyStatusA -eq 0 ];then
    echo "[$(date)]:启动haproxy服务......" >> $LOGFILE
    # 如果没有启动,则启动
    /usr/local/haproxy-2.3.10/sbin/haproxy -f /usr/local/haproxy-2.3.10/haproxy.cfg >> $LOGFILE 2>&1
fi

# 睡眠5秒以便haproxy完全启动
sleep5

# 如果haproxy还是没有启动,此时需要将本机的keepalived服务停掉,以便让VIP自动漂移到另外一台haproxy
HAProxyStatusB=`ps -C haproxy --no-header|wc -l`
if [ $HAProxyStatusB eq 0 ];then
    echo "[$(date)]:haproxy启动失败,睡眼5秒后haproxy服务还是没有启动,现在关闭keepalived服务,以便让VIP自动漂移到另外一台haproxy" >> $LOGFILE
    systemctl stop keepalived
fi

赋权

chmod +x /etc/keepalived/haproxy_check.sh

启动服务

分别在 node1 和 node2 上启动 KeepAlived 服务,命令如下 

systemctl start keepalived

查看虚拟 IP 

 ip a 命令查看到虚拟 IP 的情况

ip a

Haproxy+Keepalive 整合rabbitmq实现高可用负载均衡,运维,rabbitmq,负载均衡,分布式

 访问rabbitmq

这样我们可以通过192.168.2.200:5672去访问rabbitmq

Haproxy+Keepalive 整合rabbitmq实现高可用负载均衡,运维,rabbitmq,负载均衡,分布式

我们停掉node1的KeepAlived  

systemctl stop keepalived

 我们仍旧可以通过备份服务器去获取服务

Haproxy+Keepalive 整合rabbitmq实现高可用负载均衡,运维,rabbitmq,负载均衡,分布式文章来源地址https://www.toymoban.com/news/detail-676890.html

到了这里,关于Haproxy+Keepalive 整合rabbitmq实现高可用负载均衡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 集群、负载均衡集群、高可用集群简介,LVS模式和haproxy/nginx模式拓扑介绍

    目录 一.集群的定义 1.定义 2.分类 (1)负载均衡集群(LBC/LB) (2)高可用集群(HAC) 二.使用集群的意义 1.高性价比和性能比 2.高可用性 3.可伸缩性强 4.持久和透明性高 三.常见的两种集群模式拓扑 1.LVS(-DR)集群模式 (1)工作架构 (2)LVS下的相关术语 (3)LVS的工作模式

    2024年02月13日
    浏览(44)
  • 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. 关闭三台机器的防火墙 3. 三台主机的host和hostname配置 4. erlang与rabbitmq版

    2024年02月11日
    浏览(54)
  • 集群、负载均衡集群、高可用集群简介,LVS工作结构、工作模式、调度算法和haproxy/nginx模式拓扑介绍

    目录 一.集群的定义 1.定义 2.分类 (1)负载均衡集群(LBC/LB) (2)高可用集群(HAC) 二.使用集群的意义 1.高性价比和性能比 2.高可用性 3.可伸缩性强 4.持久和透明性高 三.常见的两种集群模式拓扑 1.LVS(-DR)集群模式 (1)工作架构 (2)LVS下的相关术语 (3)LVS的工作模式

    2024年02月13日
    浏览(46)
  • nginx加权轮询,upstream,Keepalive,负载均衡实现案例

    1. nginx 加权轮询, weight是权重配置。

    2024年02月08日
    浏览(46)
  • 大数据学习:haproxy实现impala的负载均衡

    1.1 在集群中选择一个节点,使用yum方式安装HAProxy服务 1.2 启动与停止HAProxy服务,并将服务添加到自启动列表 3.HAProxy配置Impala负载均衡 1.将 /etc/haproxy 目录下的 haproxy.cfg 文件备份,新建 haproxy.cfg 文件,添加如下配置 主要配置了HAProxy的http状态管理界面、impalashell和impalajdbc的负

    2024年02月10日
    浏览(36)
  • RHEL 7配置HAProxy实现Web负载均衡

    本文将简单介绍使用HAProxy实现web负载均衡,主要内容包括基于权重的轮询、为HAProxy配置https、配置http重定向为https、配置HAProxy使用独立日志。 一、测试环境 HAProxy: 主机名:RH7-HAProxy IP地址:192.168.10.20 操作系统:Red Hat Enterprise Linux Server release 7.2 (Maipo)最小化安装 防火墙与

    2023年04月23日
    浏览(36)
  • Nginx配置整合:基本概念、命令、反向代理、负载均衡、动静分离、高可用

    Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理server。其特点是占有内存少。并发能力强,其并发能力确实在同类型的网页server中表现较好。 Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器(客户端)连到服务器上并请求文件时,服务器

    2024年02月16日
    浏览(43)
  • HAProxy负载均衡架构

    (1)HAProxy 是一款 提供高可用性、负载均衡 以及 基于TCP(第四层)和HTTP(第七层)应用 的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy特别 适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理 。HAProxy运行在时下的硬件上

    2024年02月01日
    浏览(49)
  • Haproxy负载均衡群集

    1、常见的Web集群调度器 目前常见的Web集群调度器分为 软件和硬件 软件通常使用开源的LVS、Haproxy、Nginx 硬件一般使用比较多的是F5、Array,也有很多人使用国内的一些产品,如梭子鱼、绿盟等 2、常用集群调度器的优缺点(LVS ,Nginx,Haproxy) 2.1 Nginx 1)工作在网络的7层之上,可以

    2024年02月07日
    浏览(42)
  • 七层负载均衡 HAproxy

    (1) 无负载均衡: 没有负载均衡,用户直接连接到 Web 服务器。当许多用户同时访问服务器时,可能无法连接。 (2) 四层负载均衡: 用户访问负载均衡器,负载均衡器将用户的请求平衡转发给后端服务器。 (3) 七层负载均衡: 7层负载均衡是更复杂的负载均衡方法,使用第7层允

    2024年02月08日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包