边缘云上构建基础设施环境

更新时间:
复制 MD 格式

本实践指导您如何搭建一套ENS边缘节点的基础设施环境。您将逐一了解如何在ENS节点新建VPC网络、虚拟交换机,如何创建计算实例,如何通过边缘负载均衡ELB进行流量分发及如何通过SNAT、EIP,实现流量的代理。云速搭CADT产品已同步上线本部署方案。如果您需要通过图形化方式快速部署环境,可点击https://bp.aliyun.com/detail/387进行一键部署使用。

前提条件

  • 请确保您的阿里云账户已完成实名认证。您可以登录阿里云控制台,前往账号中心查看是否已完成实名认证。

  • 请确保您的账户余额不少于100元。您可以登录阿里云控制台,前往费用与成本查看账户余额。

操作步骤

开通ENS服务

服务开通

进入阿里云边缘节点服务ENS首页,单击立即开通,填写您的信息并提交审核。您也可以联系您的客户经理进行开通。

售前配置

请您联系您的客户经理,对必要的资源及节点进行售前配置,避免对您后续流程造成阻碍。

RAM权限配置

重要

阿里云账号拥有所有API的访问权限,建议您创建并使用RAM用户进行API访问或日常运维。

  1. 创建RAM用户

    1. 登录RAM访问控制

    2. 在左侧导航栏,选择身份管理 > 用户

    3. 用户页面,单击创建用户

    4. 创建用户页面,设置登录名称显示名称访问方式控制台访问

    5. 单击确定

      创建RAM用户成功后,请记录用户登录名称和密码,您在调用OpenAPI时,需要使用该RAM用户登录阿里云OpenAPI开发者门户。

  2. RAM用户授权。

    1. 访问RAM用户列表

    2. 单击目标RAM用户操作列的添加权限

    3. 在文本框中输入关键字ENS进行搜索,选择AliyunENSFullAccessAliyunCADTFullAccess策略。

  3. 单击确认新增授权,完成授权操作。

创建VPC网络、虚拟交换机

您可以根据网络规划,填写内网网段、交换机等配置,进行VPC和交换机的创建。

  1. 登录ENS控制台

  2. 在左侧导航栏,单击网络管理 > 网络

  3. 网络页面,单击创建网络

    您可在创建网络页面,对您即将创建的网络交换机进行配置。

    网络的配置参数包括:节点(如济南移动)、名称IPv4网段(可选择 推荐网段高级配置网段,创建成功后网段不能修改)、描述标签

    交换机配置包含以下参数:名称(例如 lb-test)、IPv4网段(例如 10.0.0.0/24,可用IP数为253)、描述标签。创建成功后,网段不能修改。单个网络最多支持创建3个交换机。

  4. 确认信息无误后,单击创建

    • 您可在网络页面中,查看您创建的网络的状态

    • 您可在交换机页面中,查看您创建的交换机的状态

创建ENS计算实例

  1. 登录ENS控制台

  2. 在左侧导航栏,单击算力与镜像 > 实例

  3. 实例页面,单击创建实例,详细配置请参见创建实例

    说明

    创建实例时,请确保与上述创建的网络及交换机区域保持一致,选择上述创建的网络及交换机。

    在创建实例向导的 网络和存储 步骤中,网络类型选择 自建网络,并根据需要配置安全组、系统盘、数据盘及带宽计费方式等参数。

  4. 支付完成后您可在实例页面,查看您创建的实例。

通过负载均衡实例进行流量分发

  1. 创建边缘负载均衡实例

    说明

    在您创建负载均衡实例时,请确保与创建的实例处于同一区域。

    1. 登录ENS控制台

    2. 在左侧导航栏,单击边缘负载均衡 > 传统负载均衡

    3. 边缘负载均衡页面,单击创建实例

      在创建实例页面,付费模式选择按量付费实例名称输入lb-test(长度1-80个字符,可包含字母、数字、"-""_"),区域选择中国福州-6,在区域配置表格中为该节点选择对应的网络交换机,选择实例规格,勾选《边缘节点服务ENS服务条款》,单击确认订单

    4. 确认信息无误后,单击确认订单

  2. 您可在边缘负载均衡实例页面,查看创建的边缘负载均衡实例,确认边缘负载均衡实例处于运行中

  3. 边缘负载均衡实例配置后端服务器。

    1. 边缘负载均衡页面,单击对应边缘负载均衡实例实例操作列下的添加后端服务器

    2. 默认服务器组页面,单击添加,确认信息无误后,单击下一步

    3. 配置权重后,单击添加

      说明

      权重越高的ENS实例将被分配到更多的访问请求。

      我的服务器 弹窗中,完成第1选择服务器:从ENS实例列表中勾选目标实例(可通过顶部下拉框筛选或输入云服务器ID搜索),确认实例的 IP地址状态 为运行中后,单击 下一步 进入权重配置。

  4. 边缘负载均衡实例绑定边缘弹性公网IP,详细配置请参见绑定弹性公网IP

    1. 边缘负载均衡页面,单击操作下的更多绑定公网IP

    2. 在弹窗内选择您已创建的边缘弹性公网IP,确认信息无误后单击确定。如果您未创建边缘弹性公网IP,请参见创建和管理边缘弹性公网IP

    3. 边缘负载均衡实例服务器地址出现对应公网IP,代表绑定边缘弹性公网IP成功。

  5. 边缘负载均衡实例配置监听。详细参数请参见配置监听

    1. 边缘负载均衡页面,单击操作下的监听配置向导

    2. 监听页面单击添加监听

    3. 基本信息页面上配置信息,确认信息无误后单击下一步

      基本设置包含监听名称负载均衡协议(可选 TCPUDPHTTPHTTPS)、监听端口云服务器监听端口。高级设置可修改调度算法连接空闲超时时间获取客户端真实IP连接请求超时时间等参数。选择 HTTPS 协议时需确认已授予 RAM 产品 AliyunYundunCertFullAccess 权限。

    4. 健康检查页面,配置健康检查规则,配置完成后单击下一步

      开启健康检查开关后,可配置以下参数:健康检查协议(默认 HTTP)、健康检查方法(默认 head)、健康检查路径(默认 /)、正常状态码(默认 http_2xx)、健康检查响应超时时间(默认 5 秒)、健康检查间隔时间(默认 2 秒)、健康检查健康阈值(默认 3)和不健康阈值(默认 3)。

    5. 确认完成页面确认信息无误后,单击创建

  6. 验证公网可通过边缘负载均衡实例访问ENS实例。

    1. Go环境准备,

      1. 更新系统包列表及安装Go。

        # 对于基于 Debian/Ubuntu 的系统,更新包列表。其他发行版跳过
        sudo apt-get update
        # 使用包管理器安装
        # 对于基于 Debian/Ubuntu 的系统:
        sudo apt-get install golang
        # 对于基于 Red Hat/CentOS 的系统:
        sudo yum install golang
      2. 验证安装信息。

        go version
        # 有以下类似输出
        go version go1.18.3 linux/amd64
      3. 设置环境变量。

        编辑~/.profile~/.bashrc文件,添加 Go 的路径到PATH环境变量中。

        echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile
        source ~/.profile
        # 或
        echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
        source ~/.bashrc
      4. 创建工作目录。

        为了让您更好地组织Go项目,建议创建一个工作目录。例如,创建一个~/go目录:

        mkdir -p ~/go/{bin,src,pkg}
        echo 'export GOPATH=~/go' >> ~/.profile
        echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.profile
        source ~/.profile
        # 或
        echo 'export GOPATH=~/go' >> ~/.bashrc
        echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
        source ~/.bashrc
    2. ENS实例上部署简单的Webserver服务,您可通过本地8080端口访问服务,并获得响应。

      1. package main
        import (
            "fmt"
            "net/http"
        )
        func helloHandler(w http.ResponseWriter, r *http.Request) {
            fmt.Fprintf(w, "Hello\n")
        }
        func main() {
            http.HandleFunc("/", helloHandler)
            fmt.Println("Starting server on :8080")
            if err := http.ListenAndServe(":8080", nil); err != nil {
                fmt.Println(err)
            }
        }
      2. 使用以下命令编译上述代码,并在后台运行。

        go build -o webserver main.go
        nohup ./webserver &
      3. 本地访问8080端口,验证服务运转正常。

        curl http://127.0.0.1:8080/
        [root@i-xxx server]# curl http://127.0.0.1:8080/
        Hello
    3. ENS实例上部署nginx,并修改nginx配置。

      1. CentOS为例,安装并启动Nginx。

        sudo yum install epel-release
        sudo yum install nginx
        sudo systemctl start nginx

        编辑nginx.conf,可将请求到不同服务的地址流量转发到不同的服务端口号。配置文件的位置通常在/etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default。

      2. 根据先前的配置,边缘负载均衡ELB实例的监听端口为80,RS监听端口为80。

      3. nginx.conf中插入以下段,使得RS服务器监听来自ELB实例绑定的EIP地址且端口号为80的请求,并转发到本地8080端口。

        server {
            listen 80;  # 监听 80 端口
            server_name your_domain_or_ip;  # 替换为你的实际域名或 IP 地址
            location / {
                proxy_pass http://127.0.0.1:8080;  # 将请求转发到本地的 8080 端口
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
        }
      4. 校验修改后的配置语法无误。

        sudo nginx -t
        # 返回以下内容,代表语法校验正常
        nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
        nginx: configuration file /etc/nginx/nginx.conf test is successful
      5. 重启Nginx使更新后的配置生效。

        sudo systemctl reload nginx 

    4. 在公网,使用curl访问<EIP>:80端口,验证访问畅通。

      curl http://<EIP>/
      Hello

通过NAT网关帮助ENS实例访问互联网

  1. 创建NAT网关。详细参数请参见创建和管理边缘NAT网关实例

    1. 在左侧导航栏,单击网络管理 > NAT网关

    2. NAT网关页面,单击创建NAT网关,在您创建边缘负载均衡实例相同节点创建NAT网关

  2. NAT网关绑定边缘弹性公网IP,之后该EIP用于访问公网(对应SNAT规则),或是被公网访问(对应DNAT规则)。

    1. NAT网关绑定边缘弹性公网IP

      1. 操作列中单击更多绑定公网IP

      2. 在弹窗内选择您已创建的边缘弹性公网IP,确认信息无误后单击确定

        说明

        在您绑定公网IP前,请确保您已创建好同节点下的边缘弹性公网IP

    2. NAT网关设置SNAT

      1. 操作栏中单击更多设置SNAT

      2. 设置SNAT页面中根据您的需要进行配置,确认信息无误后单击确定

        配置项包括:条目名称条目粒度(支持 VPC粒度交换机粒度自定义粒度)、交换机公网IP地址。选择 交换机粒度 时,指定交换机下的 ENS 实例通过配置的公网 IP 访问互联网。

    3. 验证访问公网可通。

      使用dig命令验证:

      [root@i-5xxx server1]# dig taobao.com
      ; &lt;&lt;&gt;> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 &lt;&lt;&gt;> taobao.com
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13799
      ;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 1
      说明

      请勿使用ping测试连通性,不进行额外配置的情况下ping公网可能会不通。这是因为:

      • ENS安全组具备默认的入方向的不同规则,当实例绑定安全组,且没有添加放行规则时,ping的回包会被拦截。

      • ENSNAT当前没有ICMP协议的session保持功能。