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

本实践指导您如何搭建一套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. 网络页面,单击创建网络

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

    image

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

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

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

创建ENS计算实例

  1. 登录ENS控制台

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

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

    说明

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

    image

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

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

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

    说明

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

    1. 登录ENS控制台

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

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

      image

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

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

    image

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

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

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

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

      说明

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

      image

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

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

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

      image

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

      image

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

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

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

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

      image.png

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

      image

    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/

        image.png

    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。

        image.png

      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端口,验证访问畅通。

      image.png

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

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

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

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

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

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

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

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

        image

        说明

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

    2. 为NAT网关设置SNAT

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

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

        image

    3. 验证访问公网可通。

      使用dig命令验证:

      image.png

      说明

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

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

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