Haproxy高可用

本文详细介绍了Haproxy的高可用配置,包括roundrobin和leastconn等负载均衡算法,以及如何利用Keepalived实现调度器的HA。在项目准备阶段,设置了两台代理服务器和两台真实服务器,并通过VIP漂移测试验证了高可用性。此外,还讨论了在Haproxy服务异常时,如何结合Keepalived和监控脚本来确保nginx的高可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Haproxy 介绍

软件:haproxy—主要是做负载均衡的7层,也可以做4层负载均衡 apache也可以做7层负载均衡,但是很麻烦。实际工作中没有人用。负载均衡是通过OSI协议对应的 7层负载均衡:用的7层http协议, 4层负载均衡:用的是tcp协议加端口号做的负载均衡

ha-proxy 概述

ha-proxy是一款高性能的负载均衡软件。因为其专注于负载均衡这一些事情,因此与nginx比起来在负载均衡这件事情上做更好,更专业。

ha-proxy 的特点

ha-proxy 作为目前流行的负载均衡软件,必须有其出色的一面。下面介绍一下ha-proxy相对LVS,Nginx等负载均衡软件的优点。•支持tcp / http 两种协议层的负载均衡,使得其负载均衡功能非常丰富。•支持8种左右的负载均衡算法,尤其是在http模式时,有许多非常实在的负载均衡算法,适用各种需求。•性能非常优秀,基于单进程处理模式(和Nginx类似)让其性能卓越。•拥有一个功能出色的监控页面,实时了解系统的当前状况。•功能强大的ACL支持,给用户极大的方便。

haproxy 算法:

1.roundrobin 基于权重进行轮询,在服务器的处理时间保持均匀分布时,这是最平衡,最公平的算法.此算法是动态的,这表示其权重可以在运行时进行调整.
2.static-rr 基于权重进行轮询,与roundrobin类似,但是为静态方法,在运行时调整其服务器权重不会生效.不过,其在后端服务器连接数上没有限制
3.leastconn 新的连接请求被派发至具有最少连接数目的后端服务器.

项目准备

准备四台虚拟机,两台做代理服务器,两台做真实服务器(真实服务器只是用来进行web测试)

  • 1、选择两台Haproxy服务器作为代理服务器(一台master 一台backup)。真实服务器需要nginx来提供web服务进行测试
  • 2、给两台代理服务器安装keepalived制作高可用生成VIP
  • 3、配置nginx的负载均衡 以上两台nginx服务器配置文件一致 根据站点分区进行调度 配置upstream文件
master 192.168.141.140 主节点
backup 192.168.141.141 备用节点
RS1 192.168.141.143 第一台真实服务器
RS2 192.168.141.144 第二台真实服务器

对IP进行解析

所有虚拟机,都需要配置
[root@master ~]# cat /etc/hosts
127.0.0.1       localhost
192.168.141.140  master
192.168.141.141  backup
192.168.141.143  RS1
192.168.141.144  RS2

nginx安装
只给两台真实服务器RS1和RS2配置安装nginx ,所有机器关闭防火墙和selinux

[root@RS1 ~]# systemctl stop firewalld && setenforce 0
[root@RS1 ~]# cd /etc/yum.repos.d/
[root@RS1 yum.repos.d]# vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
[root@RS1 yum.repos.d]# yum install yum-utils -y
[root@RS1 yum.repos.d]# yum install nginx -y
[root@RS1 yum.repos.d]# systemctl start nginx #启动
[root@RS1 yum.repos.d]# systemctl enable nginx 
[root@RS1 ~]# echo "this is first RS1" > /usr/share/nginx/html/index.html 
#方便区分,看出效果
[root@RS1 ~]# vim /etc/nginx/nginx.conf
 27     keepalive_timeout   0;
 #27行设置长链接,默认是keepalive_timeout 65;改65为0
[root@RS1 ~]# nginx -s reload


[root@RS2 ~]# cd /etc/yum.repos.d/
[root@RS2 yum.repos.d]# vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
[root@RS2 yum.repos.d]# yum install yum-utils -y
[root@RS2 yum.repos.d]# yum install nginx -y
[root@RS2 yum.repos.d]# systemctl start nginx
[root@RS2 yum.repos.d]# echo "this is first RS2" > /usr/share/nginx/html/index.html
[root@RS2 yum.repos.d]# vim /etc/nginx/nginx.conf
 27     keepalive_timeout   0;
 #27行设置长链接,默认是keepalive_timeout 65;改65为0
[root@RS2 yum.repos.d]# nginx -s reload

调度器配置Haproxy(主/备)都执行

[root@master ~]# yum -y install haproxy
[root@master ~]# cp -rf /etc/haproxy/haproxy.cfg{,.bak}
#备份
[root@master ~]# sed -i -r '/^[ ]*#/d;/^$/d' /etc/haproxy/haproxy.cfg 
#修改配置文件去掉注释,或者你可以直接复制我的代码
[root@master haproxy]# echo $?
0 #执行成功

[root@master ~]# vim /etc/haproxy/haproxy.cfg
global
    log 127.0.0.1 local2 info
    pidfile /var/run/haproxy.pid
    maxconn 4000   #优先级低
    user haproxy
    group       haproxy
    daemon #以后台形式运行ha-proxy
    nbproc 4      #工作进程数量 cpu内核是几就写几,不知道用lscpu查看
defaults
    mode http #工作模式 http ,tcp 是 4 层,http是 7 层
    log global
    retries 3   #健康检查。3次连接失败就认为服务器不可用,主要通过后面的check检查
    option redispatch #服务不可用后重定向到其他健康服务器。
    maxconn 4000  #优先级中
    contimeout 5000  #ha服务器与后端服务器连接超时时间,单位毫秒ms
    clitimeout 50000 #客户端超时
    srvtimeout 50000 #后端服务器超时
listen stats
    bind *:81
    stats enable
    stats uri /haproxy #使用浏览器访问 http://192.168.246.169/haproxy,可以看到服务器状态
    stats auth admin:admin  #用户认证,客户端使用elinks浏览器的时候不生效
frontend web
    mode http
    bind *:80   #监听哪个ip和什么端口
    option httplog #日志类别 http 日志格式
    acl html url_reg -i \.html$ #1.访问控制列表名称html。规则要求访问以html结尾的url(可选)
    use_backend httpservers if  html #2.如果满足acl html规则,则推送给后端服务器httpservers
    default_backend httpservers #默认使用的服务器组
backend httpservers #名字要与上面的名字必须一样
    balance roundrobin #负载均衡的方式
    server http1 192.168.141.143:<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值