本实践指导您如何搭建一套ENS边缘节点的基础设施环境。您将逐一了解如何在ENS节点新建VPC网络、虚拟交换机,如何创建计算实例,如何通过边缘负载均衡ELB进行流量分发及如何通过SNAT、EIP,实现流量的代理。云速搭CADT产品已同步上线本部署方案。如果您需要通过图形化方式快速部署环境,可点击https://bp.aliyun.com/detail/387进行一键部署使用。
前提条件
请确保您的阿里云账户已完成实名认证。您可以登录阿里云控制台,前往账号中心查看是否已完成实名认证。
请确保您的账户余额不少于100元。您可以登录阿里云控制台,前往费用与成本查看账户余额。
操作步骤
开通ENS服务
服务开通
进入阿里云边缘节点服务ENS首页,单击立即开通,填写您的信息并提交审核。您也可以联系您的客户经理进行开通。
售前配置
请您联系您的客户经理,对必要的资源及节点进行售前配置,避免对您后续流程造成阻碍。
RAM权限配置
阿里云账号拥有所有API的访问权限,建议您创建并使用RAM用户进行API访问或日常运维。
创建RAM用户。
登录RAM访问控制。
在左侧导航栏,选择
。在用户页面,单击创建用户。
在创建用户页面,设置登录名称和显示名称、访问方式为控制台访问。
单击确定。
创建RAM用户成功后,请记录用户登录名称和密码,您在调用OpenAPI时,需要使用该RAM用户登录阿里云OpenAPI开发者门户。
为RAM用户授权。
访问RAM用户列表。
单击目标RAM用户操作列的添加权限。
在文本框中输入关键字
ENS
进行搜索,选择AliyunENSFullAccess及AliyunCADTFullAccess策略。
单击确定新增授权,完成授权操作。
创建VPC网络、虚拟交换机
您可以根据网络规划,填写内网网段、交换机等配置,进行VPC和交换机的创建。
登录ENS控制台。
在左侧导航栏,单击
。在网络页面,单击创建网络。
您可在创建网络页面,对您即将创建的网络及交换机进行配置。
确认信息无误后,单击创建。
您可在网络页面中,查看您创建的网络的状态。
您可在交换机页面中,查看您创建的交换机的状态。
创建ENS计算实例
登录ENS控制台。
在左侧导航栏,单击
。在实例页面,单击创建实例,详细配置请参见创建实例。
说明创建实例时,请确保与上述创建的网络及交换机区域保持一致,选择上述创建的网络及交换机。
支付完成后您可在实例页面,查看您创建的实例。
通过负载均衡实例进行流量分发
创建边缘负载均衡实例。
说明在您创建负载均衡实例时,请确保与创建的实例处于同一区域。
登录ENS控制台。
在左侧导航栏,单击
。在边缘负载均衡页面,单击创建实例。
确认信息无误后,单击确认订单。
您可在边缘负载均衡实例页面,查看创建的边缘负载均衡实例,确认边缘负载均衡实例处于运行中。
为边缘负载均衡实例配置后端服务器。
在边缘负载均衡页面,单击对应边缘负载均衡实例实例操作列下的添加后端服务器。
在默认服务器组页面,单击添加,确认信息无误后,单击下一步。
配置权重后,单击添加。
说明权重越高的ENS实例将被分配到更多的访问请求。
为边缘负载均衡实例绑定边缘弹性公网IP,详细配置请参见绑定弹性公网IP。
在边缘负载均衡页面,单击操作下的
> 绑定公网IP。
在弹窗内选择您已创建的边缘弹性公网IP,确认信息无误后单击确定。如果您未创建边缘弹性公网IP,请参见创建和管理边缘弹性公网IP。
边缘负载均衡实例服务器地址出现对应公网IP,代表绑定边缘弹性公网IP成功。
为边缘负载均衡实例配置监听。详细参数请参见配置监听。
在边缘负载均衡页面,单击操作下的监听配置向导。
在监听页面单击添加监听。
在基本信息页面上配置信息,确认信息无误后单击下一步。
在健康检查页面,配置健康检查规则,配置完成后单击下一步。
确认完成页面确认信息无误后,单击创建。
验证公网可通过边缘负载均衡实例访问ENS实例。
Go环境准备,
更新系统包列表及安装Go。
# 对于基于 Debian/Ubuntu 的系统,更新包列表。其他发行版跳过 sudo apt-get update # 使用包管理器安装 # 对于基于 Debian/Ubuntu 的系统: sudo apt-get install golang # 对于基于 Red Hat/CentOS 的系统: sudo yum install golang
验证安装信息。
go version # 有以下类似输出 go version go1.18.3 linux/amd64
设置环境变量。
编辑
~/.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
创建工作目录。
为了让您更好地组织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
在ENS实例上部署简单的Webserver服务,您可通过本地8080端口访问服务,并获得响应。
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) } }
使用以下命令编译上述代码,并在后台运行。
go build -o webserver main.go nohup ./webserver &
本地访问8080端口,验证服务运转正常。
curl http://127.0.0.1:8080/
在ENS实例上部署nginx,并修改nginx配置。
以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。
根据先前的配置,边缘负载均衡ELB实例的监听端口为80,RS监听端口为80。
在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; } }
校验修改后的配置语法无误。
sudo nginx -t # 返回以下内容,代表语法校验正常 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
重启Nginx使更新后的配置生效。
sudo systemctl reload nginx
在公网,使用
curl
访问<EIP>:80
端口,验证访问畅通。
通过NAT网关帮助ENS实例访问互联网
创建NAT网关。详细参数请参见创建和管理边缘NAT网关实例。
在左侧导航栏,单击
。在NAT网关页面,单击创建NAT网关,在您创建边缘负载均衡实例相同节点创建NAT网关。
为NAT网关绑定边缘弹性公网IP,之后该EIP用于访问公网(对应SNAT规则),或是被公网访问(对应DNAT规则)。
为NAT网关绑定边缘弹性公网IP。
在操作列中单击
绑定公网IP。
在弹窗内选择您已创建的边缘弹性公网IP,确认信息无误后单击确定。
说明在您绑定公网IP前,请确保您已创建好同节点下的边缘弹性公网IP。
为NAT网关设置SNAT。
在操作栏中单击
设置SNAT。
在设置SNAT页面中根据您的需要进行配置,确认信息无误后单击确定。
验证访问公网可通。
使用dig命令验证:
说明请勿使用ping测试连通性,不进行额外配置的情况下ping公网可能会不通。这是因为:
ENS安全组具备默认的入方向的不同规则,当实例绑定安全组,且没有添加放行规则时,ping的回包会被拦截。
ENS的NAT当前没有ICMP协议的session保持功能。