この記事では、ブルーグリーン デプロイメントと、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はシンプルな計算機能を実装します
今日、MySQLサービス1067エラー問題に遭遇しました。システムアカウントを使用するように設定して...
1 はじめに優れたコーディング習慣は優れたプログラマーが備えるべき資質ですが、コードの品質を保証する...
1. xshell6をインストールする2. サーバー接続を作成し、ユーザー名とパスワードを入力します...
問題を見つける最近、仕事中に問題が見つかりました。問題は、MySQL ディスクがいっぱいだったことで...
1. はじめにNginx は、無料のオープンソースの高性能 HTTP サーバーおよびリバース プロキ...
このチュートリアルの動作環境: Windows 7 システム、vue 2.9.6 バージョン、DEL...
上記の Web ページをデザインします。 <!DOCTYPE html> <htm...
この記事では、プログレスバーヒストグラムを実現するためのvue+echartsの具体的なコードを参考...
みなさんこんにちは。私は技術の話ばかりして髪を切らない先生のトニーです。何らかの歴史的な理由や誤操作...
これは、よく使われるけれども忘れられがちな CSS 実装方法のコレクションです。抜けや追加があれば、...
1. TypeScriptの紹介前回の記事ではTypeScriptのインストール、使い方、自動コンパ...
方法:説明: どちらも達成できません:方法1: sp_product から sp.productid...
Linux の優れた点は、マルチユーザー、マルチタスク システムにあります。 Linux では通常、...
「nofollow」タグは数年前に Google、Yahoo、Microsoft によって提案されま...
1. はじめにDocker には、タスクを構成する複数の Docker コンテナをオーケストレーショ...