diva-notes
  • README
  • Ads
    • 定价策略
    • 广告层级
    • 归因模型
    • 买量
    • Chat GPT
    • Google
  • AI
    • 参考资料
    • Chat GPT
    • stable-diffusion-webui安装
  • Algorithm
    • 倍增
    • 并查集
    • 参考
    • 环的判断
    • 凸包
    • 蓄水池抽样
    • 最短路径
    • 最小生成树
    • KMP算法
    • Rabin-Karp算法
    • Tarjan桥算法
  • Architecture
    • Serverless
  • Career
  • CICD
    • 代码质量
    • CICD实践
  • Data Structure
    • 布谷鸟过滤器
    • 布隆过滤器
    • 浮点
    • 红黑树
    • 锁
    • LSM树
  • DB
    • My SQL
      • 隔离级别
      • 架构
      • 索引
      • 锁
      • 页结构
      • 主从同步
      • ACID
      • Log
      • MVCC
      • Questions
    • Postgres
      • 持久化
      • 对比MySQL
      • 隔离级别
      • 索引
      • Greenpulm
      • MVCC
    • 倒排索引
    • 列式存储
    • H Base
    • HDFS
    • MPP数据库选型
    • Questions
  • Distributed System
    • 分布式事务
    • 服务网格
    • BASE理论
    • CAP
    • Etcd
    • Raft协议
    • ZAB协议
  • Go
    • 1.语言基础
      • 1.CPU寄存器
      • 2-1.函数调用
      • 2-2.函数调用栈
      • 2.接口
      • 3.汇编
      • 4.调试
    • 2.编译
      • 1.编译
      • 2.词法与语法分析
      • 3.类型检查
      • 4.中间代码生成
      • 5.机器码生成
    • 3.数据结构
      • 1.数组array
      • 2.切片slice
      • 3.哈希表map
      • 4.字符串
    • 4.常用关键字
      • 1.循环
      • 2.defer
      • 3.panic和recover
      • 4.make和new
    • 5.并发编程
      • 1.上下文Context的实现
      • 2-1.runtime.sema信号量
      • 2-2.sync.Mutex的实现
      • 2-3.sync.WaitGroup
      • 2-4.sync.Once的实现
      • 2-5.sync.Map的实现
      • 2-6.sync.Cond
      • 2-7.sync.Pool的实现
      • 2-8.sync.Semaphore的实现
      • 2-9.sync.ErrGroup
      • 3.定时器Timer的实现
      • 4.Channel的实现
      • 5-1.调度-线程
      • 5-2.调度-MPG
      • 5-3.调度-程序及调度启动
      • 5-4.调度-调度策略
      • 5-5.调度-抢占
      • 6.netpoll实现
      • 7.atomic
    • 6.内存管理
      • 1-1.内存分配基础-TCmalloc
      • 1-2.内存分配
      • 2.垃圾回收
      • 3.栈内存管理
    • 参考
    • 各版本特性
    • 坑
    • Go程序性能优化
    • http.Client
    • net.http路由
    • profile采样的实现
    • Questions
    • time的设计
  • Kafka
    • 高可用
    • 架构
    • 消息队列选型
    • ISR
    • Questions
  • Network
    • ARP
    • DNS
    • DPVS
    • GET和POST
    • HTTP 2
    • HTTP 3
    • HTTPS
    • LVS的转发模式
    • NAT
    • Nginx
    • OSI七层模型
    • Protobuf
    • Questions
    • REST Ful
    • RPC
    • socket缓冲区
    • socket详解
    • TCP滑动窗口
    • TCP连接建立源码
    • TCP连接四元组
    • TCP三次握手
    • TCP数据结构
    • TCP四次挥手
    • TCP拥塞控制
    • TCP重传机制
    • UDP
  • OS
    • 磁盘IO
    • 调度
    • 进程VS线程
    • 零拷贝
    • 内存-虚拟内存
    • 内存分配
    • 用户态VS内核态
    • 中断
    • COW写时复制
    • IO多路复用
    • Questions
  • Redis
    • 安装
    • 参考
    • 高可用-持久化
    • 高可用-主从同步
    • 高可用-Cluster
    • 高可用-Sentinel
    • 缓存一致性
    • 事务
    • 数据结构-SDS
    • 数据结构-Skiplist
    • 数据结构-Ziplist
    • 数据结构
    • 数据类型-Hashtable
    • 数据类型-List
    • 数据类型-Set
    • 数据类型-Zset
    • 数据淘汰机制
    • 通信协议-RESP
    • Questions
    • Redis6.0多线程
    • Redis分布式锁
    • Redis分片
  • System Design
    • 本地缓存
    • 错误处理
    • 大文件处理
    • 点赞收藏关注
    • 短链接生成系统
    • 负载均衡
    • 高并发高可用
    • 规则引擎
    • 集卡活动
    • 秒杀系统
    • 评论系统
    • 熔断
    • 限流
    • 延迟队列
    • Docker
    • ES
    • K 8 S
    • Node.js
    • Questions
  • Work
    • Bash
    • Charles
    • Code Review
    • Ffmpeg
    • Git
    • intellij插件
    • I Term 2
    • Mac
    • mysql命令
    • Nginx
    • postgresql命令
    • Protoc
    • Ssh
    • Systemd
    • Tcp相关命令
    • Vim
Powered by GitBook
On this page
  • 几个术语和缩写
  • LVS的几种转发模式
  • DR模型(Director Routing--直接路由)
  • NAT模型 (NetWork Address Translation - 网络地址转换)
  1. Network

LVS的转发模式

几个术语和缩写

cip:Client IP,客户端地址
vip:Virtual IP,LVS实例IP
rip:Real IP,后端RS地址
RS: Real Server 后端真正提供服务的机器
LB: Load Balance 负载均衡器
LVS: Linux Virtual Server
sip: source ip
dip: destination ip

LVS的几种转发模式

  • DR模型 -- (Director Routing - 直接路由,替换MAC地址)

  • NAT模型 -- (NetWork Address Translation - 网络地址转换,源地址替换)

  • FULLNAT -- (FULL NAT)

  • IP 隧道模型 -- (IP Tunneling)

DR模型(Director Routing--直接路由)

简单来说:客户端发送给 LVS,LVS 转发给 RS,RS 直接回复客户端

  1. 请求流量 (sip 200.200.200.2, dip 200.200.200.1) 先到达 LVS

  2. LVS 根据负载策略选择一个 RS,然后将这个网络包的 MAC 地址修改成该RS的 MAC

  3. 然后丢给交换机,交换机将这个包给选中的 RS

  4. 选中的 RS 看到MAC地址是自己的、dip 也是自己的,愉快地手下并处理、回复

  5. 回复包(sip 200.200.200.1, dip 200.200.200.2)

  6. 经过交换机直接回复给 client 了(不再走LVS)

优点

  • DR模式是性能最好的一种模式,入站请求走LVS,回复报文绕过LVS直接发给Client

缺点

  • 要求LVS和rs在同一个vlan

  • RS需要配置vip同时特殊处理arp

  • 不支持端口映射

为什么要求LVS和RS在同一个vlan(或者说同一个二层网络里)

因为DR模式依赖多个RS和LVS共用同一个VIP,然后依据MAC地址来在LVS和多个RS之间路由,所以LVS和RS必须在一个vlan或者说同一个二层网络里

NAT模型 (NetWork Address Translation - 网络地址转换)

客户端发送给 LVS,LVS 转发 RS,RS 回复 LVS,LVS 转发给客户端

  1. client 发出请求(sip 200.200.200.2,dip 200.200.200.1)

  2. 请求包到达lvs,lvs修改请求包为(dip rip)

  3. 请求包到达 RS, RS 回复(sip rip,dip 200.200.200.2)

  4. 这个回复包不能直接给client,因为rip不是 VIP 会被reset掉

  5. 但是因为lvs是网关,所以这个回复包先走到网关,网关有机会修改sip

  6. 网关修改sip为VIP,修改后的回复包(sip 200.200.200.1,dip 200.200.200.2)发给client

优点

  • 配置简单

  • 支持端口映射(看名字就知道)

  • RIP一般是私有地址,主要用户LVS和RS之间通信

缺点

  • LVS和所有RS必须在同一个vlan

  • 进出流量都要走LVS转发

  • LVS容易成为瓶颈

  • 一般而言需要将 VIP 配置成 RS 的网关

参考

PreviousHTTPSNextNAT

Last updated 2 years ago

阿里云云栖号 - 就是要你懂负载均衡--lvs和转发模式