
Dockerは、私が頼りにしているコンテナデプロイメントのランタイムエンジンです。これを使えば、コンテナをネットワークに簡単にアクセスできるように素早くデプロイできます。では、これらのアプリケーションをスケールさせたい場合、どうすればいいでしょうか?単一のDockerサーバーでスケールさせるのは困難です。そこで、複数のDockerインスタンスをデプロイし、それらをクラスタ化します。これは、Docker Swarmと呼ばれます。
参照: 採用キット: バックエンド開発者 (TechRepublic Premium)
私のデファクトスタンダードであるサーバーディストリビューション、UbuntuにDocker Swarmをデプロイする方法をご紹介します。かなり細かい作業が必要なので、早速始めましょう。
Docker Swarmをデプロイするために必要なもの
3ノードクラスター(コントローラー1台とノード2台)でデモを行います。そのためには、Ubuntu Server 22.04のインスタンスが3つ必要です。また、sudo権限を持つユーザーも必要です。
Dockerの最新バージョンをインストールする方法
これを Swarm のすべてのノードで実行する必要があります。
まず、次のコマンドで Docker GPG キーを追加します。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
次に、公式 Docker リポジトリを追加します。
echo "deb [arch=amd64 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
次に、次のコマンドでいくつかの依存関係をインストールします。
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
最後に、Docker エンジンの最新バージョンをインストールします。
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
最後に、次のコマンドを使用してユーザーを docker グループに追加します。
sudo usermod -aG docker $USER
変更を有効にするには、ログアウトして再度ログインしてください。
サーバーのホスト名を変更する方法
Docker Swarmサーバーのホスト名を変更しましょう。これはすべてのノードで実行されます。ここではdocker1、docker2、docker3と設定しますが、好きな名前を付けることができます。
ホスト名を設定するには、次のコマンドを実行します。
sudo hostnamectl set-hostname HOSTNAME
ここで、HOSTNAME はマシンのホスト名です。
ホストファイルのマッピング方法
これもすべてのノードで実行されます。次のコマンドでhostsファイルを開きます。
sudo nano /etc/hosts
ファイルの下部で、各ホストを次のようにマッピングします (エントリをホスト名と IP アドレスに合わせて変更します)。
192.168.1.60 docker1
192.168.1.61 docker2
192.168.1.62 docker3
ファイルを保存して閉じます。
Swarmの初期化方法
コントローラー ノード (docker1) に移動し、コマンドを使用して Swarm を初期化し、IP アドレスをニーズに合わせて編集してください。
docker swarm init --advertise-addr 192.168.1.60
次に、次のような join コマンドが表示されます。
docker swarm join --token SWMTKN-1-05rgkgq9hgvas7wfglzrumxymzxw3downs1afcbdr9kc7hq4cm-8ku8kxjsq57l1xnkl5lzjppro 192.168.1.60:2377
各ノードでこのコマンドを実行してください。ノードが参加したら、コントローラーノードで次のコマンドを実行してSwarmを確認できます。
docker node ls
出力には次のようなものが表示されます。
tpsl7enzswhkeef3dh8uswkxp * docker1 Ready Active Leader 20.10.17
xnye548afhe1hc832kulh5sui docker2 Ready Active 20.10.17
cammaze2fcfcomjpdo0fwz105 docker3 Ready Active 20.10.17
おめでとうございます。Docker Swarm のデプロイメント準備が完了しました。必要に応じて新しいノードを追加することで、さらにスケーリングとフェイルオーバー機能を強化することができます。
Jack Wallen によるビジネス プロフェッショナル向けの最新のテクノロジー アドバイスをすべて知るには、YouTube で TechRepublic の How To Make Tech Work を購読してください。