OpenELB

负载均衡器
授权协议 Apache
开发语言 Google Go
所属分类 服务器软件、 集群/负载均衡
软件类型 开源软件
地区 国产
投 递 者 程俊健
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

OpenELB 是一款适用于物理机部署 Kubernetes 的负载均衡器,该负载均衡器使用物理交换机实现,利用 BGP 和 ECMP 从而达到性能最优和高可用性。我们知道在云上部署的 Kubernetes 环境下,通常云服务厂商会提供 cloud LB 插件暴露 Kubernetes 服务到外网,但在物理机部署环境下由于没有云环境,服务暴露给外网非常不方便,Porter 是一个提供用户在物理环境暴露服务和在云上暴露服务一致性体验的插件。该插件提供两大功能模块:

  1. LB controller 和 agent: controller 负责同步 BGP 路由到物理交换机;agent 以 DaemonSet 方式部署到节点上负责维护引流规则;
  2. EIP service,包括 EIP pool 管理和 EIP controller,controller 会负责更新服务的 EIP 信息。

OpenELB 是 KubeSphere 的一个子项目。

物理部署架构

下图是物理部署架构图,假设有一个服务部署在 node1 (192.168.0.2) 和 node2 (192.168.0.6) 上,需要通过公网 IP 1.1.1.1 访问该服务,服务部署人员按照示例部署该服务后,Porter 会自动同步路由信息到 leaf 交换机,进而同步到 spine,border 交换机,互联网用户就可以通过 EIP 1.1.1.1 直接访问该服务了。

node architecture

插件部署架构

插件通过一个Manager监控集群中的 Service 的变化,广播相关路由。同时集群中所有节点都部署有一个 Agent,每当有一个 EIP 被使用时,就会在主机上添加一条主机路由规则,将发往这个 EIP 的 IP 报文引流到本地。

porter deployment

插件逻辑

该插件以服务的形式部署在 Kubernetes 集群中时,会与集群的边界路由器(三层交换机)建立 BGP 连接。每当集群中创建了带有特定注记(一个 annotation 为 lb.kubesphere.io/v1apha1: porter,见示例)的服务时,就会为该服务动态分配 EIP (用户也可以自己指定 EIP),LB controller 创建路由,并通过 BGP 将路由传导到公网(私网)中,使得外部能够访问这个服务。

OpenELB controller 是基于 Kubernetes controller runtime 实现的 custom controller,通过 watch service 的变化自动变更路由信息。

porter architecture

部署插件

  1. 在物理部署的 K8s 集群上部署
  2. 在青云上用模拟路由器的方式测试

从代码构建新的插件

软件需求

  1. go 1.11,插件使用了 gobgp 创建 BGP 服务端,gobgp 需要 go 1.11
  2. docker,无版本限制
  3. kustomize,插件使用了 kustomize 动态生成集群所需的 k8s yaml 文件
  4. 如果插件会推送到远端私有仓库,需要提前执行 docker login

步骤

  1. git clone https://github.com/kubesphere/porter.git, 进入代码目录
  2. 按照上面教程的要求修改 config.toml (位于 config/bgp/ 下)
  3. (optional)根据自己需要修改代码
  4. (optional)根据自己的需求修改镜像的参数(位于 config/manager 下)
  5. (optional)按照模拟教程部署一个Bird主机,修改hack/test.sh中的BirdIP,然后运行make e2e-test进行e2e测试
  6. 修改 Makefile中 的 IMG 名称,然后 make release,最终的 yaml 文件在 deploy 目录下
  7. kubectl apply -f deploy/release.yaml 部署插件

开源许可

OpenELB is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

  • 1、前排提示:多看文档,少吃亏!请先准备一个私有云环境 2、官方文档: OpenELB官网 3、VMware私有云环境搭建教程请参考:1.云原生-VMware虚拟机安装Kubesphere实战 KubeSphere3.3.0版本加入了OpenELB为私有环境对外暴露 LoadBalancer 服务。 值得注意的是Kub

  • 本文主要在 k8s 原生集群上部署 v0.4.4 版本的 OpenELB 作为 k8s 的 LoadBalancer,主要涉及 OpenELB 的 Layer2 模式和 BGP 模式两种部署方案。由于 BGP 的相关原理和配置比较复杂,这里仅涉及简单的 BGP 配置。 文中使用的 k8s 集群是在 CentOS7 系统上基于 docker 和 calico 组件部署 v1.23.6 版本,此前写的

  • 当我们在K8s集群中安装好Kubesphere,并部署好自己的微服务以后,如何将我们的服务暴露出去是一个问题。 通常我们会使用NodePort的方式将我们的应用通过K8s允许的端口即30000-32767端口暴露出去,这种方式的缺点也很明显,当我们配置好域名进行访问时需要带上端口号才能访问到对应的服务而且端口有数量限制,一般情况下我们不希望在请求时带上这些端口。 能不能使用默认的80/443端口进

  • 本文档介绍如何使用 kubectl 和Helm在 Kubernetes 集群中安装和删除 OpenELB。 笔记 在 Kubernetes 集群中,您只需要安装一次 OpenELB。安装完成后,集群中会安装一个 openelb-manager Deployment,其中包含一个 openelb-manager Pod。openelb-manager Pod 为整个 Kubernetes 集群实现了

 相关资料
  • 负载均衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。 使用带有负载均衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载均衡服务通常是由专用软体和硬件来完成。 负载均衡最重要的一个应用是利用多台服务器提供单一服务,这种方案有

  • 负载均衡包括负载均衡实例、访问控制及证书。 实例 负载均衡实例是一个运行的负载均衡服务,通过设置的虚拟IP接收流量并将其转发分配给后端服务器。 访问控制 访问控制用于设置访问负载均衡的IP白名单或IP黑名单。 证书 当在负载均衡实例上配置HTTPS监听转发来自HTTPS协议的请求时,需要配置证书。

  • 一个简单的负载均衡的示例,把www.domain.com均衡到本机不同的端口,也可以改为均衡到不同的地址上。> http { : upstream myproject { : server 127.0.0.1:8000 weight=3; : server 127.0.0.1:8001; : server 127.0.0.1:8002; : server 127.0.0.1:8003; : }

  • SOFARPC 提供多种负载均衡算法,目前支持以下五种: 类型 名称 描述 random 随机算法 默认负载均衡算法。 localPref 本地优先算法 优先发现是否本机发布了该服务,如果没有再采用随机算法。 roundRobin 轮询算法 方法级别的轮询,各个方法间各自轮询,互不影响。 consistentHash 一致性hash算法 同样的方法级别的请求会路由到同样的节点。 weightRou

  • 本节将会讨论常见的分布式系统负载均衡手段。 6.5.1 常见的负载均衡思路 如果我们不考虑均衡的话,现在有n个服务节点,我们完成业务流程实际上只需要从这n个中挑出其中的一个。有几种思路: 按顺序挑: 例如上次选了第一台,那么这次就选第二台,下次第三台,如果已经到了最后一台,那么下一次从第一台开始。这种情况下我们可以把服务节点信息都存储在数组中,每次请求完成下游之后,将一个索引后移即可。在移到尽头时

  • 当过滤器需要获取到上游群集中的主机连接时,群集管理器使用负载平衡策略来确定选择哪个主机。负载平衡策略是可插入的,并且在配置中以每个上游集群为单位进行指定。请注意,如果没有为群集配置积极的健康检查策略,则所有上游群集成员都被视为健康。 支持的负载平衡策略 轮训 这是一个简单的策略,每个健康的上游主机按循环顺序选择。 权重最小请求 请求最少的负载均衡器使用O(1)算法来选择两个随机的健康主机,并选择活

  • 线上环境是阿里云,既然阿里云有SLB,比自己运维一个要省事儿的多,事实上,自己做也真不一定做得比它好,本节试图以haproxy来解释一下slb的原理 讲解haproxy的目的是介绍负载算法,便于理解SLB 目前比较流行的 目前,在线上环境中应用较多的负载均衡器硬件有F5 BIG-IP,软件有LVS,Nginx及HAProxy,高可用软件有Heartbeat. Keepalived 成熟的架构有 L

  • 1.简介 LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。负载均衡可分为软件负载均衡和硬件负载均衡。在我们日常开发中,一般很难接触到硬件负载均衡。但软件负载均衡还