Docker Swarm 外部検証ロードバランシングが機能しない場合の解決策

Docker Swarm 外部検証ロードバランシングが機能しない場合の解決策

問題の説明

Centos7 をローカルにインストールして 3 つの仮想マシンを作成し、Swarm クラスターを初期化しました。つまり、マネージャー ノード 1 つとワーカー ノード 2 つです。3 つのマシンの IP アドレスは、 192.168.124.8 - (manager節點)192.168.124.9 - (worker節點)192.168.124.10 - (worker節點)です。

[root@localhost ~]# docker node ls
ID ホスト名 ステータス 可用性 マネージャ ステータス エンジン バージョン
j0f4up8v7epacp3vceby4exsz localhost.localdomain 準備完了 アクティブ 19.03.13
qeeqc10gl9e56w61pajjqle08 localhost.localdomain 準備完了 アクティブ 19.03.13
r5sg5m9dkwcu76t56hg0vu29t * localhost.localdomain 準備完了 アクティブ リーダー 19.03.14

次に、次のコマンドでSwarmクラスタ上でサービスを開始しました。

docker サービス作成 --name test-vote --replicas 2 --constraint node.role==worker --publish 8080:80 registry.cn-hangzhou.aliyuncs.com/anoy/vote

ワーカーノードの ip:port を直接 curl すると応答が得られますが、返される containerId は変更されず、マネージャーノードに直接アクセスすると応答が得られず、ロードバランシングが有効になっていないようです。

解決する

少し検索した後、スタックオーバーフローで答えを見つけました: https://stackoverflow.com/questions/48360577/docker-swarm-mode-routing-mesh-not-working

結局、ファイアウォールの問題であることが判明しました。ドキュメントによると、 swarm mode routing mesh有効にするには、スウォーム クラスターを初期化する前に、 tcp/udpポート7946udpポート4789を開く必要があります。https://docs.docker.com/engine/swarm/ingress/

したがって、CentOS の場合は、次のスクリプトを使用してポートを開くことができます。Swarm クラスター内の各ホストを開く必要があります。便宜上、TCP ポートと UDP ポートの両方が開かれています。ポートを開いたら、マシンを再起動する必要があります。

ファイアウォールコマンド --permanent --zone=public --add-port=4789/tcp && \
ファイアウォールコマンド --permanent --zone=public --add-port=7946/tcp && \
ファイアウォールコマンド --permanent --zone=public --add-port=4789/udp && \
ファイアウォールコマンド --permanent --zone=public --add-port=7946/udp && \
ファイアウォール-cmd --reload && \
# 再起動 sudo reboot

これで、docker swarm 外部検証ロード バランシングが有効にならないというこの記事は終わりです。docker swarm ロード バランシングに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker Swarm のサービス検出と負荷分散の原則の詳細な説明
  • docker swarm は指定されたノード上で指定されたコンテナをどのように実行しますか?
  • docker swarm クラスターの障害と例外の詳細な説明
  • Docker Swarmを使用してクラスターを構築する方法
  • Docker 1.12 を使用してマルチホスト Docker Swarm クラスターを構築する詳細な説明

<<:  CSSでnグリッドレイアウトを実装する方法

>>:  ES6の新機能に関する最もよく使われる知識ポイントのまとめ

推薦する

Apache POIの基本的な使い方の詳しい説明

目次基本的な紹介入門テスト (Excel ファイルからのデータの読み取り)ステップ1: Maven座...

MySQL Community Server 5.7.19 インストール ガイド (詳細)

MySQL公式サイトのzipファイルのダウンロードリンク https://dev.mysql.co...

知らないかもしれない奇妙で興味深いDockerコマンド

はじめに使えるかもしれないが、あまり使われていない、シンプルで実用的なDockerコマンドをいくつか...

MySQL クエリにおける LIMIT の大きなオフセットによって引き起こされるパフォーマンス低下の分析

序文MySQLクエリはselectコマンドを使用し、limitとoffsetパラメータを使用して、指...

JavaScript ベースで年・月・日の 3 階層連携を実現

この記事では、年、月、日の3段階のリンクを実現するためのJavaScriptの具体的なコードを参考ま...

jQueryはすべての選択と逆選択操作ケースを実装します

この記事では、全選択と逆選択操作を実装するためのjQueryの具体的なコードを参考までに共有します。...

モバイル端末の適応に関する簡単な説明

序文フロントエンド コードの記述では、「互換性」という言葉から逃れることはできません。過去の PC ...

MySQL で 2 つのテーブルをクエリする場合の from と join の違いの概要

序文MySQL では、複数テーブル結合クエリは非常に一般的な要件です。複数テーブルクエリを使用する場...

Linuxの一般ユーザー向けスケジュールタスクの詳細な説明

序文通常のユーザーはcrontabスケジュールタスクを定義します。たとえば、Oracleユーザーはス...

React Hooks の一般的な使用シナリオ (概要)

目次1. ステートフック1. 基本的な使い方2. 更新3. 合併を実現する4. 遅延初期化状態5. ...

HTML doctype の役割の紹介

ドキュメント モードには次の 2 つの機能があります。 1. HTML文書を解析するためにどのHTM...

テーブルを作成するための MySQL SQL ステートメントの詳細な概要

mysql テーブル作成 SQL ステートメントMySQL テーブルを作成するための一般的な SQL...

CentOS7 に ElasticSearch 6.4.1 をインストールするための詳細なチュートリアル

1. ElasticSearch 6.4.1 インストール パッケージを次の場所からダウンロードしま...

MySQLで最大接続数を達成する方法

目次データベース接続数が急増した理由は何ですか? 1. はじめに2. 知識ポイント3. 練習するIV...

Linux ハードウェア構成コマンドの例

ハードウェア ビュー コマンドシステム # uname -a # カーネル/オペレーティング システ...