lvs+keepalived轮询访问doris集群

1. LVS DR 模式与 NAT 模式核心区别

LVS(Linux Virtual Server)的 DR(Direct Routing)模式和 NAT(Network Address Translation)模式是两种最常用的负载均衡模式,核心差异体现在数据转发方式、网络路径、性能、部署要求等维度,以下是详细对比:

对比维度 DR 模式(直接路由) NAT 模式(网络地址转换)
数据转发原理 仅修改数据包的 MAC 地址,IP 头不变;Real Server 直接将响应包发给客户端,不经过 LVS 节点 改写数据包的 IP 地址(请求时目标 IP 改为 Real Server,响应时源 IP 改为 VIP);所有请求 / 响应都经过 LVS 节点转发
网络路径 客户端 → LVS(仅改写 MAC)→ Real Server → 客户端(直连) 客户端 → LVS → Real Server → LVS → 客户端
端口支持 可转发任意端口(无需端口映射) 需做端口映射(LVS 端口→Real Server 端口),单节点端口数受限
性能 性能极高(LVS 仅处理请求包的 MAC 改写,无 IP 改写 / 转发开销;响应包不回传),支持 10 万 + 并发 性能较低(LVS 是所有流量的瓶颈,响应包需二次转发),并发量受 LVS 节点带宽 / 性能限制
Real Server 网络要求 1. Real Server 必须与 LVS 节点在同一物理网络(二层可达);2. Real Server 需配置 VIP 的 lo 回环地址(避免 ARP 冲突);3. 关闭 Real Server 的 ARP 响应(防止 VIP 暴露) 1. Real Server 可与 LVS 节点跨网段(只需路由可达);2. Real Server 的网关必须指向 LVS 节点;3. 无需配置 VIP 到 lo 口
部署复杂度 稍高(需配置 ARP 抑制、lo 口 VIP) 简单(仅需配置 LVS 转发规则 + Real Server 网关)
扩展性 支持大规模 Real Server(无带宽瓶颈) 扩展性差(LVS 节点是流量瓶颈)
适用场景 高并发、大流量场景(如你的 Doris FE 节点负载均衡) 小规模、Real Server 跨网段、需端口映射的场景

2.部署

本文采用DR模式部署

2.1 节点规划

|----------------|-----|------------|-------|-----|
| 主机ip | lvs | keepalived | doris | vip |
| 172.21.241.165 | ⭐ | ⭐ | | |
| 172.21.241.78 | ⭐ | ⭐ | | |
| 172.21.241.133 | | | ⭐ | |
| 172.21.241.54 | | | ⭐ | |
| 172.21.241.120 | | | ⭐ | |
| 172.21.241.188 | | | | ⭐ |

2.2 lvs节点配置

2.2.1 安装 ipvsadm、keepalived

bash 复制代码
yum install -y ipvsadm keepalived

2.2.2 开启路由转发

bash 复制代码
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

2.2.3 LVS DR 模式核心配置

(1)配置 VIP(虚拟 IP)

在两台 LVS 节点上绑定 VIP 到 lo:0(DR 模式要求 VIP 仅在 LVS 节点可见,Real Server 需抑制 ARP 响应):

bash 复制代码
# 绑定VIP到lo:0
ifconfig lo:0 172.21.241.188 netmask 255.255.255.255 broadcast 172.21.241.188 up
# 添加路由(避免VIP路由异常)
route add -host 172.21.241.188 dev lo:0
# 配置开机自启(写入/etc/rc.local)
echo "ifconfig lo:0 172.21.241.188 netmask 255.255.255.255 broadcast 172.21.241.188 up" >> /etc/rc.local
echo "route add -host 172.21.241.188 dev lo:0" >> /etc/rc.local

2.2.4 配置keepalived

(1)主节点

复制代码
! Configuration File for keepalived
global_defs {
   router_id LVS_MASTER
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0  # 替换为实际网卡名(如ens33)
    virtual_router_id 51
    priority 100    # 主节点优先级更高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.21.241.188  # VIP绑定到网卡
    }
}

# 配置ipvsadm规则(与前文一致)
virtual_server 172.21.241.188 9031 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 172.21.241.133 9031 {
        weight 1
        TCP_CHECK {
            connect_port 9031
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.21.241.54 9031 {
        weight 1
        TCP_CHECK {
            connect_port 9031
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.21.241.120 9031 {
        weight 1
        TCP_CHECK {
            connect_port 9031
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

virtual_server 172.21.241.188 8031 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 172.21.241.133 8031 {
        weight 1
        TCP_CHECK {
            connect_port 8031
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.21.241.54 8031 {
        weight 1
        TCP_CHECK {
            connect_port 8031
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.21.241.120 8031 {
        weight 1
        TCP_CHECK {
            connect_port 8031
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

(2)备节点

仅需修改state BACKUP、priority 90,router_id LVS_BACKUP其余与主节点一致。

(3)启动keepalived

bash 复制代码
systemctl enable keepalived && systemctl start keepalived

2.3 Real Server(Doris FE)配置

DR 模式要求 Real Server 抑制 ARP 响应(避免 VIP 被客户端直接解析到 Real Server),并绑定 VIP 到 lo:0:

bash 复制代码
# 1. 配置ARP抑制(关键)
echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf
sysctl -p

# 2. 绑定VIP到lo:0(仅回环可见)
ifconfig lo:0 172.21.241.188 netmask 255.255.255.255 broadcast 172.21.241.188 up
route add -host 172.21.241.188 dev lo:0

# 3. 开机自启配置
echo "ifconfig lo:0 172.21.241.188 netmask 255.255.255.255 broadcast 172.21.241.188 up" >> /etc/rc.local
echo "route add -host 172.21.241.188 dev lo:0" >> /etc/rc.local

2.4 验证配置

2.4.1 查看 LVS 规则是否生效

bash 复制代码
ipvsadm -Ln
# 预期输出包含:
# TCP  172.21.241.188:9031 rr
#   -> 172.21.241.133:9031   Gateway  1      0          0         
#   -> 172.21.241.54:9031    Gateway  1      0          0         
#   -> 172.21.241.120:9031   Gateway  1      0          0         
# TCP  172.21.241.188:8031 rr
#   -> 172.21.241.133:8031   Gateway  1      0          0         
#   -> 172.21.241.54:8031    Gateway  1      0          0         
#   -> 172.21.241.120:8031   Gateway  1      0          0

2.4.2 测试端口转发

从客户端执行多次telnet 172.21.241.188 9031或curl 172.21.241.188:8031/api/bootstrap,查看 Doris FE 日志确认请求轮询到不同节点。

相关推荐
强哥聊算力5 小时前
《算力江湖·英伟达传奇》第七集:ChatGPT出现前夜,英伟达发生了什么?
服务器·人工智能·算法·ai·chatgpt·gpu算力
砚凝霜8 小时前
【软考信息安全】第二十二章 Web服务器安全分析与增强——Apache与IIS
服务器·前端·安全
Android系统攻城狮8 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_delay调用流程与实战(七十二)
linux·运维·服务器·gstreamer音视频·音视频进阶
快乐的韭菜根根8 小时前
ubuntu 安装slurm并配置
linux·运维·ubuntu
数字新视界8 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
U-Mail邮件系统9 小时前
自建邮箱服务器有哪些软件?三款主流邮件服务器软件推荐
运维·服务器
倒头就睡的小比特10 小时前
Linux基础指令3
linux·服务器
Smoothcloud润云10 小时前
PyTorch推理服务模型热切换与失败回滚实战:降低版本更新中断
服务器·人工智能·pytorch·python·深度学习·gpu
梦帮科技10 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号
linux·爬虫·神经网络·算法·数学建模·系统架构·模拟退火算法
半杯咖啡半行码11 小时前
Linux 驱动开发入门:内核模块编程基础
linux·服务器·网络