文档首页/ 云容器引擎 CCE/ 用户指南/ 网络/ 路由(Ingress)/ 自建Nginx Ingress迁移到ELB Ingress
更新时间:2024-09-04 GMT+08:00
分享

自建Nginx Ingress迁移到ELB Ingress

本文介绍如何从自建Nginx Ingress迁移至ELB Ingress。

ELB Ingress是基于华为云弹性负载均衡(Elastic Load Balance)实现的Ingress服务。相比于自建Nginx Ingress,ELB Ingress提供更为强大的Ingress流量管理功能,具有以下优势:

  • 全托管免运维:ELB属于全托管免运维的云服务,不占用工作节点。
  • 高可用性:ELB支持多可用区的同城双活容灾,无缝实时切换。完善的健康检查机制,保障业务实时在线。
  • 自动弹性:ELB支持自动弹性规格,处理能力随业务峰值自动伸缩。
  • 超强性能:单个ELB实例最大支持100万QPS、千万级并发连接。
  • 云产品生态集成:ELB支持于WAF等多种云产品结合使用。
  • 配置变更热更新:配置变更完全热更新,不需要Reload进程,对长连接无损。

场景示例

下图场景为例。某企业在华为云使用CCE集群,并通过自建Nginx Ingress Controller配置Ingress转发规则,配置域名和路径的转发策略,且对外通过DNS域名提供服务。客户端访问域名example.com时,Nginx Ingress接收到请求会根据对应的转发策略将流量转发至对应Service的Pod上。

由于业务发展需要,该企业需要将自建Nginx Ingress迁移到ELB Ingress上。为了保持业务稳定,希望不改变对外提供服务的DNS域名及后端服务器的IP地址。您可以通过在 CCE集群上配置 ELB Ingress 规则,使ELB提供的转发策略与之前一致,然后利用DNS域名解析的权重设置完成流量的迁移。

  • 建议在业务低谷期进行流量的切换。
  • 使用ELB会产生计费信息,具体计费详情请参见计费概述

配置待迁移的ELB Ingress

  1. 创建待迁移的Ingress,并指向原有的后端服务。

    本例中使用已有ELB创建Ingress,创建elbingress.yaml文件示例如下。您还可以选择自动创建Ingress关联的ELB,更多指导请参见通过Kubectl命令行创建ELB Ingress
    apiVersion: networking.k8s.io/v1
    kind: Ingress 
    metadata: 
      name: ingress-test
      annotations: 
        kubernetes.io/elb.id: <your_elb_id>  #替换为您已有的ELB ID
        kubernetes.io/elb.ip: <your_elb_ip>  #替换为您已有的ELB IP
        kubernetes.io/elb.class: performance  #ELB类型: 独享型为performance
        kubernetes.io/elb.port: '80' 
    spec:
      rules: 
      - host: 'example.com'            #替换为您的域名 
        http: 
          paths: 
          - path: '/'
            backend: 
              service:
                name: <your_service_name>  #替换为您的目标服务名称,与原Nginx Ingress关联的服务一直
                port: 
                  number: 8080             #替换为您的目标服务端口
            property:
              ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
            pathType: ImplementationSpecific
      ingressClassName: cce  

  2. 执行下面命令创建Ingress。

    kubectl apply -f elbingress.yaml

切流至ELB Ingress

流量切换前,假设您已将业务域名通过A记录解析的方式指向了自建Nginx Ingress的公网地址。您可以使用DNS的流量权重分配,逐步将访问原Nginx Ingress的流量切换至新的ELB Ingress。

图1 使用DNS切流

您可以通过以下步骤完成流量的切换。

  1. 进入公网域名列表页面
  2. 在“公网域名”页面的域名列表中,单击域名example.com的名称。
  3. 进入“解析记录”页面。此时已存在一个A记录,对应Nginx Ingress的公网IP。修改Nginx Ingress的A记录的权重为9。
  4. 单击“添加记录集”,添加A记录,地址为待迁移的ELB公网IP,并将权重设置为1。

    图2 添加DNS记录集

  5. 在观察业务没有影响的情况下,逐步调整ELB实例解析记录的权重值至100%。

删除冗余资源

当Nginx Ingress长连接全部处理完成,且Nginx Ingress没有新增流量时,您可以根据业务场景静默观察一段时间后释放冗余资源。

删除Nginx Ingress实例、controller控制器、webhook等。

相关文档