グレースケールリリースとは、白と黒をスムーズに移行できるリリース方法を指します。 ABテストとは、グレースケールのリリース方法で、一部のユーザーはAを使い続け、一部のユーザーはBを使い始めます。ユーザーがBに異論がなければ、徐々に範囲を広げていき、すべてのユーザーをBに移行させます。 グレースケール リリースにより、システム全体の安定性を確保できます。最初のグレースケール リリース中に問題を発見して調整し、その影響を確認することができます。 グレースケールを解放する方法は、一般的に 3 つあります。
この記事では主に、Cookie とソース IP に基づいてシンプルなグレースケール パブリッシングを実装する方法について説明します。Nginx + LUA 方式は内容が多すぎるため、この記事では詳しく説明しません。 A/B テストのプロセス NginxはCookieに基づいてグレースケールリリースを実装します Cookie クエリによると、Cookie キーはバージョンの値です。Cookie 値が V1 の場合は hilinux_01 に転送されます。V2 の場合は hilinux_02 に転送されます。クッキー値が一致しない場合は、デフォルトでhilinux_01に対応するサーバーが使用されます。 2 つのサーバーは次のように定義されます。
if命令で実装 アップストリームhilinux_01 { サーバー 192.168.1.100:8080 max_fails=1 fail_timeout=60; } アップストリームhilinux_02 { サーバー 192.168.1.200:8080 max_fails=1 fail_timeout=60; } アップストリームデフォルト{ サーバー 192.168.1.100:8080 max_fails=1 fail_timeout=60; } サーバー{ 聞く 80; サーバー名 www.hi-linux.com; access_log ログ/www.hi-linux.com.log メイン; #マッチクッキー $group を "default" に設定します。 $http_cookie の場合、バージョンは V1 です。 $group hilinux_01 を設定します。 } $http_cookie の場合、バージョンは V2 です。 $group hilinux_02 を設定します。 } 位置 / { proxy_pass http://$グループ; proxy_set_header ホスト $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; インデックス index.html index.htm; } } マップディレクティブで実装 Nginx でマッピングを構成すると、 バージョン V1 のユーザーがシステムにアクセスする場合、$group は hilinux_01 になります。サーバーで使用する場合、http://hilinux_01 にプロキシされます。バージョン V2 のユーザーがシステムにアクセスする場合、$group は hilinux_02 になります。サーバーで使用する場合、http://hilinux_02 にプロキシされます。クッキー値が一致しない場合は、デフォルトでhilinux_01に対応するサーバーが使用されます。 アップストリームhilinux_01 { サーバー 192.168.1.100:8080 max_fails=1 fail_timeout=60; } アップストリームhilinux_02 { サーバー 192.168.1.200:8080 max_fails=1 fail_timeout=60; } アップストリームデフォルト{ サーバー 192.168.1.100:8080 max_fails=1 fail_timeout=60; } $COOKIE_version $group をマップします { ~*V1$ hilinux_01; ~*V2$ hilinux_02; デフォルト デフォルト; } サーバー{ 聞く 80; サーバー名 www.hi-linux.com; access_log ログ/www.hi-linux.com.log メイン; 位置 / { proxy_pass http://$グループ; proxy_set_header ホスト $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; インデックス index.html index.htm; } } Nginxは受信IPに基づいてグレースケールリリースを実装します 内部 IP の場合、リバース プロキシは hilinux_02 (プレリリース環境) に送信されます。そうでない場合は、リバース プロキシは hilinux_01 (本番環境) に送信されます。 アップストリームhilinux_01 { サーバー 192.168.1.100:8080 max_fails=1 fail_timeout=60; } アップストリームhilinux_02 { サーバー 192.168.1.200:8080 max_fails=1 fail_timeout=60; } アップストリームデフォルト{ サーバー 192.168.1.100:8080 max_fails=1 fail_timeout=60; } サーバー{ 聞く 80; サーバー名 www.hi-linux.com; access_log ログ/www.hi-linux.com.log メイン; $group のデフォルトを設定します。 ($remote_addr ~ "211.118.119.11") の場合 { $group hilinux_02 を設定します。 } 位置 / { proxy_pass http://$グループ; proxy_set_header ホスト $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; インデックス index.html index.htm; } } サーバーが 1 台しかない場合は、同じ目的を達成するために、異なる IP アドレスに応じて異なる Web サイト ルート ディレクトリを設定できます。 サーバー{ 聞く 80; サーバー名 www.hi-linux.com; access_log ログ/www.hi-linux.com.log メイン; $rootdir を "/var/www/html" に設定します。 ($remote_addr ~ "211.118.119.11") の場合 { $rootdir を "/var/www/test" に設定します。 } 位置 / { ルート $rootdir; } } これで、グレースケール リリースを実装するための最も基本的な方法は終了です。よりきめ細かいグレースケール リリースを実行したい場合は、ABTestingGateway プロジェクトを参照してください。 ABTestingGateway は、Sina のオープン ソースの動的ルーティング システムです。 ABTestingGateway は、動的に転送戦略を設定できるグレースケール リリース システムです。レイヤー 7 で動作し、nginx と ngx-lua に基づいて開発されています。転送戦略データベースとして redis を使用し、動的なスケジューリング機能を実装できます。 ABテストゲートウェイ: https://github.com/CNSRE/ABテストゲートウェイ 参照ドキュメント Nginx を使用してグレースケール パブリッシングを実装する方法に関するこの記事はこれで終わりです。Nginx グレースケール パブリッシングに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: MySQL ビューの一貫性を確保する方法の詳細な説明 (チェック オプション付き)
mysql ストレージ エンジン: MySQL サーバーはモジュール スタイルを採用しており、特にス...
この記事では、例を使用して、MySQL クエリのソート関数とクエリ集計関数の使用方法を説明します。ご...
目次1 テストケース2 JS配列重複排除4種類2.1 要素の比較2.1.1 二重層 for ループ比...
ケースの説明: - ページ効果を実現するためにテーブルを使用する- ハイパーリンクを機能させたくない...
UNIONの使用ほとんどの SQL クエリは、1 つ以上のテーブルからデータを返す単一の SELEC...
目次序文使い方要約する序文Vue にはコードの再利用に使われる mixins という設定項目がありま...
01. コマンドの概要tr コマンドは、標準入力からの文字を置換、圧縮、削除できます。ある文字セット...
このシステムでは、# 記号は root ユーザーを表し、$ 記号は通常のユーザーを表します。では、ど...
この記事の例では、クリックして切り替える機能を実装するためのJavaScriptの具体的なコードを参...
Superset は、エレガントなインターフェースとデータ テーブルに基づく動的なデータ生成を主な機...
目次問題の説明1. 基本的な解決策2. 中間的な解決策3. 高度なソリューション4. ハードコアソリ...
大量のデータベース データを最適化することは非常に高度な科学であり、開発者が習得する必要がある専門的...
次のコードを index.html などのデフォルトのホームページ ファイルとして保存し、ルート デ...
1. ダウンロード1. MySQL msi 公式 Web サイトから最新のダウンロードをクリックす...
目次1minioはシンプル2 Dockerビルド minio 2.1 単一ノード2.2 マルチノード...