このガイドでは、ENS エッジノード上にインフラストラクチャ環境をセットアップする方法について説明します。ENS エッジノード上に Virtual Private Cloud (VPC) と vSwitch を作成し、コンピューティングインスタンスを作成し、Edge Load Balancer (ELB) インスタンスを使用してトラフィックを分散し、SNAT ルールと Elastic IP Address (EIP) を使用してトラフィックをプロキシする方法を学びます。このデプロイメントソリューションは、Cloud Architect Design Tools (CADT) でも利用できます。
前提条件
Alibaba Cloud アカウントで本人確認が完了している必要があります。Alibaba Cloud 管理コンソールにログインし、[アカウントセンター] に移動して確認ステータスを確認できます。
手順
ENS をアクティブにする
サービスをアクティブにする
Edge Node Service - Alibaba Cloud のホームページに移動し、[今すぐ有効化] をクリックして情報を入力し、レビューのために送信します。アカウントマネージャーに連絡してサービスを有効化することもできます。
プリセールス設定
アカウントマネージャーに連絡して、必要なリソースとエッジゾーンを設定します。これにより、デプロイメントプロセス中の問題を防ぐことができます。
RAM 権限の設定
Alibaba Cloud アカウントは、すべての API 操作に対するアクセス権限を持っています。API 呼び出しや日常の運用保守 (O&M) には、Resource Access Management (RAM) ユーザーを作成して使用することをお勧めします。
左側のナビゲーションウィンドウで、 を選択します。
[ユーザー] ページで、[ユーザーの作成] をクリックします。
[ユーザーの作成] ページで、[ログイン名] と [表示名] を設定します。[アクセスモード] を [コンソールアクセス] に設定します。
[OK] をクリックします。
RAM ユーザーが作成されたら、ログイン名とパスワードを記録します。これらは、Alibaba Cloud OpenAPI Developer Portal にログインして API 操作を呼び出すために必要になります。
RAM ユーザーに権限を付与します。
RAM ユーザー一覧ページに移動します。
対象の RAM ユーザーを見つけ、[アクション] 列の [権限の追加] をクリックします。
テキストボックスにキーワード
ENSを入力してポリシーを検索します。AliyunENSFullAccess と AliyunCADTFullAccess ポリシーを選択します。
[承認の確認] をクリックして権限付与を完了します。
VPC と vSwitch を作成する
ネットワークプランに基づいて VPC と vSwitch を作成します。内部ネットワークの CIDR ブロックや vSwitch の設定などの構成を指定します。
ENS インスタンスを作成する
ELB インスタンスを使用したトラフィックの分散
ELB インスタンスを作成します。
説明ELB インスタンスを作成する際は、ENS インスタンスと同じリージョンにあることを確認してください。
ENS コンソール にログインします。
左側のナビゲーションウィンドウで、 をクリックします。
[Edge Load Balancer] ページで、[インスタンスの作成] をクリックします。

情報を確認したら、[注文の確認] をクリックします。
[Edge SLB インスタンス] ページで、作成した [Edge SLB インスタンス] を表示し、[Edge SLB インスタンス] が [実行中] 状態であることを確認します。

ELB インスタンスにバックエンドサーバーを追加します。
[Edge Load Balancer] ページで、対象の ELB インスタンス を見つけ、[アクション] 列の [バックエンドサーバーの追加] をクリックします。
[デフォルトサーバーグループ] ページで、[追加] をクリックします。情報を確認したら、[次へ] をクリックします。
[重み] を設定し、[追加] をクリックします。
説明重みが大きい ENS インスタンスは、より多くのアクセスリクエストを受信します。

エッジ EIP を ELB インスタンスに関連付けます。詳細については、「EIP の関連付け」をご参照ください。
[エッジロードバランサー] ページで、[操作] 列の
> [パブリック IP アドレスの関連付け] をクリックします。表示されるダイアログボックスで、作成した [エッジ EIP] を選択し、[OK] をクリックします。[エッジ EIP] を作成していない場合は、「エッジ EIP の作成と管理」をご参照ください。

ELB インスタンスのサービスアドレス列に [パブリック IP アドレス] が表示されている場合、エッジ EIP は正常に関連付けられています。

ELB インスタンスの リスナーを設定します。パラメーターの詳細については、「リスナーの設定」をご参照ください。
[Edge Load Balancer] ページで、[アクション] 列の [リスナー設定ウィザード] をクリックします。
[リスナー] ページで、[リスナーの追加] をクリックします。
[基本情報] ページで、設定を構成し、[次へ] をクリックします。

[ヘルスチェック] ページで、[ヘルスチェック] ルールを設定し、[次へ] をクリックします。

[確認] ページで、設定を確認し、[作成] をクリックします。
ENS インスタンスが ELB インスタンスを介してインターネットからアクセスできることを確認します。
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 インスタンスにシンプルな Web サーバーをデプロイします。ローカルポート 8080 でサービスにアクセスし、応答を受信できます。
package main import ( "fmt" "net/http" ) func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello\n") // Helloと出力 } func main() { http.HandleFunc("/", helloHandler) fmt.Println("Starting server on :8080") // サーバーを :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 nginxnginx.conf ファイルを編集して、異なるサービスアドレス宛のトラフィックを異なるサービスポートに転送します。設定ファイルは通常、/etc/nginx/nginx.conf または /etc/nginx/sites-available/default にあります。
上記の設定に基づき、ELB インスタンスのリスナーポートは 80 で、バックエンドサーバーのリスナーポートは 80 です。

次のコードセグメントを nginx.conf ファイルに挿入します。これにより、バックエンドサーバーは 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 successfulNginx を再起動して、更新された設定を適用します。
sudo systemctl reload nginx
インターネットから、
curlコマンドを使用して<EIP>:80にアクセスし、サービスがアクセス可能であることを確認します。
NAT Gateway を使用して ENS インスタンスがインターネットにアクセスできるようにする
NAT Gateway を作成します。パラメーターの詳細については、「エッジ NAT Gateway インスタンスの作成と管理」をご参照ください。
左側のナビゲーションウィンドウで、 をクリックします。
[NAT Gateway] ページで、[NAT Gateway の作成] をクリックして、ELB インスタンスと同じエッジゾーンに NAT Gateway を作成します。
エッジ EIP を NAT Gateway に関連付けます。この EIP は、SNAT ルールでインターネットにアクセスしたり、DNAT ルールでインターネットからのトラフィックを受信したりするために使用されます。
エッジ EIP を NAT Gateway に関連付けます。
[アクション] 列で、
をクリックし、[EIP の関連付け] を選択します。表示されるダイアログボックスで、作成した [エッジ EIP] を選択し、[OK] をクリックします。
説明EIP を関連付ける前に、同じエッジゾーンに エッジ EIP を作成していることを確認してください。
NAT ゲートウェイの SNAT ルールを設定します。
[アクション] 列で、
をクリックし、[SNAT エントリの作成] を選択します。[SNAT エントリの作成] ページで、パラメーターを設定し、[OK] をクリックします。

インターネットにアクセスできることを確認します。
`dig` コマンドを使用して接続性を確認します:
説明ping コマンドを使用して接続性をテストしないでください。追加の設定がない場合、インターネットへの ping は失敗する可能性があります。これは、次の理由によります:
ENS セキュリティグループにはデフォルトのインバウンドルールがあります。インスタンスがセキュリティグループに関連付けられており、ICMP トラフィックを許可するインバウンドルールが追加されていない場合、ping 応答パケットはブロックされます。
ENS NAT Gateway は現在、ICMP プロトコルのセッション維持をサポートしていません。


