※本記事はNGINX,Inc.のブログ記事「5 Reasons to Switch from F5 BIG-IP to NGINX Plus」を和訳した内容となります。
【URL】
https://www.nginx.com/blog/5-reasons-switch-f5-big-ip-to-nginx-plus/
2016年、NGINX Plusの価格と性能をF5 BIG-IPアプリケーション デリバリー コントローラー(以下ADCと表記)の複数モデルと比較しました。NGINX Plusに切り替えることで、F5アプライアンスのパフォーマンスと同等、またはそれ以上のパフォーマンスを達成しながら、1年目から80%以上のコストを節約できます。
ADCをNGINX Plusに置き換える方法については、以下のリソースをご覧ください。
NGINX,INC ブログの投稿
移行ガイド
BIG-IP ADCは、ASICでレイヤ4のロードバランシング(英語)を行うなど、カスタムハードウェアを使っているため高価です。以前は、コモディティサーバーでは同等のプロセッサー性能を実現できないか、実現できてもはるかに高価だったため、ロードバランシング用のカスタムハードウェアは費用対効果の高い方法でした。しかし最近では、サーバーは大幅に安く、高速化しているため、いまやカスタムハードウェアは割高な選択肢になっています。
またF5は、ハードウェアアプライアンスを作ることに集中するあまり、現代的なアプリケーションのニーズ、つまりソフトウェアだけが実現できる柔軟性を取り入れませんでした。一方、NGINX Plusが提供するものは、現代のアプリケーションや今日のITインフラストラクチャー、特にクラウドとDevOpsのニーズに合わせて設計された、ソフトウェアロードバランサーとアプリケーション配信プラットフォームです。ソフトウェアとしてNGINX Plusは、レイヤー7の機能と柔軟性のある現代的なアプリケーションという、開発者と運用チームが必要とするものを提供できる点で優れています。
このブログ記事では、NGINX Plusの5つの固有の機能を紹介しています。これは、F5 BIG-IPのADCからは得られないものです。
- サービス・ディスカバリーの統合(英語) – マイクロサービスを使用するアプリケーションは、NGINX Plusの最先端機能である、洗練されたサービス・ディスカバリー機能が必要です。
- 静的コンテンツの提供(英語) – F5 BIG-IPでは静的コンテンツを提供することはできませんが、NGINX Plusの核となる機能です。
- ARMサーバーでベアメタルを実行する(英語) – ARMサーバーはエネルギーコストを節約します。NGINX PlusはネイティブでARM上で動作しますが、F5 BIG-IPではARMは動作しません。
- Dockerコンテナの中で実行(英語) – Dockerを使うと、アプリケーションの開発、デプロイ、管理が非常に簡単になるため、急速に人気が高まっています。NGINX PlusはDockerコンテナ内でスムーズに動作します。
- 再起動いらずのアップグレード – アップグレードは、絶え間ない作業のように見えるかもしれません。NGINX Plusがあれば、アップグレード中でも、絶え間ないアップタイムを実現できます。
1.サービス・ディスカバリーの統合
2016年に実施した調査によると、組織の68%以上がマイクロサービスを利用または調査しています。マイクロサービスを調べると、最大の課題の1つにサービスの検出があることがわかるでしょう。マイクロサービスベースのアーキテクチャーでは、サービスにはIPアドレスとポートが動的に割り当てられます。つまり、サービスの場所は予測できません。サービスにアクセスできるようにするには、Consul、etcd、ZooKeeperなどの「サービスレジストリー」にIPアドレスとポートを登録する必要があります。トラフィックをサービスに送信する必要のあるクライアント(NGINX Plusなど)は、サービスレジストリーにクエリして、サービスのIPアドレスとポートを取得します。
NGINX Plusは、DNS SRVレコードを使って、マイクロサービス環境でサービス・ディスカバリーを実行できます
サービスレジストリーは、DNS SRVレコードの形式でサービスのロケーション情報を提供します。DNS SRVレコードは、動的に割り当てられるポート番号を含む点で、標準的なDNSレコードとは異なります。マイクロサービスベースのアプリケーション向けロードバランサーは、サービスレジストリーが提供するDNS SRVレコードから、IPアドレスとポート情報を抽出できる必要があります。
このスニペットでは、NGINX Plusがサービスレジストリーを照会し、応答されたDNS SRVレコードを解析するように設定しています。
resolver service-registry-address;
upstream my_service {
zone backend 64k;
server service-hostname service=http resolve;
}
server {
# …
location /my_service {
# …
proxy_pass http://my_service;
}
}
serverディレクティブの最初のパラメーターとして、サービスのresolverディレクティブとホスト名で、サービスレジストリーのIPアドレスを指定します。このservice=httpパラメーターはDNS SRVレコードの解析を有効にし、resolveパラメーターはNGINXが定期的にホスト名を再解決するよう指示します。ここでは、DNSレコードに含まれたデフォルトの期間、生存期間(TTL)を使います。validパラメーターを使えば、resolverディレクティブに別の期間を設定することもできます。
サービスのコピーが複数ある場合、サービスレジストリーは単一のDNS SRVレコード内のすべてのサービスのIPアドレスとポートを返します。その場合、NGINX Plusはサービス間のトラフィックを負荷分散します。
F5 BIG-IPはDNS SRVレコードを解析できないため、マイクロサービス環境でのトラフィックのロードバランシングを行うことはできません。
2.静的コンテンツの提供
NGINX Plusは、アプリケーションの負荷を分散し、コンテンツをキャッシュし、監視することができます。また、静的コンテンツのオリジンサーバーにすることもできます。NGINX Plusは、コミュニティー版のNGINXソフトウェアの上に構築され、静的なコンテンツをユーザーに配信するために4億9,000万以上のWebサイトで使用されています。静的コンテンツには、画像、CSS、JavaScript、およびWebページを構成するその他のアセットが含まれます。
「私はただのロードバランサーは望んでいませんでした。静的なコンテンツも提供したいと思っていたのです。そのため、 私の製品検索は、すぐにNGINX Plusに絞られました。」
– Dan Chamberlain、プリンシパルアーキテクト、Bluestem Brands
以下の構成スニペットで、NGINX Plusがwww.example.com/images/image.jpgへのリクエストを受信すると、要求者に対して、/path/to/images/image.jpg ファイルを返します。
server {
server_name www.example.com;
# …
location /images {
alias /path/to/images;
}
}
F5 BIG-IPは、NGINX Plusのようにコンテンツのロードバランスとキャッシュは行えますが、静的なコンテンツは配信できません。F5を使用すると、Apache、NGINX、またはIISを実行する別のWebサーバーを立てる必要があります。
3.ARMサーバーでベアメタルを実行する
ARMプロセッサーは、低消費電力が要件となる、スマートフォンやその他のモバイル機器向けとしてよく知られています。でも、データセンターでARMサーバーを使用すれば、高パフォーマンスを維持しながら、エネルギー消費を削減できることまでは知られていないかもしれません。半導体チップメーカーのAMDは、2020年までにARMサーバーの市場シェアが20%になると予測しています。
NGINX,Inc.は、ARMバージョンのUbuntu Linux 14.04 / 16.04 LTSを搭載したARMサーバー上で動作するNGINX Plusを完全にサポートしています。インストール手順、構成、および機能セットはすべてx86バージョンと同じで、ARMサーバーへの移行はスムーズです。(ARMサーバーに加えて、NGINX Plusはx86およびPowerPC [ppc64_le]サーバー(IBM POWER8など)で動作します。
F5 BIG-IPは、プロプライエタリーなx86ベースのアプライアンスのみ、またはVMWare ESXiなどのハイパーバイザーの助けを借りれば、汎用のx86サーバーで実行できます。
4.Dockerコンテナの中で実行
コミュニティー版NGINXはDocker Hubで最も頻繁にダウンロードされるアプリケーションの 1つで、これまでに1000万回以上ダウンロードされています。Dockerを使用してアプリケーションを構築する開発者は、アプリケーションスタックの重要な部分として、圧倒的にNGINXを選択しています。
NGINX Plusはまた、NGINX, Inc.がフルサポートするDockerコンテナ内で実行できます。Docker用に独自のNGINX Plusのイメージを構築する方法については、UbuntuとCentOS/ Oracle Linux / Red Hatシステム用のサンプルDockerファイルを試して、 ブログ記事「NGINXとNGINX PlusをDockerに展開する」をご覧ください。
Dockerコンテナ内で実行できることにより、NGINXのマイクロサービス・リファレンスアーキテクチャーであるファブリックモデルなど、興味深いアーキテクチャーが可能になります。これは、NGINX Plusがすべてのコンテナ内で実行されて、ロードバランシング、ルーティング、SSL / TLS終了サービスを提供するモデルです。
ファブリックモデルの特長は、コンテナ化されたすべてのマイクロサービスインスタンスで、NGINX Plusインスタンスが実行されることです
F5 BIG-IPはDockerコンテナの内部では実行できません。仮想アプライアンスまたはハードウェアアプライアンスとしてのみ使用できます。
5.再起動いらずのアップグレード
最新のバグフィックスとセキュリティパッチを確実に適用するために、ソフトウェアを最新の状態に保つことは非常に重要です。NGINX Plusを使用すると、サーバーを再起動したりパケットを取りこぼすことなく、ソフトウェアをアップグレードすることができます。
次の例は、標準のパッケージ管理ツール(この場合はapt)を使って、NGINX Plusをアップグレードする方法です。コマンドが完了すると、NGINX Plusのプロセスがリロードされ、新しいバージョンのソフトウェアがダウンタイムなしで実行されます。
# apt-get update
…
# apt-get install nginx-plus
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following packages will be upgraded:
nginx-plus
1 upgraded, 0 newly installed, 1 to remove and 43 not upgraded.
Need to get 2373 kB of archives.
After this operation, 1547 kB disk space will be freed.
Do you want to continue? [Y/n] y
…
Setting up nginx-plus (1.11.5-1~xenial) …
一方でF5 BIG-IPは、ソフトウェアをアップグレードするために完全に再起動する必要があります。
結論
NGINX Plusなら、同クラスのF5 BIG-IPと比較して80%以上のコスト節約が可能で、F5では実現できない幅広い機能を提供します。DNS SRVレコードを読み取ったり、コンテナ内で実行できる機能は、マイクロサービスのサポートとレガシーアプリケーションの近代化を考える際には、非常に重要です。
タグ: BIG-IP, ソフトウェアADC