GNU/Linux >> Linux の 問題 >  >> Linux

DockerSwarmクラスターにサービスをデプロイする方法

データセンターの詳細

Docker Swarmは、デプロイできる最も簡単なコンテナークラスターの1つです。数分以内に、クラスターを稼働させて、高可用性、フェイルオーバー、およびスケーラビリティーを実現できます。起動して実行すると、クラスターを利用するためにコンテナーをスウォームにデプロイできます。たとえば、あらゆる需要に対応できるように拡張できるサービスを導入できます。

それがまさに私があなたに見せようとしていることです。ここでは、最初にDocker Swarmをインストールしてから、新しいクラスターにサービスをデプロイして、会社のニーズに合わせて拡張できるようにします。

必要なもの

1つのコントローラーと2つのノードで構成されるクラスターでデモンストレーションを行います。これらはすべてUbuntuServer20.04で実行されます。別のLinuxディストリビューションを使用している場合は、Dockerのインストール手順を変更する必要がある場合があります(ただし、それ以上は変更しないでください)。

そうは言っても、群がりましょう。

Dockerのインストール方法

最初に行う必要があるのは、Dockerをインストールすることです。コントローラでこれらの同じ手順を実行し、展開する予定のノードの数を増やしてください。

サーバーにログインし、次のコマンドでaptを更新します:

sudo apt-get update

次に、次のコマンドを使用して必要な依存関係をインストールします。

sudo apt-get install ca-certificates curl gnupg lsb-release -y

公式のDockerGPGキーを追加します:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

次のコマンドでDocker安定リポジトリを追加します:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

次のコマンドでDockerエンジンをインストールします:

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io -y

次のコマンドでDockerを起動して有効にします:

sudo systemctl enable --now docker

次のコマンドを使用して、ユーザーをdockerグループに追加します。

sudo usermod -aG docker $USER

次のコマンドを使用して、システムに新しいグループを認識させます。

newgrp docker

すべてのノードに対して上記の手順を繰り返します。

Dockerコントローラーに戻り、次のコマンドで群れを初期化します。

docker swarm init --advertise-addr SERVER

ここで、SERVERはDockerコントローラーのIPアドレスです。

次に、次のような結合コマンドが表示されます。

docker swarm join --token SWMTKN-1-46uxtlbe3wrelly1fe5e65p1wdvg95bcjo48izvptpwof62rdo-42yl4jprovhng56sgxmyv7arv 192.168.1.13:2377

そのコマンドをコピーして、すべてのノードから実行します。それが完了したら、コントローラーで次のコマンドを発行して、参加を確認できます。

docker info

次のような出力が表示されます:

Swarm: active

NodeID: wb44efzwy68x9gek45ee1nbnb

Is Manager: true

ClusterID: vjec4hz1sjj535x9w0mspox87

Managers: 1

Nodes: 3

Default Address Pool: 10.0.0.0/8

SubnetSize: 24

Data Path Port: 4789

Orchestration:

Task History Retention Limit: 5

群れにサービスをデプロイする方法

これで、群れにサービスをデプロイできます。最初はこれを単純にして、対話できないNGINXコンテナサービスをデプロイしましょう。これを行うには、コントローラーで次のコマンドを発行します。

docker service create --name nginx_test nginx

サービスのステータスを確認するには、次のコマンドを発行します。

docker service ls

NGINXサービスが次のような出力で複製されていることがわかります。

zie1n4nm5es3   nginx_test             replicated   1/1                nginx:latest

上記の例では、ノードの1つのみを利用しています。そのサービスを3つのノードすべてにデプロイする場合はどうなりますか?そのため、コマンドは次のようになります。

docker service create --replicas 3 --name nginx3nodes nginx

コマンドを発行します:

docker service ls

nginx3nodesデプロイメントが3つのノードのうち3つに複製され、次の出力が表示されるはずです。

y1yu8fq27aab   nginx3nodes              replicated   3/3                nginx:latest

このサービスは現在、クラスター内の3つのノードすべてを利用しています。次のコマンドを使用して、そのサービスを2ノードにスケールダウンできます。

docker service scale nginx3nodes=2

ステータスを確認する:

docker service ls

これで、2/2ノードにnginxサービスが表示されます。

群れに5つのノードがあるとします。サービスを5つのノードすべてにスケーリングする場合、コマンドは次のようになります。

docker service scale nginx3nodes=5

サービスを削除するには、次のコマンドを発行します:

docker service rm nginx3nodes

デプロイメントでコンテナイメージを更新するとします。最初にデプロイされてから数日が経過しました。利用可能な最新のコンテナイメージを使用していることを確認する必要があります。 nginx:latestが更新されたコンテナイメージであると想定し、そのサービスを新しいイメージで更新するには、次のコマンドを発行します:

docker service update --image nginx:latest nginx3nodes

最後に、群れをより簡単に管理したい場合は、次のコマンドを使用してコントローラーにPortainerをデプロイします。

docker run -d -p 8000:8000 -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

デプロイしたら、http:// SERVER:9443に移動します(ここで、SERVERはサーバーのIPアドレスです)。管理者ユーザーを作成してログインすると、左側のナビゲーションにSwarmが表示されます。それをクリックしてクラスターを表示します(図A

図A

これが、DockerSwarmを起動してノードにサービスをデプロイするための基本です。

TechRepublicに登録する YouTubeでテクノロジーを機能させる方法 ジャックウォレンからのビジネスプロ向けの最新の技術アドバイス。

ソースリンク


Linux
  1. 最初のポッドをKubernetesクラスターにデプロイする方法

  2. Dockerを使用してマイクロサービスをデプロイする方法

  3. PostgreSQLをDockerコンテナとしてデプロイする方法

  1. Ubuntu18.04LTSのKubernetesクラスターにNginxロードバランシングをデプロイする方法

  2. ランチャーでアプリをデプロイする方法

  3. LinodeにDockerを使用してnginxコンテナをデプロイする方法

  1. DockerコンテナにPostgreSQLをデプロイする方法

  2. DockerでRedisをデプロイして実行する方法

  3. DockerにNGINXリバースプロキシをデプロイする方法