グレースケールリリースとは、白と黒をスムーズに移行できるリリース方法を指します。 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 ビューの一貫性を確保する方法の詳細な説明 (チェック オプション付き)
承認とは、ユーザーに特定の権限を付与することです。たとえば、新しく作成したユーザーに、すべてのデータ...
画像をプルする docker プル mysql完成した画像を見る Docker イメージイメージを介...
フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...
1. Dockerリモート接続ポートを設定するサーバー上の docker.service ファイルを...
最近、vue について読みました。これまで基本的に見落としていた単一ファイル コンポーネントを見つけ...
今日は、uniapp を使用して Echarts を統合し、マップ チャートを表示します。 mpvu...
目次1. 準備2. 展開プロセス3. アクセステストHalo は、ブログに慣れている学生に追加のオプ...
noscript の定義と使用法noscript 要素は、スクリプトが実行されない場合の代替コンテン...
序文MySQL では、server-id を使用してデータベース インスタンスを一意に識別し、それを...
Remax は、実行時に構文制限のないソリューションを採用した React を使用して小規模なプロ...
3つの機能: 1. コンテンツの垂直方向の自動中央揃え2. デフォルトのプロンプトテキストは灰色で表...
個々のウェブマスターにとって、自分のウェブサイトをいかにユニークで個性あふれるものにするかは、常に絶...
日々の開発において、フロントエンドの学生はアニメーションやデザインについてよく議論します。デザイナー...
目次1. 一般的な高階関数1.1、フィルター1.2、地図1.3、減らすHigher Order fu...
リレーショナル データベースでは、悲観的ロックと楽観的ロックがリソース同時実行シナリオのソリューショ...