導入
このチュートリアルでは、コンソールを使用してサービスとノードを検出し、HashiCorp Nomad クラスターをセットアップします。3 台のサーバーノードと任意の数のクライアントノードを使用するこのチュートリアルは、成長中のプロジェクトに適した基盤となります。また、クライアント用のスナップショットを Hetzner Cloud 上に作成します。これにより、手動で設定することなくクライアントを追加できるようになります。このクラスターはサーバー間のプライベートネットワーク上で実行され、サービス検出やボリュームなど、Nomad とコンソールのデフォルトの機能をすべてサポートします。.
このチュートリアルは、Consul および Nomad の公式インストール ガイドで推奨されている手順に部分的に従います。.
前提条件
- Hetzner Cloudアカウント
- Linuxとターミナルコマンドの紹介
- SSH経由でサーバーに接続する機能
このチュートリアルは、Nomad 1.9.3 および Consul 1.20.1 バージョンを搭載した Hetzner Cloud の Ubuntu 24.04 サーバーでテストされています。.
用語と記号
コマンド:
local$ <دستور> # این دستور باید در ماشین محلی شما اجرا شود
server$ <دستور> # این دستور باید در سرور بهعنوان کاربر root اجرا شود
ステップ1 – ベースイメージを作成する
このステップでは次のリソースが使用されます。
- ヘッツナークラウドサーバーモデルCX22 1台
まず、Hetzner Cloud の新しい CX22 サーバー上に Consul/Nomad サーバーをセットアップします。作成されたスナップショットは、以降の手順ですべてのクラスターサーバーとクライアントのベースイメージとして使用されます。.
ステップ1.1 – Consulのインストール
Consul をインストールするには、次のコマンドを実行します。
server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install consulConsul にオートコンプリート機能を追加するには (オプション):
server$ consul -autocomplete-installステップ1.2 – Nomadバイナリをインストールする
Nomad をインストールするには、次のコマンドを実行します。
server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install nomadNomad にオートコンプリート機能を追加するには (オプション):
server$ nomad -autocomplete-installステップ1.3 – systemdサービスの準備
ConsulとNomadは起動時に自動的に起動するはずです。この機能を有効にするには、それぞれにsystemdサービスを作成してください。.
server$ chown consul:consul dc1-server-consul*
server$ chown consul:consul dc1-client-consul*
server$ chown -R consul:consul /opt/consul
server$ chown -R nomad:nomad /opt/nomad
server$ mkdir -p /opt/alloc_mounts && chown -R nomad:nomad /opt/alloc_mounts次に、次の内容を含む設定ファイル /etc/systemd/system/consul.service を作成します。
[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl
[Service]
EnvironmentFile=-/etc/consul.d/consul.env
User=consul
Group=consul
ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.targetそして、次の内容を含む設定ファイル /etc/systemd/system/nomad.service を作成します。
[Unit]
Description=Nomad
Documentation=https://www.nomadproject.io/docs/
Wants=network-online.target
After=network-online.target
[Service]
User=nomad
Group=nomad
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=65536
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
OOMScoreAdjust=-1000
TasksMax=infinity
[Install]
WantedBy=multi-user.targetインストールがまだ完了していないため、この段階ではこれらのサービスを有効にしないでください。.
ステップ1.5 – ベーススナップショットを作成する
最後に、Hetzner Cloud コンソールでサーバーを停止し、スナップショットを作成します。このスナップショットは、クラスターサーバーとクライアントのセットアップのベースとして使用されます。.
ステップ2 – クラスターサーバーの設定
このステップでは、ベースイメージから3台のクラスターサーバーを作成します。これらのサーバーはクラスターのベースとなり、クラスターリーダーを自動的に選出します。.
以下のリソースを使用します。
- 1 ヘッツナークラウドネットワーク
- 3台のHetznerクラウドサーバー モデルCX22
Hetzner Cloud Consoleで、手順1で作成したスナップショットから3台のCX22サーバーを作成し、共有クラウドネットワークに接続します。このチュートリアルでは10.0.0.0/8ネットワークを使用しますが、より小規模なネットワークでも問題ありません。.
ステップ2.1 – 対称暗号化キーの生成
まず、すべてのサーバーで共有する対称暗号化キーを作成します。このキーは次の手順で必要となるため、安全な場所に保管してください。.
server$ consul keygenステップ2.2 – 証明書の配布
これで、ステップ1で取得した正しい証明書をConsulの設定ディレクトリにコピーできます。すべてのサーバーで次のコマンドを実行してください。
server$ cp consul-agent-ca.pem /etc/consul.d/手順1で作成した3つのサーバー証明書を配布し、各サーバーが対応する鍵を持つ固有の証明書を取得できるようにする必要があります。このチュートリアルでは、各サーバーに対して以下のコマンドを実行します。
[10.0.0.2] server$ cp -a dc1-server-consul-0* /etc/consul.d/
[10.0.0.3] server$ cp -a dc1-server-consul-1* /etc/consul.d/
[10.0.0.4] server$ cp -a dc1-server-consul-2* /etc/consul.d/ステップ2.3 – Consul設定の編集
すべてのサーバーで、構成ファイル /etc/consul.d/consul.hcl を編集し、次の内容を追加します。
datacenter = "dc1"
data_dir = "/opt/consul"
encrypt = "your-symmetric-encryption-key"
tls {
defaults {
ca_file = "/etc/consul.d/consul-agent-ca.pem"
cert_file = "/etc/consul.d/dc1-server-consul-0.pem"
key_file = "/etc/consul.d/dc1-server-consul-0-key.pem"
verify_incoming = true
verify_outgoing = true
},
internal_rpc {
verify_server_hostname = true
}
}
retry_join = ["10.0.0.2"]
bind_addr = "{{ GetPrivateInterfaces | include \"network\" \"10.0.0.0/8\" | attr \"address\" }}"
acl = {
enabled = true
default_policy = "allow"
enable_token_persistence = true
}
performance {
raft_multiplier = 1
}ステップ2.4 – ConsulとNomadの設定
設定が正しく完了したので、Consul および Nomad サービスを開始できます。.
server$ systemctl enable consul
server$ systemctl start consul
server$ systemctl enable nomad
server$ systemctl start nomadサービスのステータスを確認するには、次のコマンドを使用できます。
server$ systemctl status consul
server$ systemctl status nomad すべてが正しく動作する場合、Consul および Nomad サービスが実行され、クラスターが適切に設定されているはずです。.
ステップ2.5 – 他のノードをクラスターに接続する
メインのクラスターサーバーが起動したら、他のノードを接続します。クライアントノードをクラスターに接続するには、新しいノードのConsulとNomadの設定に同じ設定を適用するだけです。.
各クライアント ノードで、メイン サーバーと同じ構成ファイルを作成し、サービスを開始します。
client$ cp consul-agent-ca.pem /etc/consul.d
/client$ cp dc1-client-consul-* /etc/consul.d
/client$ systemctl enable consul client$ systemctl start consul
client$ systemctl enable nomad client$ systemctl start nomadステップ3 – クラスターと構成を確認する
サーバーとクライアントを起動した後、次のコマンドを使用してクラスターのステータスを確認できます。
client$ consul membersこのコマンドを実行すると、クラスター内のノードのリストが表示されます。また、次のコマンドを使用して、Nomad のステータスと設定を確認することもできます。
client$ nomad statusステップ4 – クラスター管理
Consul と Nomad クラスターが適切に設定されたので、これを管理し、さまざまな機能を活用できるようになります。.
クラスターのステータスを表示し、管理要求を実行するには、次のコマンドを使用します。
領事情報Consulクラスターの一般情報を取得するには#遊牧民の仕事のステータスNomadジョブのステータスを表示するには#ノマド割り当てステータス# で Nomad クラスタの割り当てステータスを表示します
Nomad Clusterの使用
Nomad を使用すると、ジョブの管理、ポッドのデプロイ、Consul との調整によるサービスの検出など、さまざまなタスクを実行できます。.
Consulを使用してサービスを発見する
Consul は自動サービス検出機能を提供します。Consul ウェブインターフェース(デフォルトでポート 8500 で利用可能)を使用すると、利用可能なサービスを確認し、必要に応じて設定できます。.
結果
このチュートリアルでは、Hetzner Cloud を使用したプライベートクラウドネットワーク内に、HashiCorp Nomad サーバーと Consul サーバーのクラスターを作成しました。このクラスターは、様々な大規模ワークロードの管理に使用できます。また、スナップショットを使用して新しいノードを起動し、サーバーを詳細に設定する方法についても説明しました。.









