---
title: "NGINX PlusのLB機能：アクティブヘルスチェック&セッション維持 | grasys blog"
url: "https://blog.grasys.io/post/tsunoda/activehealth_and_session"
description: "こんにちはtsunodaです。 先日、東京エレクトロンデバイス(TED)様、F5ネットワークスジャパン合同会社様のご協力の元、NGINX Plus の機能検証を実施させていただきました。 どんな検証をしたのかの一覧紹介ブログはこちら 今回はその中から、ロードバランサ機能のアクティブヘルスチェックとセッション維持につい…"
---

# NGINX PlusのLB機能：アクティブヘルスチェック&セッション維持

-   ![](/_astro/noicon.CTHOhNiB_1HMs6A.webp)[tsunoda](/authors/tsunoda/)
-   公開日：2022年6月23日
-   カテゴリー：[Tech](/categories/tech/)
-   タグ：[#F5](/tags/f5/)[#ロードバランシング](/tags/ロードバランシング/)[#NGINX](/tags/nginx/)[#ted](/tags/ted/)

![NGINX PlusのLB機能：アクティブヘルスチェック&セッション維持](/_astro/og-image.DDSiu2Ny_XHpDd.webp)

こんにちはtsunodaです。  
先日、東京エレクトロンデバイス(TED)様、F5ネットワークスジャパン合同会社様のご協力の元、NGINX Plus の機能検証を実施させていただきました。

![NGINX PlusのLB機能：アクティブヘルスチェック&amp;セッション維持の画面](/_astro/01-image-9-1024x341-4fd23b33.qI4taDT8_mEOLC.webp)

どんな検証をしたのかの一覧紹介ブログは[こちら](https://blog.grasys.io/post/tsunoda/nginx-plus/)

今回はその中から、ロードバランサ機能のアクティブヘルスチェックとセッション維持についてご紹介します。  
掘り掘りその2。

#### NGINX Plus とは

NGINX Plusは、オープンソース版のNGINXに様々な機能を拡張し搭載した商用版ソフトウェアです。  
[NGINX Plusとは](https://www.nginx.co.jp/products/nginx/)

NGINX Plusのインストール方法や基本的なロードバランサ設定については[掘り掘りその１](https://blog.grasys.io/post/tsunoda/nginx-plus_install_and_lb/)でご紹介させていただきました。  
今回は、アクティブヘルスチェックと、セッション維持についてご紹介します。

#### アクティブヘルスチェック

アップストリームサーバの正常性を色々な条件でチェックできます。  
この機能を使用することで、さまざまな問題を検出して回避することができ、アプリケーションの信頼性を大幅に向上させることができます。  
設定はこんな感じ↓

Plain textcontent\_copy

```
server {
  location / {
    proxy_pass http://backend;
    health_check interval=2s
      fails=2
      passes=5
      uri=/
      match=healthcheck;
  }
}

match healthcheck {
  status 200;
  header Content-Type = "text/html";
  body ~ "Welcome to nginx!";
}
```

この場合、2秒毎に`uri/`に対してGET要求を実施します。  
正常とみなされる条件として、5回連続してチェックに合格する必要があります。(passes=5の部分)  
2回連続して失敗すると不健全と見なされます。(fails=2の部分)  
応答内容はmatchブロックと一致している必要があります。  
この場合、ステータスコードは`200`、ヘッダーのContent-Typeは`text/html`、bodyは文字列`Welcome to nginx!`  
となります。

何度チェックをパスする必要があるのか、  
何回までなら異常と認めず失敗できるのか、  
期待される結果は何か、などを設定できます。  
より複雑なロジックについてはmatchブロックによって設定可能で、こういった機能は**サーバの健全性を常に保証できる**ようにできます。

#### セッション維持

Cookieパラメータをstickyディレクティブで使用することにより、そのCookieを追跡し、後続の要求を同じサーバに送信し続けます。  
設定は簡単でこんな感じ↓

Plain textcontent\_copy

```
upstream backend {
  zone backend 64k;
  server <backend_server1の内部IP>;
  server <backend_server2の内部IP>;

  sticky cookie aaa expires=1h;
}
```

`aaa`という名前のCookieを作成および追跡します。  
有効期限はこの設定だと`1時間`です。(分も可能です、expire=3mなど)  
また、明示的にドメインを指定することも可能で、HTTPS経由でのみの送信もでき、どのパスで有効にするかも設定可能です。↓

Plain textcontent\_copy

```
upstream backend {
  zone backend 64k;
  server <backend_server1の内部IP>;
  server <backend_server2の内部IP>;

  sticky cookie 
         aaa
         expires=1h
         domain=.example.com
         httponly
         secure
         path=/;
}  
```

この設定だと、`aaa`というCookieの作成および追跡、ドメインは`example.com`、`1時間`で期限切れになり、`HTTPS経由のみ`で送信でき、`全てのパス`で有効という設定になります。

**接続しに行っているサーバが落ちたらどうなるの？**  
はい、気になったので試しました。  
例えばサーバA、Bがあるとします。  
NGINXのCookieはサーバA、Bそれぞれに応じたCookie(固定値)が応答されます。  
サーバAのCookieを持ったクライアントからのリクエストでも、サーバAがダウンしている場合、  
NGINXはリクエストをサーバBに転送し、この時にNGINXはクライアントへサーバBのCookieを応答します。  
クライアントがサーバBのCookieを持ってNGINXにリクエストを送っている場合、  
サーバAが復旧してもサーバBにリクエストは転送されるのです。

### まとめ

設定のやり方、意味を理解すれば結構応用が効きそうですね！  
アクティブヘルスチェックはプロセス監視だけでなく、ソースサーバを監視するためにも有用だと感じました。  
しかもサービスによってソースサーバの監視方法を独自に、比較的自由に設定できるのは利点かなと思います。  
セッション維持の設定も入れることでより安定したサービス提供も可能ですね。  
クラウドを使用していると、そのクラウドのロードバランサを使用することが多いですが、マルチクラウドやオンプレ環境で有用である機能もあり、うまく組み合わせられる場面はあるなと思います。  
[NGINX Plus ロードバランサ機能](https://www.nginx.com/products/nginx/load-balancing)

**« TED×grasys×F5 ブログ一覧 »**  
4月27日 [NGINX Plusの検証をした！](https://blog.grasys.io/post/tsunoda/nginx-plus/) (grasys)  
6月02日 [grasys×F5×TEDが徹底解析！NGINX Plusの仕組みがよくわかる！](https://cn.teldevice.co.jp/blog/p34172/) (TED様)  
6月09日 [NGINX Plusのインストール方法とLBの基本設定](https://blog.grasys.io/post/tsunoda/nginx-plus_install_and_lb/) (grasys)  
6月16日 [NGINX PlusでJWT認証をやってみた！](https://cn.teldevice.co.jp/blog/p33904/) (TED様)

## この記事を書いた人

[![](/_astro/tsunoda.CrA_Wh9V_Z1aOeCP.webp)](/authors/tsunoda/)

### [tsunoda](/authors/tsunoda/)

tsunodaのプロフィールと執筆記事をご覧いただけます。

[プロフィールと記事一覧](/authors/tsunoda/)