HAProxy实现高可用

引言
    在现代互联网架构中,负载均衡器扮演着至关重要的角色。它能够分发流量,提升系统的性能和可靠性。HAProxy(High Availability Proxy)作为开源、高性能的负载均衡器和代理服务器,广泛应用于各类企业中。本文将详细介绍HAProxy的概念、架构、工作原理,搭建过程,常用命令,以及通过实战案例帮助读者更好地理解和应用HAProxy。

1、HAProxy概念

1.1 什么是HAProxy?

     HAProxy是一款开源、高性能的负载均衡器和代理服务器,专为TCP和HTTP应用而设计。它可以将客户端的请求分发到多台后端服务器,从而提高应用的可用性和性能。HAProxy支持多种负载均衡算法和健康检查机制,是构建高可用性系统的理想选择。

1.2 HAProxy的优势

高性能:HAProxy采用事件驱动模型,能够处理大量并发连接。
灵活性强:支持多种负载均衡算法和调度策略,适应不同的应用场景。
高可用性:通过健康检查和故障转移机制,确保服务的连续性。
丰富的功能:支持SSL终止、HTTP重写、压缩等多种功能。

2、HAProxy架构


2.1 HAProxy整体架构

HAProxy的整体架构主要包括以下部分:

前端(Frontend):接受客户端请求,并根据配置的规则进行处理。
后端(Backend):定义一组服务器,处理前端转发的请求。
服务器(Server):实际处理请求的后端服务器。
监听器(Listener):在前端监听特定的IP和端口,等待客户端的连接请求。

2.2 HAProxy的组件

配置文件(haproxy.):HAProxy的核心配置文件,定义了前端、后端和监听器等组件。
统计报告(Statistics Report):HAProxy提供丰富的统计信息,便于监控和调试。
日志(Log):HAProxy支持详细的日志记录,帮助分析和诊断问题。

2.3 HAProxy的工作流程

HAProxy的工作流程如下:

1.客户端发送请求到HAProxy的前端。
2.前端根据配置的规则,选择合适的后端。
3.后端将请求分发到具体的服务器进行处理。
4.服务器处理请求并返回结果,通过后端和前端返回给客户端。

3、实验环境:

主机名

IP

VIP

角色

Ka1

192.168.182.145

高可用负载均衡器

Ka2

192.168.182.146

高可用负载均衡器

Webserver1

192.168.182.151

192.168.182.100

后端服务器

Webserver2

192.168.182.152

192.168.182.100

后端服务器

client

192.168.182.154

客户端

4、实验过程

[root@ka1 ~]# dnf install haproxy

[root@ka2 ~]# dnf install haproxy

4.1 先做后端服务器的配置:

[root@webserver1 ~]# echo webserver1 - 192.168.182.151 > /var/www/html/index.html

[root@webserver1 ~]# systemctl start httpd.service

[root@webserver2 ~]# echo webserver2 - 192.168.182.152 > /var/www/html/index.html

[root@webserver2 ~]# systemctl start httpd.service

4.2 Ka1主机和ka2主机两端分别做haproxy负载均衡

[root@ka1 ~]# vim /etc/haproxy/haproxy.cfg

listen webcluster

    bind 192.168.182.100:80

    mode http

    balance roundrobin

    server web1 192.168.182.151:80 check

    server web2 192.168.182.152:80 check

[root@ka2 ~]# vim /etc/haproxy/haproxy.cfg

listen webcluster

    bind 192.168.182.100:80

    mode http

    balance roundrobin

    server web1 192.168.182.151:80 check

    server web2 192.168.182.152:80 check

4.3 添加vrrp_script并写测试脚本

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf         

vrrp_script check_haproxy {

    script "/etc/keepalived/test.sh"

    interval 1

    weight -30

    fall 2

    rise 2

    timeout 2

}

vrrp_instance VI_1 {

    state BACKUP

    interface ens33

    virtual_router_id 100

    priority 80

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.182.100/24 dev ens33 label ens33:1

    }

    track_script {

        check_haproxy

    }

}

[root@ka1 ~]# vim /etc/keepalived/test.sh

#!/bin/bash

killall -0 haproxy

Ka1和ka2做相同配置实现高可用

5、测试:

5.1 模拟down掉一台haproxy

[root@ka1 ~]# /etc/keepalived/test.sh

[root@ka1 ~]# echo $?

0

[root@ka2 ~]# /etc/keepalived/test.sh

[root@ka2 ~]# echo $?

0

[root@ka1 ~]# systemctl stop haproxy.service                #停止一台haproxy

[root@client ~]# while true; do curl 192.168.182.100;  sleep 2; done

webserver1 - 192.168.182.151

webserver2 - 192.168.182.152

webserver1 - 192.168.182.151

webserver2 - 192.168.182.152

...

5.2 VIP漂移到ka2,客户端测试不受影响

[root@client ~]# while true; do curl 192.168.182.100;  sleep 2; done

webserver1 - 192.168.182.151

webserver2 - 192.168.182.152

webserver1 - 192.168.182.151

webserver2 - 192.168.182.152

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值