負荷分散と動的および静的分離操作を実現する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継承のさまざまな方法とメリット・デメリットを詳しく解説

推薦する

SSM VUE Axios の詳細な説明

目次SQL ログを表示するにはどうすればいいですか? ? SpringMVC でのパラメータ渡しの説...

この記事では、CSSの2列レイアウトと3列レイアウトの具体的な使い方をまとめます。

序文大規模なフロントエンドの開発に伴い、UI フレームワークが次々と登場し、フロントエンド開発におけ...

Ubuntuの基本設定: openssh-serverのインストールと使用

Ubuntu 17.10 での openssh-server のインストールと使用を記録します。イン...

MySQLの重複排除操作を極限まで最適化する方法

目次1. インデックスと変数の賢い使用1. インデックスなしの比較テスト2. created_tim...

MySQL から Excel にテーブルデータをエクスポートする際の日時形式に関する簡単な説明

最近、MySQL を使用してテーブル データを Excel ファイルにエクスポートしました。MySQ...

カルーセルバナーの自動回転効果を実現する純粋な CSS

さっそくコードを見てみましょう * { マージン: 0; パディング: 0; } 。容器 { マージ...

jsはタイトルと説明のキーワードを検出し、見つかった場合は置換するか他のページにジャンプします。

キーワード 一般タイトルには、クラック、キー、シリアル番号、キージェネレータなどの単語を含めることは...

JavaScript を使用してタイムラインとアニメーション効果を実装するためのサンプル コード (フロントエンドのコンポーネント化)

目次コードのクリーニングJavaScript の「フレーム」 「フレーム」の実装方法1. 間隔を設定...

docker を使用して Kong クラスター操作を構築する

docker コンテナの下に kong クラスターを構築するのは非常に簡単です。公式サイトの紹介も非...

Nginx リバースプロキシの例の詳細な説明

1. リバースプロキシの例1 1. 効果を達成する(1)ブラウザを開き、www.123.comと入力...

効率的な視覚化Nginxログ表示ツール

目次導入インストール表示フィールドフィルターソートキー導入Rhit は、標準フォルダー (gzip ...

HTMLおよびJSPページがキャッシュされ、Webサーバーから再取得されるのを防ぎます。

ユーザーがログアウトした後、ブラウザの戻るボタンがクリックされると、Web アプリケーションは保護さ...

Alibaba Cloud Docker Yum ソースを使用した Docker 17.03.2 の CentOS7 オンラインインストールの詳細説明

参照ドキュメント公式 Docker インストール ドキュメント: https://docs.dock...

適応的な幅と高さを持つ9つの正方形グリッドの背景画像の切り取りの分析

<br />幅と高さが適応するオリジナルの 9 グリッド レイアウトをベースに、ネットワ...