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の新機能に関する最もよく使われる知識ポイントのまとめ

推薦する

Zabbix 監視ソリューション - 最新の公式バージョン 4.4 [推奨]

ザビックス2019/10/12 チェンシン参照するhttps://www.zabbix.com/do...

MYSQL ストアドプロシージャと関数の簡単な記述

ストアドプロシージャとは簡単に言えば、これは強力で、JAVA 言語のメソッドに似た比較的複雑な論理関...

Navicat for Mysql 接続エラー 1251 (接続失敗) の問題を解決する

以前書いた内容が詳細さに欠けていたため、今回は修正・補足しました。ただし、以前の MySQL バージ...

Apache SkyWalking アラーム設定ガイドの詳細な説明

アパッチ スカイウォーキングApache SkyWalking は、マイクロサービス、クラウド ネイ...

MySQLデータベースの操作とメンテナンスのデータ復旧方法

これまでの 3 つの記事では、論理バックアップと物理バックアップを含む、MySQL データベースの一...

CSS3 で z-index が効かない問題の解決方法

最近、CSS3 と js の組み合わせを作成したのですが、z-index が有効にならないケースが多...

モバイルデバイス上のぼやけた小さなアイコンの問題を解決する方法

序文以前、画像とテキストの垂直方向のずれの問題について説明しました。ここで示した小さな例では、小さな...

メニューのホバー効果を実現するCSS3

結果: html <nav id="nav-1"> <a cl...

SQL Server 2019 Always On クラスターの Docker デプロイメントの実装

目次Docker デプロイメント Always on クラスターDockerをインストールする建築関...

DockerHubを自分で構築する方法

先ほど使用したDocker HubはDockerによって提供されています。独自のDockerを構築す...

レスポンシブデザインについての簡単な説明

1. レスポンシブ デザインとは何ですか?レスポンシブデザインとは、ウェブサイトの開発プロセス中に、...

Ubuntu インストール時にブラックスクリーンが表示される場合の解決策 (3 種類)

私のコンピューターのグラフィック カードは Nvidia グラフィック カードです。再起動後、画面に...

JS配列の一般的な方法とテクニックを学び、マスターになりましょう

目次splice() メソッドjoin() メソッド逆() メソッドevery() メソッド削減()...

Dockerfile を使用して nginx イメージを構築する例

Dockerfile の紹介Docker は、Dockerfile の内容を読み取ってイメージを自動...