千家信息网

keepalived中怎么利用haproxy实现高可用和负载均衡

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关keepalived中怎么利用haproxy实现高可用和负载均衡,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
千家信息网最后更新 2026年11月01日keepalived中怎么利用haproxy实现高可用和负载均衡

本篇文章给大家分享的是有关keepalived中怎么利用haproxy实现高可用和负载均衡,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1.Nginx是工作在网络的7层之上,不支持TCP协议的转发,1.9 以后可以通过stream模块实现了tcp代理功能但是稳定性还是有所欠缺。而公司现有的系统有部分协议是ICE的因此如果不支持TCP协议改动会比较大。

2.Nginx不支持健康检查,虽然后来淘宝出了个nginx_upstream_check_module但是需要额外安装插件,另外这个插件也只是支持http的不支持TCP的。所以有一定的局限性。

*什么是健康检查?简单来说就是负载均衡服务器定时调用负载服务器某个HTTP接口或ping一下tpc端口检查服务是否可用。这个对实现系统高可用非常有用,健康检测可以自定义脚本来检测后端服务,这有利于那些经常出现假死,无法通过常规判断端口来检测后台是否正常的问题。 比如,RabbitMQ,业务程序自定义检查等。目前HA支持3种形式检查

1)通过监听端口进行健康检测 。这种检测方式,haproxy只会去检查后端server的端口,并不能保证服务的真正可用。

例如:

listen http_proxy 0.0.0.0:80
mode http
cookie SERVERID
balance roundrobin
option httpchk
server web1 192.168.1.1:80 cookie server01 check
server web2 192.168.1.2:80 cookie server02 check inter 500 rise 1 fall 2

2)通过URI获取进行健康检测 。检测方式,是用过去GET后端server的的web页面,基本上可以代表后端服务的可用性。

listen http_proxy 0.0.0.0:80
mode http
cookie SERVERID
balance roundrobin
option httpchk GET /index.html
server web1 192.168.1.1:80 cookie server01 check
server web2 192.168.1.2:80 cookie server02 check inter 500 rise 1 fall 2

3)通过request获取的头部信息进行匹配进行健康检测 。这种检测方式,则是基于高级,精细的一些监测需求。通过对后端服务访问的头部信息进行匹配检测。

listen http_proxy 0.0.0.0:80
mode http
cookie SERVERID
balance roundrobin
option httpchk HEAD /index.jsp HTTP/1.1\r\nHost:\ www.xxx.com
server web1 192.168.1.1:80 cookie server01 check
server web2 192.168.1.2:80 cookie server02 check inter 500 rise 1 fall 2

3.haproxy内置负载监控界面,可以很清晰看到负载情况。

这里并不是说Nginx比不上Haproyx只是相对而言Haproxy提供我们想要的功能,而且无需安装其它插件,相对而言比较简单。因此综合考虑我们决定采用Haproyx+keepalive实现高可用。

下图就是整个负载均衡的架构图:

Haproxy安装:

#下载#http://www.haproxy.org/download/1.7/src/haproxy-1.7.8.tar.gz#cd /data/nfs/download#yum install gcc gcc-c++ autoconf automake -y#安装haproxytar -axf haproxy-* && cd ./haproxy-*make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxymake install PREFIX=/usr/local/haproyx安装成功后,查看版本/usr/local/haproyx/sbin/haproxy -v

这里写图片描述

复制haproxy文件到/usr/sbin下
因为下面的haproxy.init启动脚本默认会去/usr/sbin下找,当然你也可以修改,不过比较麻烦。

cp /usr/local/haproxy/sbin/haproxy /usr/sbin/

复制haproxy脚本,到/etc/init.d下

cp ./examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy


创建系统账号

useradd -r haproxy

创建配置文件

mkdir /etc/haproxy
vi /etc/haproxy/haproxy.cfg
在配置文件haproxy.cfg中添加如下设置:

#全局配置
global
#设置日志
log 127.0.0.1 local3 info
chroot /usr/local/haproxy
#用户与用户组
user haproxy
group haproxy
#守护进程启动
daemon
#最大连接数
maxconn 4000

#默认配置
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000

#前端配置,http_front名称可自定义
frontend http_front
# 发起http请求道80端口,会被转发到设置的ip及端口
bind *:80
#haproxy的状态管理页面,通过/haproxy?stats来访问
stats uri /haproxy?stats
default_backend http_back

#后端配置,http_back名称可自定义
backend http_back
#负载均衡方式
#source 根据请求源IP
#static-rr 根据权重
#leastconn 最少连接者先处理
#uri 根据请求的uri
#url_param 根据请求的url参数
#rdp-cookie 据据cookie(name)来锁定并哈希每一次请求
#hdr(name) 根据HTTP请求头来锁定每一次HTTP请求
#roundrobin 轮询方式
balance roundrobin
#设置健康检查页面
option httpchk GET /index.html
#传递客户端真实IP
option forwardfor header X-Forwarded-For
# inter 2000 健康检查时间间隔2秒
# rise 3 检测多少次才认为是正常的
# fall 3 失败多少次才认为是不可用的
# weight 30 权重
# 需要转发的ip及端口
server node1 192.168.179.131:8081 check inter 2000 rise 3 fall 3 weight 30
server node2 192.168.179.131:8082 check inter 2000 rise 3 fall 3 weight 30

keepalive安装

yum -y install keepalived
vim /etc/keepalived/keepalived.conf

global_defs {

notification_email {

root@localhost

}

notification_email_from root@localhost

smtp_server localhost

smtp_connect_timeout 30

router_id NodeA

}

vrrp_instance VI_1 {

state MASTER #指定A节点为主节点 备用节点上设置为BACKUP即可

interface eth0 #绑定虚拟IP的网络接口

virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组

priority 100 #主节点的优先级(1-254之间),备用节点必须比主节点优先级低

advert_int 1 #组播信息发送间隔,两个节点设置必须一样

authentication { #设置验证信息,两个节点必须一致

auth_type PASS

auth_pass 1111

}

virtual_ipaddress { #指定虚拟IP, 两个节点设置必须一样

192.168.1.220

}

}

interface eth0 这个的网卡名称一定别弄错了,要弄成自己的。可以使用 ip a 命令查看

启动keepalive

/etc/init.d/keepalived start

以上就是keepalived中怎么利用haproxy实现高可用和负载均衡,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

节点 检测 健康 检查 端口 服务 支持 配置 均衡 方式 两个 信息 名称 就是 插件 文件 系统 脚本 页面 优先级 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 厦门中拓互联网络科技有限公司 互联网科技开发公司 美国互联网科技 迪茉互联网科技 互联网科技logo设计 天下捷融互联网科技 互联网科技美容 四川狮子座互联网科技 丰台科技园 互联网公司 华脉科技工业互联网产品 玖二柒互联网科技公司待遇 互联网企业和科技型企业 南山科技园互联网公司有哪些 想开互联网科技公司怎么样 佛山市翊博互联网络科技有限公司 科技赋能视角下互联网保险发展 锡山区互联网智能科技产品供应 35岁以上互联网科技行业 互联网界的黑科技 恒生互联网科技趋势 万易互联网科技有限公司 易通互联网络科技有限公司 天下捷融互联网科技 齐家互联网科技有限公司 互联网 科技服务平台 宝灵互联网科技有限公司 互联网媒体平台算高科技产业 科技类公司包括互联网吗 翼展科技 首家互联网医院 黑云互联网科技有限公司
0