本實踐指導您如何搭建一套ENS邊緣節點的基礎設施環境。您將逐一了解如何在ENS節點新建VPC網絡、虛擬交換機,如何創建計算實例,如何通過邊緣負載均衡ELB進行流量分發及如何通過SNAT、EIP,實現流量的代理。云速搭CADT產品已同步上線本部署方案。如果您需要通過圖形化方式快速部署環境,可點擊https://bp.aliyun.com/detail/387進行一鍵部署使用。
前提條件
操作步驟
開通ENS服務
服務開通
進入阿里云邊緣節點服務ENS首頁,單擊立即開通,填寫您的信息并提交審核。您也可以聯系您的客戶經理進行開通。
售前配置
請您聯系您的客戶經理,對必要的資源及節點進行售前配置,避免對您后續流程造成阻礙。
RAM權限配置
阿里云賬號擁有所有API的訪問權限,建議您創建并使用RAM用戶進行API訪問或日常運維。
創建VPC網絡、虛擬交換機
您可以根據網絡規劃,填寫內網網段、交換機等配置,進行VPC和交換機的創建。
創建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保持功能。