iCodex

iCodex

Dockerを使用してGoEdgeを迅速に展開し、独自のCDNサービスを構築します。

image

GoEdge は、分散型 CDN エッジノードを管理するためのオープンソースツールソフトウェアであり、ユーザーが CDN/WAF などのアプリケーションを簡単かつ低コストで作成できるようにすることを目的としています。GoEdge は業界でかなり有名で、x86 および arm64 の 2 つのプラットフォームをサポートしており、システムへの依存性も低いため、商用 CDN サービスを購入する以外に、自前の CDN を構築するための良い選択肢です。

GoEdge には、無料のコミュニティ版と有料の商用版の 2 つのバージョンがあります。商用版には、エッジコンピューティング、HTTP/3、より詳細な可用性モニタリング、5 秒シールドなど、いくつかの追加機能があります。詳細な違いについては、こちらをご覧ください:GoEdge CDN プロフェッショナル版。しかし、正直なところ、コミュニティ版でも十分に強力です。

GoEdge のインストールについては、公式のチュートリアルを参照してください。ここでは、別の方法を紹介します。Docker を使用して GoEdge 管理プラットフォーム(API ノードを含む)とエッジノードを迅速にデプロイする方法です。さあ、始めましょう!

デプロイの前に準備すること#

Docker のインストール#

管理プラットフォームとエッジノードの両方をデプロイするには、まず Docker をインストールする必要があります。新しいバージョンの Docker には compose プラグインが含まれているため、公式の推奨コマンドを実行するだけでインストールできます:

curl -sSL https://get.docker.com | sh

管理プラットフォームのデプロイ#

まず、docker-compose.yaml を作成します。管理プラットフォームに必要な mysql を含めるため、docker compose を使用しています。また、将来の移行などの管理作業を容易にするためです。

mysql のバージョン要件は、公式で mysql 8 を使用することを推奨しています。最低でも mysql 5.7.8 以上が必要で、システムメモリは 4GB 以上を推奨しています。

まず、docker-compose.yaml を保存するパスに移動し、例えば /opt/goedge に移動し、そのパスに移動した後、docker-compose.yaml を作成し、以下の内容を入力します:

version: "3"

networks:
  goedge:
    external: false

services:
  mysqld:
    image: mysql:8
    container_name: mysqld
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_USER=edges
      - MYSQL_PASSWORD=edges
      - MYSQL_DATABASE=edges
    networks:
      - goedge
    volumes:
      - ./data/db/mysql:/var/lib/mysql:rw
    restart: always

  edge-admin:
    image: icodex/edge-admin:1.3.3
    container_name: edge-admin
    ports:
      - 7788:7788/tcp
      - 8001:8001/tcp
    networks:
      - goedge
    volumes:
      - ./data/edge-admin/configs:/usr/local/goedge/edge-admin/configs
      - ./data/edge-api/configs:/usr/local/goedge/edge-admin/edge-api/configs
    restart: always

上記では mysql 8 のイメージを使用し、edge-admin は管理プラットフォームのイメージです。ポートの衝突がないことを確認したら、以下のコマンドを実行して起動します:

docker compose up -d

実行後、ブラウザを開き、サーバーの IP アドレスと 7788 ポートを入力してインストール画面にアクセスします:

image

注意⚠️!ここでのネットワークタイプはコンテナ内で共有されるため、データベースの情報を入力する際には、データベースのアドレスには mysql のコンテナ名のみを入力する必要があります。例えば、ここでは「mysqld」となります。データベース名、データベースのユーザー名、データベースのパスワードはすべて「edges」です。次へをクリックして進めます。

ps:もし現在のホストシステムに既に mysql がインストールされている場合、リソースの浪費を避けるために、docker-compose.yaml から mysql サービスを削除し、ネットワークタイプをホストネットワークタイプに変更する必要があります。以下のようになります:

version: "3"

services:
  edge-admin:
    image: icodex/edge-admin:1.3.3
    container_name: edge-admin
    network_mode: host
    volumes:
      - ./data/edge-admin/configs:/usr/local/goedge/edge-admin/configs
      - ./data/edge-api/configs:/usr/local/goedge/edge-admin/edge-api/configs
    restart: always

docker-compose.yaml を編集したら、ポートの衝突がないことを確認し、以下のコマンドを実行してシステム全体を起動します!

エッジノードのデプロイ#

上記のデプロイで管理プラットフォームのデプロイが完了したので、公式のチュートリアルに従ってエッジノードを追加するか、以下の手順に従って Docker コンテナ形式のエッジノードをデプロイします。

ここでは、GoEdge の自動登録機能を使用するため、GoEdge 管理画面 - エッジノード - クラスター - クラスターノード - インストール / アップグレード - 自動登録で、endpoints、clusterId、secret の 3 つの値を記録しておきます。

その後、以下の内容を持つ docker-compose.yaml を準備し、環境変数の値を適切に置き換えてください。

version: "3"

services:
  edge-node:
    image: icodex/edge-node:1.3.3
    container_name: edge-node
    environment:
      - ENDPOINTS=http://xxx.com:8001
      - CLUSTERID=xxx
      - SECRET=xxx
    network_mode: host
    cap_add:
      - NET_ADMIN
    volumes:
      - ./data/edge-node/cache:/opt/cache
      - ./data/edge-node/configs:/usr/local/goedge/edge-node/configs
    restart: always

その後、docker compose コマンドを使用して起動し、すぐに管理プラットフォームでオンラインになったホストを見ることができます。

以上、GoEdge の完全なデプロイ手順です。非常に簡単ですね!

最後に#

このプロジェクトは車輪の再発明とは言えませんが、私個人の習慣である Docker を使用してサービスを管理しています。Docker は仮想化のレイヤーを追加するため、エッジノードのコンテナのネットワーク選択では、ホストタイプを使用することをお勧めします。

最後に、Docker イメージの作成に必要なファイルは GitHub に置いてあります。https://github.com/icodex/docker-goedgeをクリックしてアクセスできます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。