BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース NGINXコントローラーアプリケーション配信モジュールによりヘルスチェックとキャッシング構成が改善

NGINXコントローラーアプリケーション配信モジュールによりヘルスチェックとキャッシング構成が改善

原文(投稿日:2022/01/14)へのリンク

NGINXは、NGINX Plusロードバランサー用のコントロールプレーンソリューションであるNGINX Controller Application Delivery Moduleの新しいバージョンをリリースした。新機能には、強化されたワークロードヘルスチェック、キャッシュ構成の改善、インスタンスグループが含まれる。

NGINX Controllerは、NGINX Plusインスタンスのフリートを管理するための集中型のオーケストレーションおよび分析プラットフォームを提供する。NGINX Plusは、統合されたロードバランサー、サーバ、コンテンツキャッシュである。Application Delivery Moduleは、NGINX Plusインスタンス用のコントロールプレーンソリューションを提供する。これにより、アプリケーションの負荷分散を構成、保護、監視、トラブルシューティングするためのインターフェイスが提供される。

この新しいバージョンで、NGINXはワークロードヘルスチェックを強化した。インスタンスごとコンポーネントごとに2つの新しいイベントが生成されるようになった。1つ目は、ワークロードグループのメンバーが状態を正常から異常に変更したときにトリガーされるイベントである。2つ目は、ワークロードグループメンバーの現在の状態のスナップショットを提供するイベントで、数分ごとに送信される。これらの2つの新しいイベントに加えて、NGINX Plusデータプレーンによって送信されるヘルスチェックプローブのヘッダーを構成できるようになった。

このリリースには、スニペットと呼ばれる新機能も含まれる。これにより、コントローラーAPI内で表されないNGINXディレクティブを構成できるようになる。スニペットは、httpmainstreamupstreamブロックに追加できる。そして、コンポーネントserverブロックおよびlocationブロック、ゲートウェイのserverブロックに追加できる。たとえば、スニペットを使用して、HTTP Strict Transport Security (HSTS)ポリシーを次のように実装できる。

{
    "metadata": {
        "name": "<gateway-name>"
    },
    "desiredState": {
        "configSnippets": {
            "uriSnippets": [
                {
                    "applicableUris": [
                        {
                            "uri": "http://172.16.0.238:81"
                        }
                    ],
                    "directives": [
                        {
                            "directive": "add_header",
                            "args": ["Strict-Transport-Security", "max-age=31536000; includeSubDomains", "always"] 
                        }
                    ]
                }
            ]
        },
        "ingress": {
            "uris": {
                "http://example.com:8020": {}
            },
            "placement":  {
                "instanceRefs": [
                    {
                        "ref": "/infrastructure/locations/unspecified/instances/<instance-name>"
                    }
                ]
            }
        }
    }
}

スニペットはそのままnginx.confファイルに適用されることに注意してください。スニペットが適用される前にNGINXコントローラーによって行われる検証ステップはない。そのため、NGINXは、本番環境にプッシュする前に、検証環境でスニペットを検証することを強くお勧めする。

キャッシュは、APIあるいはUIを介して設定できるようになった。ディスクストアをコンポーネントに追加することで、基本的なキャッシュを有効にできる。指定されたディレクトリが存在する必要があり、NGINXプロセスにはそのディレクトリに対する読み取りと書き込みの両方の権限が必要であることに注意してください。単一のディスクストアでは、NGINXコントローラーは最上位のhttpコンテキストにproxy_cache_pathを追加し、コンポーネントのlocationブロックにproxy_cacheを追加することにより、nginx.confファイルを変更する。

キャッシュ分割は、分割構成設定でサポートされる。これにより、キャッシュされたコンテンツをパーセンテージまたはパターンマッチングで分割できる。NGINXコントローラーは、生成されたnginx.confファイルのhttpコンテキストに、パーセンテージ分割を含むsplit_clients構成ブロック、または文字列を含むmap構成ブロック(パターンマッチング用)を追加する。

スニペットを使用すると、高度なキャッシュが利用できる。次の例では、configSnippets.uriSnippets APIを使って、すべてのリクエストのキャッシュ期間を1分に設定している。さらに、これにより、デフォルトの保存場所として/tmp/defaultを使って、3つのストレージパスにまたがるキャッシュ分割がセットアップされる。

{
    "desiredState": {
        "configSnippets": {
            "uriSnippets": [
                {
                    "directives": [
                        {
                            "directive": "proxy_cache_valid",
                            "args": [
                                "any",
                                "1m"
                            ]
                        }
                    ]
                }
            ]
        },
        "caching": {
            "splitConfig": {
                "criteriaType": "PERCENTAGE",
                "key": "$request_uri"
            },
            "diskStores": [
                {
                    "inMemoryStoreSize": "100m",
                    "inactiveTime": "1m",
                    "isDefault": false,
                    "maxSize": "5G",
                    "minFree": "10k",
                    "path": "/tmp/hdd1",
                    "percentCriteria": "20%"
                },
                {
                    "inMemoryStoreSize": "100m",
                    "inactiveTime": "10s",
                    "isDefault": false,
                    "maxSize": "5g",
                    "minFree": "10k",
                    "path": "/tmp/hdd2",
                    "percentCriteria": "50%"
                },
                {
                    "inMemoryStoreSize": "100m",
                    "inactiveTime": "15s",
                    "isDefault": true,
                    "maxSize": "2g",
                    "minFree": "10k",
                    "path": "/tmp/default"
                }
            ]
        }
    }
}

新しくリリースされたインスタンスグループによって、同じ設定を受け付けるNGINX Plusインスタンスの論理グループを作成できる。これにより、1つのステップで複数のインスタンスを大規模に構成できる。

このリリースに含まれる詳細と追加機能については、NGINXブログの公式発表を確認してください。NGINXコントローラーアプリケーション配信モジュールは、NGINXコントローラーの一部として試用できる。

作者について

この記事に星をつける

おすすめ度
スタイル

BT