🧑‍🏫
liualexiang
  • Introduction
  • Azure
    • AKS Basic
    • AKS Spark
    • AZ ACR SYNC
    • Azure CMI SDWAN
    • Azure LB DeepDive
      • Azure LB DeepDive
    • Azure Service Principal Basic
    • Azure Internal VM Network Connectivity
      • Azure Internal VM Network Connectivity
    • Azure Cli Build
    • Azure Vm Memory Monitor
  • Blockchain
    • BTC
  • CRISPR
    • 使用Parallel_Cluster提升CRISPA效率
  • OpenSource
    • ElasticSearch
      • ES Get Started
      • ES Search Query
      • Kibana 可视化
      • Logstash配置
    • Ansible 基础
    • Infra As Code
      • Pulumi Get Started
      • Terraform Basic
    • ZooKeeper 基础
    • RPC与REST
    • 使用Python申请大量内存测试
    • 使用TPC_DS产生压测数据
    • Superset
      • Superset部署手册
    • 代码扫描
    • Git
      • Git Basic
      • Github Action Basic
      • Gitlab与AzureAD集成
      • Gitbook 基础教程
    • K8S
      • enter_node
      • K8s X509 Client Cert
      • K8s Basic
      • K8s Oidc
      • Docker 基础
      • helm基础
      • K8S_Secrets管理
      • 深入了解K8S
      • 混沌工程
      • Istio
      • 生态
      • CRD开发
      • k8s网络
    • Cloud_Custodian
    • Jenkins Basic
    • Nginx
    • ETCD
    • 正则
    • VictoriaMetrics
    • Kafka
  • MySQL
    • MySQL 调优
  • Linux
    • SSH Tunnel 上网
    • 内存管理
    • 在Linux系统中通过LUKS加密磁盘
    • 量子计算 Basic
    • IO多路复用
    • Iptables
    • tmux和screen
    • Systemd
    • OS 基础
    • jq基础
    • yum
    • neovim
  • Web
    • Html Css
    • Web部署
    • 缓存
  • Programming
    • 算法
      • 返回list中最大生序子序列长度
    • Python技巧
      • Python的语法糖
      • Python常用装饰器
      • AsyncIO基础
      • 自动化测试pytest
      • python中的下划线
      • 面向对象
      • Python的坑
      • Python配置文件管理
      • HTTP Stream Response
      • Python项目管理
    • 设计模式
      • 设计模式
      • 面向对象的思想
      • 编程概念
    • Go
      • Go 基础
      • Go常用功能
      • 结构体入门
    • 前端
    • Vue
    • NodeJS
  • Math
    • 多项式插值法
  • Security
    • HTTP常见攻击
    • 加密与签名
    • RSA
    • ECDSA
  • Solidity
    • Solidity基础
    • Blockchain Testnet Faucet
  • Tools
    • 视频处理ffmpeg
    • IDE配置
    • iTerm2美化
    • 密码管理
    • FRP配置
    • 工具集
由 GitBook 提供支持
在本页
  • 有关LB底层设计原理
  • Float IP 的解释
  1. Azure
  2. Azure LB DeepDive

Azure LB DeepDive

有关LB底层设计原理

Azure LB 不管什么模式,永远都是DSR(Direct Server Response)模式,具体说明如下:

  • 进来流量 Client --> LB --> 一组MUX形成一个ring --> 物理机Hyper-V --> Virtual Switch --> VFP (Virtual Filter Platform) --> Azure VM

  • 出去流量 Azure VM --> VFP --> Internet

  • 上述概念说明

    • MUX 是做五元组hash的,能决定将流量发给哪个物理机。

    • 只有在进来的时候,流量才经过MUX,出去的时候不经过MUX。

    • 对于Internal LB,只有第一次五元组的时候,流量经过MUX,以后VFP会cache住这个记录,VM间通信不再经过VFP

Float IP 的解释

azure LB FloatIP启用之后,在后端的VM上,抓包看到的IP是负载均衡器的IP(这也就是为何要将负载均衡器的FrontIP配置到VM的loopback上)。如果不启用,则抓包看到的IP是当前VM的IP。除了在Azure Portal上启用Float IP之外,还要在Azure VM上将LB IP添加到系统的回环地址上

  • linux 在loopback上添加ip的命令: sudo ip addr add 20.55.205.90 dev lo

  • 在Windows系统下,可以新建一个loopback的网卡,也可以在现有的lookback网卡上操作

    • 新建loopback网卡:

      • 打开设备管理器,然后鼠标点中最上面的计算机名字,然后点击Action-->Add lagency hardware-->下一步-->Install the hardware that I manually select from a list(Advanced)--> Network Adapter --> Microsoft (Microsoft KM-TEST Loopback Adapter) --> Next。 新建网卡之后,在这个Loopback网卡上设置一下LoadBalancer的IP地址,子网掩码为255.255.255.255,网关和DNS为空。保存。

      • 执行 netsh int ipv4 show config 命令,查看loopback网卡名字,如名字为"Ethernet 3",然后执行

        • netsh interface ipv4 set interface "Ethernet 3" weakhostreceive=enabled

        • netsh interface ipv4 set interface "Ethernet 3" weakhostsend=enabled

    • 使用现有loopback网卡

      • 执行 netsh int ipv4 show config,查看loopback网卡名字,如名字为"Loopback Pseudo-Interface 1"

      • 执行 netsh interface ip set dns "Loopback Pseudo-Interface 1" dhcp

      • 执行 netsh interface ipv4 add address "Loopback Pseudo-Interface 1" 20.55.205.90 255.255.255.255

  • 不启用float IP的情况下,在进来的流量的时候,VFP会将destination IP由LB的IP改成VM的内网IP。出去的时候,VM将流量发给VFP,然后VFP将源IP由VMIP改成LB FrontIP发出去。

  • 启用Float IP的情况下,VFP就不做IP转换的操作了,出去流量是由VM到VFP直接出去的。

  • 无论是否启用Float IP,出去流量都不经过MUX,这也就是为何说Azure LB永远工作在DSR(Direct Server Response)模式下

参考资料:https://www.youtube.com/watch?v=wJvmXM81tEI

上一页Azure LB DeepDive下一页Azure Service Principal Basic

最后更新于3年前

已测试,参考截图 ,

FloatIP.png
启用FloatIP抓包
不启用FloatIP抓包