Docker swarm モード - ワーカー ノードのチュートリアルの追加
数週間前に CentOS 7.2 で始めたことを詳しく見てみましょう。このガイドでは、Docker 1.12 に組み込まれているネイティブ クラスタリングとオーケストレーション機能を開始して開始する方法を学びました。しかし、マネージャーノードしかなく、他のワーカーはありませんでした。今日は、これを拡大します。
非対称ノードを群れに追加する方法、つまり、CentOS ボックスと一緒に配置される Fedora 24 を追加する方法を示します。これらは両方とも、関連するすべての派手な負荷分散などを使用してクラスターに参加します。もちろん、これは些細なことではありません。問題が発生することもあるため、非常に興味深いものになるはずです。私の後。
前提条件
追加のノードをスウォームに正常に参加させる前に、いくつかの作業を行う必要があります。 1 つ、理想的には、すべてのノードが同じバージョンの Docker を実行している必要があり、ネイティブ オーケストレーションをサポートするには、少なくとも 1.12 である必要があります。 CentOS と同様に、Fedora にはリポジトリに最新のビルドがないため、手動または Docker リポジトリを使用して、適切なソフトウェア バージョンを手動で追加およびインストールし、いくつかの依存関係の競合を修正する必要があります。 CentOS でこれを行う方法を示しましたが、演習は同じです。
さらに、すべてのノードが相互に通信できる必要があります。マネージャーとワーカーが会話できるように、ルーティングとファイアウォールのルールが必要になります。そうしないと、ノードを群れに参加させることができません。問題を回避する最も簡単な方法は、ファイアウォール ルールを一時的にフラッシュすること (iptables -F) ですが、これによりセキュリティが損なわれる可能性があります。自分が何をしているのかを完全に理解し、ノードとポートに適切なルールを作成していることを確認してください。
デーモンからのエラー応答:ノードが参加する前にタイムアウトになりました。群れへの参加の試みはバックグラウンドで続行されます。 「docker info」コマンドを使用して、ノードの現在のスウォーム ステータスを確認します。
ホストで同じ Docker イメージを使用できるようにする必要があります。前のチュートリアルでは、Apache イメージを作成しました。ワーカー ノードで同じことを行うか、作成したイメージを配布する必要があります。そうしないと、エラーが発生します。 Docker のセットアップについてサポートが必要な場合は、私のイントロ ガイドとネットワーク チュートリアルをお読みください。
7vwdxioopmmfp3amlm0ulimcu \_ websky.11 my-apache2:latest
localhost.localdomain シャットダウン 7 分前に拒否されました
"そのような画像はありません:my-apache2:lat&"
始めましょう
これで、CentOS ボックスが起動して実行され、コンテナが正常に生成されました。ホスト ポートを使用してサービスに接続でき、すべてが桃色に見えます。現時点では、あなたの群れにはマネージャーしかいません。
ワーカーに参加
新しいノードを追加するには、join コマンドを使用する必要があります。ただし、ワーカー ノードが Swarm Manager に対して正しく認証されるようにするために、ワーカー ノードで提供する必要があるトークン、IP アドレス、およびポートを最初に確認する必要があります。次に実行します (Fedora で)。
[root@localhost ~]# docker swarm join-token worker
このスウォームにワーカーを追加するには、次のコマンドを実行します。
docker swarm に参加 \
--token SWMTKN-1-0xvojvlza90nrbihu6gfu3qm34ari7lwnza ... \
192.168.2.100:2377
ファイアウォールとルーティング ルールを修正しないと、タイムアウト エラーが発生します。すでに群れに参加している場合は、参加コマンドを繰り返すと、独自のノイズが発生します:
デーモンからのエラー応答:このノードはすでに swarm の一部です。 「docker swarm leave」を使用して、このスウォームを離れ、別のスウォームに参加します。
疑問がある場合は、群れを離れてから再試行できます:
[root@localhost ~]# docker swarm 脱退
ノードが群れを離れました。
docker swarm に参加 --token
SWMTKN-1-0xvojvlza90nrbihu6gfu3qnza4 ... 192.168.2.100:2377
このノードはワーカーとして群れに参加しました。
ワーカー ノードでは、docker info を使用してステータスを確認できます:
スワーム:アクティブ
ノード ID:2i27v3ce9qs2aq33nofaon20k
マネージャー:false
ノードアドレス:192.168.2.103
同様に、マネージャで:
スワーム:アクティブ
ノードID:cneayene32jsb0t2inwfg5t5q
マネージャー:true
クラスター ID:8degfhtsi7xxucvi6dxvlx1n4
マネージャー:1
ノード:3
オーケストレーション:
タスク履歴保持制限:5
ラフト:
スナップショット間隔:10000
ハートビートティック:1
選挙ティック:3
発車係:
ハートビート期間:5 秒
CA 構成:
有効期限:3ヶ月
ノードアドレス:192.168.2.100
サービスの作成またはスケーリング
ここで、Docker がノード間でコンテナーを分散するかどうか、およびその方法を確認する必要があります。私のテストでは、非常に軽い負荷の下でかなり単純化されたバランシング アルゴリズムが示されました。 1 度か 2 度、Docker は実行中のサービスを新しいワーカーに再配布しようとしませんでした。それらのスケーリングと更新を試みた後でもです。同様に、ある場合には、完全にワーカー ノード上に新しいサービスを作成しました。最良の選択だったのかもしれません。
ワーカー ノード上で完全に作成された新しいサービス。
しばらくすると、既存のサービスのコンテナーが 2 つの間で再配布されましたが、時間がかかりました。新しいサービスはうまくいきました。これは初期の観察にすぎないため、現時点ではこれ以上のことは言えません。今のところ、これは探索と微調整を開始するための良い出発点です。
しばらくすると負荷分散が始まります。
結論
Docker は小さな野獣であり、より大きく、より複雑に、より強力に、そしてもちろんよりエレガントに成長し続けるでしょう。それが大企業に食べられるのは時間の問題です。ネイティブ オーケストレーションに関しては、swarm モードは非常にうまく機能しますが、そのアルゴリズムとスケーラビリティのパワーを十分に活用するには、いくつかのコンテナーが必要です。
私のチュートリアルでは、CentOS ボックスによって実行されるクラスターに Fedora ノードを追加する方法を示しており、2 つのノードはうまく連携して動作しました。負荷分散に関してはいくつか疑問がありますが、これについては今後の記事で検討します。全体として、これが有意義なレッスンであったことを願っています。 swarm をセットアップしようとするときに発生する可能性のあるいくつかの前提条件と一般的な問題に取り組み、多数のコンテナーを起動し、サービスのスケーリングと分散の方法についても簡単に触れました。そして覚えておいてください、これはほんの始まりに過ぎません。
乾杯。
-
KVM でストレージを管理する方法 - チュートリアル
数日前、カーネルベースの仮想マシン (KVM) テクノロジを紹介しました。これは、VirtualBox および VMware 製品の代わりに、またはそれらと一緒に使用することを検討できる無料のオープンソースの仮想化ソリューションです。いずれにせよ、基本的な管理に手を出しましたが、ストレージとネットワークは別のチュートリアルのために残しました. 今日は、KVM でのストレージの管理に関するより詳細なガイドを提供したいと思います。これは、仮想ディスクの追加、縮小、拡張など、VirtualBox で行ったことと多少似ています。 NFS ストレージや NTFS でフォーマットされた USB 接
-
VirtualBox でディスクのクローンを作成する方法 - チュートリアル
ビジネスまたは娯楽で仮想化を使用している場合、VirtualBox に出くわしたことがあるかもしれません。VirtualBox は非常に強力で汎用性の高い無料のソリューションであり、デスクトップ ユーザーがオペレーティング システムを導入する際に非常に柔軟に対応できます。 また、マニアックな趣味で仮想化を楽しんでいるだけの愛好家や、仮想化のおかげで新しいオペレーティング システムの使い方を学んでいる熱心なソフトウェア愛好家以上の場合は、次のシナリオに遭遇することになります。多数の仮想マシンを展開します。 個々のインストールをいじる時間はありません。実際、マシンを 1 つずつ手動で構成す