負荷分散と動的および静的分離操作を実現するDocker NginxコンテナとTomcatコンテナ

負荷分散と動的および静的分離操作を実現するDocker NginxコンテナとTomcatコンテナ

Tomcat8 イメージをダウンロード

[root@localhost ~]# docker search tomcat8
名前 説明 星 公式 自動化
ashince/tomcat8 Tomcat GUI マネージャーの事前構成済み Docker イメージ… 5                    
podbox/tomcat8 2 [OK]
 
 

この Tomcat には jdk が含まれており、起動後すぐにアクセスできます。ポート 8080 を自動的に起動します。

[root@localhost ~]# docker pull ashince/tomcat8
デフォルトタグの使用: 最新
最新: ashince/tomcat8 からプル
06b22ddb1913: fs レイヤーをプルしています 
336c28b408ed: プル完了 
1f3e6b8d80c3: プル完了 
[root@localhost ~]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
nginx 最新 2622e6cca7eb 2 週間前 132MB
ashince/tomcat8 最新 02aedead27dd 22ヶ月前 314MB
Nginxコンテナと2つのTomcatコンテナを起動します [root@localhost ~]# docker run -itd -p 8080:8080 ashince/tomcat8 
3e3f2aabe67de7ee3f4b6d62176e21aaa9d2302922845cb08ad37af7146b13c5
[root@localhost ~]# docker run -itd -p 8081:8080 ashince/tomcat8 
644d59711c805a626b7c1c219aa018f744098a14dd41e54744d6b13e7ba66a2f
[root@localhost ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
cca55c4ad919 ashince/tomcat8 「catalina.sh run」 約 1 分前 起動 約 1 分 0.0.0.0:8081->8080/tcp unruffled_lalande
08b58d2f41d6 ashince/tomcat8 「catalina.sh run」 7 分前 7 分前にアップ 0.0.0.0:8080->8080/tcp enjoyed_williamson
aeebcb0b40a2 nginx "/docker-entrypoint.…" 2 時間前 2 時間前にアップ 0.0.0.0:80->80/tcp priceless_ardinghelli 

#コンテナ内に vim コマンドがないため、Nginx コンテナ内の設定をローカル マシンにコピーして変更します [root@localhost ~]# docker cp 68d2bdf336ed:/etc/nginx/conf.d/default.conf 。
[root@localhost ~]# ls
anaconda-ks.cfg デフォルト.conf インデックス.html
[root@localhost ~]# grep -vE "#|^$" default.conf 
サーバー{
  聞く 80;
  聞く [::]:80;
  server_name ローカルホスト;
  位置 / {
    ルート /usr/share/nginx/html;
    インデックス index.html index.htm;
  }
  エラーページ 500 502 503 504 /50x.html;
  場所 = /50x.html {
    ルート /usr/share/nginx/html;
  }
}
 
#2 つの Tomcat の IP アドレス [root@localhost ~]# for i in {72e174adc77d,080068dae40a};do docker examine $i| grep -i ipaddr |tail -n 1;done
          "IPアドレス": "172.17.0.4",
          "IPアドレス": "172.17.0.3",
動的および静的分離のために静的リソースを Nginx ディレクトリにコピーし、同時に構成ファイルを変更します # 動的および静的分離のために Nginx は静的リソースにローカルでアクセスする必要があるため、Tomcat の 1 つの ROOT ディレクトリをローカル コンピューターにコピーします [root@localhost ~]# docker cp 72e174adc77d:/usr/local/tomcat/webapps/ROOT 。
 
#Nginx リリース ディレクトリ [root@localhost ~] にコピーします。# docker cp ROOT 68d2bdf336ed:/usr/share/nginx/html/
[root@localhost WEB-INF]# docker exec 68d2bdf336ed ls -l /usr/share/nginx/html/ROOT
合計 184
-rwxrwxrwx 1 ルート ルート 7064 2017年6月21日 RELEASE-NOTES.txt
drwxrwxrwx 2 ルート ルート 21 7月 27 2017 WEB-INF
-rwxrwxrwx 1 ルート ルート 26447 2017年6月21日 asf-logo-wide.svg
-rwxrwxrwx 1 ルート ルート 713 2017年6月21日 bg-button.png
-rwxrwxrwx 1 ルート ルート 1918 6月 21 2017 bg-middle.png
-rwxrwxrwx 1 ルート ルート 1392 2017年6月21日 bg-nav-item.png
-rwxrwxrwx 1 ルート ルート 1401 2017年6月21日 bg-nav.png
-rwxrwxrwx 1 ルート ルート 3103 2017年6月21日 bg-upper.png
-rwxrwxrwx 1 ルート ルート 21630 2017年6月21日 favicon.ico
-rwxrwxrwx 1 ルート ルート 12279 2017年6月21日 index.jsp
-rwxrwxrwx 1 ルート ルート 2376 2017年6月21日 tomcat-power.gif
-rwxrwxrwx 1 ルート ルート 5581 2017年6月21日 tomcat.css
-rwxrwxrwx 1 ルート ルート 2066 2017年6月21日 tomcat.gif
-rwxrwxrwx 1 ルート ルート 5103 2017年6月21日 tomcat.png
-rwxrwxrwx 1 ルート ルート 67795 2017年6月21日 tomcat.svg
 
#変更後のNginx設定ファイルは以下のとおりです。変更後、コンテナ[root@localhost ~]にコピーされます。# docker cp default.conf 68d2bdf336ed:/etc/nginx/conf.d/default.conf 
[root@localhost ~]# docker exec 68d2bdf336ed cat /etc/nginx/conf.d/default.conf 
アップストリーム tomcat_web{
サーバー 172.17.0.3:8080 重み=100 max_fails=2 fail_timeout=15;
サーバー 172.17.0.4:8080 重み=100 max_fails=2 fail_timeout=15;
}
 
サーバー{
  聞く 80;
  聞く [::]:80;
  server_name ローカルホスト;
  エラーページ 500 502 503 504 /50x.html;
  ルート /usr/share/nginx/html; 
  位置 /{
  proxy_pass http://tomcat_web;
  proxy_set_header ホスト $host;
  } 
  
  場所 ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
   ルート /usr/share/nginx/html/ROOT;
   有効期限は30日です。
   access_log オフ;
  }
  
  場所 ~ .*\.(eot|ttf|otf|woff|svg)$ {
   ルート /usr/share/nginx/html/ROOT;
   有効期限は30日です。
   access_log オフ;
  }
  
  場所 ~ .*\.(js|css)$ {
   ルート /usr/share/nginx/html/ROOT;
   有効期限は30日です。
   access_log オフ;
  }
  場所 = /50x.html {
    ルート /usr/share/nginx/html;
  }
}
 
#新しい設定項目をロードする [root@localhost ~]# docker exec -it 68d2bdf336ed /bin/bash
root@68d2bdf336ed:/# /usr/sbin/nginx -s リロード
2020/06/29 07:12:05 [お知らせ] 79#79: シグナル処理を開始しました

次に、図に示すように Nginx ポート 80 にアクセスします。

追加知識: Dockerの基本操作 コンテナの自動起動 イメージの削除とコンテナの削除

Dockerコンテナの自動再起動設定

オペレーティングシステムを再起動した後、docker サービスが開始されておらず、コンテナーが起動していないことがわかりました。再起動後に自動的に起動するにはどうすればよいですか?

1. Dockerサービスの自動再起動設定

[root@localhost ~]# systemctl で docker.service を有効にする

2. Dockerコンテナの自動起動設定

[root@localhost ~]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
nginx 最新 5a3221f0137b 10か月前 126MB
[root@localhost ~]# docker run -itd -p 80:80 nginx
3e28c4b5c6256c0ba04666751e426987d848b7afeb9c59774d5e9831dc78e5ee
[root@localhost ~]# docker run -itd -p 81:80 nginx
f0597c725fd6b7f4229aa9ab5de4a3cb29d09097a81dc8f64d1a60d469001379
[root@localhost ~]# docker ポート f0597c725fd6
80/tcp -> 0.0.0.0:81
 
[root@localhost ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
f0597c725fd6 nginx "nginx -g 'デーモン?? 30 秒前 29 秒前に起動 0.0.0.0:81->80/tcp elastic_allen
3e28c4b5c625 nginx "nginx -g 'デーモンの?? 35 秒前 33 秒前に起動 0.0.0.0:80->80/tcp tender_volhard

3. Dockerコンテナの自動起動設定

[root@localhost ~]# docker update --restart=always f0597c725fd6 3e28c4b5c625 
翻訳元
3e28c4b5c625 
 
[root@localhost ~]# reboot -h now
外部ホストによって接続が閉じられました。 
 
[root@localhost ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
f0597c725fd6 nginx "nginx -g 'デーモンの?? 13 分前 2 分前に起動 0.0.0.0:81->80/tcp elastic_allen
3e28c4b5c625 nginx "nginx -g 'デーモンの?? 13 分前 2 分前にアップ 0.0.0.0:80->80/tcp tender_volhard
 

ホストに多数のイメージとコンテナがある場合、リセットする必要があるときに、それらの一部またはすべてを削除することを選択できます。次に、次の操作を実行する必要があります。

1. コンテナを削除する

[root@localhost ~]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
27c5c4d3cf86 nginx "nginx -g 'デーモンの?? 2 分前 2 分前に起動 0.0.0.0:80->80/tcp gracious_nash
61cccfe238a8 nginx "nginx -g 'デーモン?? 2分前 2分前 0.0.0.0:81->80/tcp distracted_grothendieck
[root@localhost ~]# docker ps -aq
27c5c4d3cf86
61cccfe238a8

1) まずすべてのコンテナを停止する必要があります

[root@localhost ~]# docker ps -aq
翻訳元
3e28c4b5c625
8855c7777f83
466d2efe3dd9
20ca589b1a10
e5457b41cae6
314d1d01c941
 
[root@localhost ~]# docker stop $(docker ps -aq)
翻訳元
3e28c4b5c625
8855c7777f83
466d2efe3dd9
20ca589b1a10
e5457b41cae6
314d1d01c941
[root@localhost ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
 

2) すべてのコンテナを削除します(1つだけ削除したい場合は、後ろの変数をイメージIDに変更するだけです)

[root@localhost ~]# docker rm -f $(docker ps -aq)
翻訳元
3e28c4b5c625
8855c7777f83
466d2efe3dd9
20ca589b1a10
e5457b41cae6
314d1d01c941
[root@localhost ~]# docker ps -aq
[root@localhost ~]#

2. 画像を削除する

1) ホストで画像を表示する

Docker イメージ

2) 指定されたIDの画像を削除する

docker rmi <イメージID>

3) すべての画像を削除する

docker rmi $(docker イメージ -q)

3. 削除する画像が他の画像と関連していて削除できない場合

-fパラメータを使用して強制的に削除することができます

docker rmi -f $(docker イメージ -q)

Docker Nginx コンテナと Tomcat コンテナを使用して負荷分散と動的および静的分離を実現する方法については、上記の記事が皆さんに共有できるすべてです。これが皆さんの参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。

以下もご興味があるかもしれません:
  • 動的および静的分離のための Apache または Tomcat を使用した Nginx の基本構成例
  • Nginx+uWsgi を使用して Python の Django フレームワーク サイトの動的部分と静的部分を分離する
  • nginx + tomcatリバースプロキシと動的および静的分離のシンプルな実装
  • 静的Tomcatと動的Tomcatを分離するnginxの詳細な説明
  • nginxは負荷分散と動的および静的分離を実現します
  • 動的および静的分離を実装するための Nginx サンプル コード
  • Nginx+Apache の動的および静的分離の導入の詳細な例
  • 動的および静的分離を実現する nginx のサンプルコード
  • Nginx は動的と静的の分離を実装します 例の説明
  • Nginx の動的および静的分離実装ケースのコード分析
  • Springmvc nginxで動的と静的の分離を実現するプロセスの詳細な説明
  • 負荷分散と動的・静的分離を実現するNginx+Tomcatの原理の分析
  • Nginx の負荷分散と動的および静的分離の原理と構成
  • nginx が動的と静的の分離を実装する方法の例
  • インストールから設定までの nginx の詳細な手順 (インストール、セキュリティ設定、ホットリンク防止、動的および静的分離、HTTPS 設定、パフォーマンスの最適化)
  • Nginx+Tomcat 負荷分散と動的および静的分離クラスタの実装
  • 動的および静的分離を実現するサーバー負荷分散 nginx+tomcat
  • Nginx の動的および静的分離構成の実装と説明

<<:  加算、減算、乗算、除算の機能を実現するには、HTML に 2 つの数値を入力します。

>>:  JavaScript継承のさまざまな方法とメリット・デメリットを詳しく解説

推薦する

HTML タグに類似: strong および em、q、cite、blockquote

XHTML には似た機能を持つタグがいくつかあります。もちろん、ここでの類似性とは意味の類似性を指...

Nodeはバックエンドの実装手順を素早く構築します

1. まず、node、express、express-generator をインストールします (4...

Vue で AES.js を使用する詳細な手順

AES暗号化の使用データ転送の暗号化と復号化処理 --- AES.js最初のステップ: vue に ...

MySQL の簡単な分析 - MVCC

バージョンチェーンInnoDB エンジン テーブルでは、クラスター化インデックス レコードに 2 つ...

HTML フォーム送信アクションと URL ジャンプアクションの違い

フォームのアクションは URL ジャンプとは異なります。フォームはバックグラウンドにデータを渡すこと...

HTML の POST リクエストにおける a タグの 2 つの使用法の分析

HTML POST リクエストで a タグを使用する 2 つの例を次に示します。 1. ajaxを使...

フレックスレイアウトは、上下固定、中間スライドのレイアウトモードを実現します。

この記事では、主に、上下固定と中スライドレイアウトを実現するためのフレックスレイアウトのレイアウト方...

iview権限管理の実装

目次iview-admin2.0 組み込み権限管理権限に基づいてコンポーネントの表示を制御するカスタ...

Linux でファイルのユーザーとグループを変更する方法

Linux では、ファイルが作成されると、そのファイルの所有者はファイルを作成したユーザーになります...

Zabbixのカスタム監視項目とトリガーについて

目次1. 監視ポート関係の説明操作する2. 監視サービス関係の説明操作する3. テンプレートのインポ...

NFS サーバーの原理と、その構築、構成、展開の手順を簡単に分析します。

目次NFS サービスの概要NFS とは何ですか? NFS マウントの原則NFS サーバーはデータ転送...

Vue.jsはアイコンをクリックしてズームインし、

前回の記事では、Vue で画像の切り抜きや拡大・縮小、回転を実現する方法を紹介しました。今回は、アイ...

Nginxの書き換えモジュールの詳細な説明

書き換えモジュールは ngx_http_rewrite_module モジュールです。その主な機能は...

モバイルウェブサイトの開発に関するいくつかの結論

ウェブサイトのモバイル版には、少なくともいくつかの基本機能が必要です。 1. ページの適用性の問題:...

Linux でのファイルの編集、保存、終了の実践的な説明

Linux でファイルを編集した後、保存して終了するにはどうすればよいですか?保存して終了するコマン...