zoukankan      html  css  js  c++  java
  • IPVS 介绍

    前言

    Kubernetes 提供了基于 IPVS 的服务代理。相比于 iptables 代理模式,IPVS 代理模式具有低延迟、高性能的优势。本文主要介绍 IPVS 相关概念。如果想了解 iptables 模式,可以参考另一篇文章:netfiler/iptables 介绍。

    Linux 虚拟服务器

    要了解 IPVS,不得不谈到 Linux 虚拟服务器项目(Linux Virtual Server, LVS)。Linux 虚拟服务器技术是为了解决服务器承受的日益增长的访问压力,它通过部署虚拟服务器,使真实服务器集群使用同一个地址对外暴露服务,并在集群内实现负载均衡。真实服务器之间可以通过高速局域网或地理分隔的广域网相互连接,负载均衡器将请求分发到不同的真实服务器。因此,可以通过添加新服务器,提高系统可扩展性。

    实现原理

    LVS 实现负载均衡的方式有三种可以配置:Nat,IP Tunneling 和 Direct Routing(直接路由)。

    NAT 实现

    集群可以使用私有网络地址,使用负载均衡器的公网 IP 暴露服务。NAT 实现的缺点是负载均衡器需要修改请求、响应数据包,容易成为性能瓶颈。

    IP 隧道实现

    IP 隧道技术是将原始 IP 数据报封装在另一个 IP 数据报中进行传输,原数据报作为新数据报的载荷,隧道包目的地址就是转交地址。所以,IP 隧道实现对网络没有要求,既可以是 LAN,也可以是 WAN。服务器在接受请求后,可以直接向客户端返回响应。

    直接路由实现

    直接路由作用和 IP 隧道类似,负载均衡器负责分发请求,服务器收到请求后可以直接向客户端返回响应。但直接路由只支持局域网,集群服务器必须和负载均衡器物理相连。负载均衡器通过修改数据帧的目的 MAC 地址实现负载均衡。

    IPVS

    IPVS(IP Virtual Server)是一个软件,是内置在 Linux 内核中的传输层负载均衡器,实现了四层负载均衡(Layer-4 Load Balancing)。四层负载均衡的意思是负载均衡策略是基于传输层的信息。IPVS 的管理程序是 ipvsadm,可以通过man ipvsadm查看使用手册。ipvsadm 支持直接路由(-g)、IP 隧道(-i)、NAT(-m)三种转发模式:

    $ man ipvsadm
    -g, --gatewaying    Use gatewaying (direct routing). This is the default.
    -i, --ipip          Use ipip encapsulation (tunneling).
    -m, --masquerading  Use masquerading (network access translation, or NAT).
    

    延伸阅读

    [1] The Linux Virtual Server project
    [2] Wiki - Load Balancing
    [3] Software - IPVS
    [4] ipvsadm:Linux 的负载均衡功能 ipvs 的使用,ipvsadm的常用操作命令

  • 相关阅读:
    敏捷实践-学习实践资料汇总
    从数据仓库到数据湖—浅谈数据架构演进
    JVM知识点汇总备忘
    Protobuf的使用和原理
    kafka数据定时导入hive便于后续做数据清洗
    Mybatis Mapper接口动态代理实现原理及二次开发
    软考论文-写作大纲-备考思路总结
    css3另一个属性写法
    css3动画效果
    jquery点击鼠标后关闭图片
  • 原文地址:https://www.cnblogs.com/huanggze/p/12486158.html
Copyright © 2011-2022 走看看