この記事では、ブルーグリーン デプロイメントと、nginx を使用してブルーグリーン デプロイメントを最も簡単な方法でシミュレートする方法について説明します。 ブルーグリーンデプロイメント ブルーグリーンデプロイメントの重要なポイントは次のとおりです。
ブルーグリーンデプロイメントのシミュレーション 次に、nginx のアップストリームを使用して、ブルーグリーン デプロイメント シナリオを簡単にシミュレートします。具体的なシナリオは次のとおりです。現在、青色バージョンがアクティブです。nginx 設定を調整することで、緑色バージョンが現在のアクティブ バージョンとして設定されます。 準備 2 つのサービスがそれぞれポート 7001/7002 で起動され、異なる情報が表示されます。デモンストレーションの便宜上、tornado を使用してミラーが作成されます。Docker コンテナの起動時に異なるパラメータが渡され、サービスの違いが表示されます。 docker run -d -p 7001:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "Hello blue/green service: v1 in 7001" docker run -d -p 7002:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "Hello blue/green service: v2 in 7002" 実行ログ [root@kong ~]# docker run -d -p 7001:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "Hello blue/green service: v1 in 7001" 70c74dc8e43d5635983f7240deb63a3fc0599d5474454c3bc5197aa5c0017348 [root@kong ~]# docker run -d -p 7002:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "Hello blue/green service: v2 in 7002" 6c5c2ea322d4ac17b90feefb96e3194ec8adecedaa4c944419316a2e4bf07117 [root@kong ~]# curl http://192.168.163.117:7001 こんにちは、サービス:こんにちは、ブルー/グリーン サービス: 7001 の v1 [root@kong ~]# curl http://192.168.163.117:7002 こんにちは、サービス:こんにちはブルー/グリーンサービス:7002のv2 [root@kong ~]# nginxを起動する [root@kong ~]# docker run -p 9080:80 --name nginx-blue-green -d nginx d3b7098c44890c15918dc47616b67e5e0eb0da7a443eac266dbf26d55049216a [root@kong ~]# docker ps |grep nginx-blue-green d3b7098c4489 nginx "nginx -g 'daemon ..." 10 秒前 9 秒前に起動 0.0.0.0:9080->80/tcp nginx-blue-green [root@kong ~]# nginx コードスニペット 以下の nginx コード スニペットを用意し、nginx の /etc/nginx/conf.d/default.conf に追加します。シミュレーション方法は非常に簡単です。Down はトラフィックがゼロであることを示すために使用されます (nginx では重みをゼロに設定できません)。最初は、トラフィックの 100% がブルー バージョンに送信されます。 http { アップストリーム nginx_blug_green { サーバー 192.168.163.117:7001 重み=100; サーバー 192.168.163.117:7002 がダウンしています。 } サーバー{ 聞く 80; サーバー名 www.liumiao.cn 192.168.163.117; 位置 / { proxy_pass http://nginx_blug_green; } } default.conf を変更する方法 これは、コンテナに vim をインストールし、ローカルで変更してから docker cp 経由で渡すか、sed で直接変更することで実現できます。コンテナにvimをインストールする場合は、次の方法を使用します [root@kong ~]# docker exec -it nginx-lb sh # apt-getアップデート ...省略 #apt-get install vim ...省略 修正前 # cat デフォルト.conf サーバー{ 聞く 80; server_name ローカルホスト; #文字セット koi8-r; #access_log /var/log/nginx/host.access.log メイン; 位置 / { ルート /usr/share/nginx/html; インデックス index.html index.htm; } #エラーページ 404 /404.html; # サーバーのエラーページを静的ページ /50x.html にリダイレクトします # エラーページ 500 502 503 504 /50x.html; 場所 = /50x.html { ルート /usr/share/nginx/html; } # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします # #場所 ~ \.php$ { # プロキシパス http://127.0.0.1; #} # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します # #場所 ~ \.php$ { #ルートhtml; #fastcgi_pass 127.0.0.1:9000; # fastcgi_index インデックス.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; #fastcgi_params を含めます。 #} # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する # nginxのものと一致します # #場所 ~ /\.ht { # すべて拒否; #} } # 後 # cat デフォルト.conf アップストリーム nginx_blug_green { サーバー 192.168.163.117:7001 重み=100; サーバー 192.168.163.117:7002 がダウンしています。 } サーバー{ 聞く 80; サーバー名 www.liumiao.cn 192.168.163.117; #文字セット koi8-r; #access_log /var/log/nginx/host.access.log メイン; 位置 / { nginx を /usr/share/html にコピーします。 #インデックス index.html index.htm; proxy_pass http://nginx_blug_green; } #エラーページ 404 /404.html; # サーバーのエラーページを静的ページ /50x.html にリダイレクトします # エラーページ 500 502 503 504 /50x.html; 場所 = /50x.html { ルート /usr/share/nginx/html; } # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします # #場所 ~ \.php$ { # プロキシパス http://127.0.0.1; #} # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します # #場所 ~ \.php$ { #ルートhtml; #fastcgi_pass 127.0.0.1:9000; # fastcgi_index インデックス.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; #fastcgi_params を含めます。 #} # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する # nginxのものと一致します # #場所 ~ /\.ht { # すべて拒否; #} } # nginx設定を再読み込み # nginx -s リロード 2018/05/28 04:39:47 [通知] 321#321: シグナル処理が開始されました # 結果を確認する 10回の呼び出しすべてが7001でv1を出力しました
ブルーグリーンデプロイメント: グリーンバージョンへの切り替え default.confの重みを調整し、nginx -s reloadを実行することで、nginxサービスを停止せずに動的にグリーンバージョンに切り替えることができます。目標は、すべてのトラフィックを7002でv2に出力することです。 default.conf を変更する方法 アップストリームのサーバーの重みを次のように調整するだけです。 アップストリーム nginx_blug_green { サーバー 192.168.163.117:7001 がダウンしています。 サーバー 192.168.163.117:7002 重み=100; } nginx設定を再読み込み # nginx -s リロード 2018/05/28 05:01:28 [通知] 330#330: シグナル処理が開始されました # 結果を確認する
要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: 一時ファイルを作成できないために MySQL が起動できない問題を解決する方法
>>: JavaScriptはシンプルな計算機能を実装します
目次概要達成方法具体的な実装評価関数の終了を決定する生成関数の範囲変換関数マップフィルター割り込み機...
この記事では主に、Vue + SpringBoot でページ分割されたリストデータを実装する方法を紹...
この記事では、例を使用して、MySQL ストアド プロシージャを作成 (CREATE PROCEDU...
HTML画像にハイパーリンクを追加すると醜い青い枠線が表示される次のように:解決: CSS スタイル...
この記事では、Vueカスタムツリーコントロールの使い方を参考までに紹介します。具体的な内容は次のとお...
この記事では、Windows プラットフォームで ogg プログラムを監視する方法を紹介します。 (...
以前書いた内容が詳細さに欠けていたため、今回は修正・補足しました。ただし、以前の MySQL バージ...
目次序文ソースコード学習の第一歩はどこから始めればよいでしょうか?写真から始めましょうソースコードを...
今日、jsp ページを書きました。<div style="margin:0 auto...
Web ページには、非常に複雑な HTML 構造があります。CSS を使用して関連するスタイルを定義...
1. 背景Docker サービスが開始されると、デフォルトで docker0 ブリッジが作成され (...
Optgroup は、ドロップダウン リストのコンテンツをより整理するために、select タグで使...
関連記事:初心者が学ぶ HTML タグ (2)導入された HTML タグは、必ずしも XHTML 仕...
パート1: 基礎1. :active や :hover などの疑似クラスとは異なり、これらはすべて疑...
Navicat が MySql サーバーにリモート接続できない問題の解決策は、先頭に書かれています:...