- Load Balancing をうまくやるために
- Health Checking(active monitoring)
- Outlier Detection(passive monitoring)
Health Checking
- endpoint ごとに生きているかを確認する
- cluster 単位で行う
- とはいえ health check だけでじゃ十分でない場合があり、異常値(outlier detection) と組み合わせると良い
Outlier Detection
- Health Check とは反対に、実際の Response から Healthy かどうかを判別する
- 例えば3回連続の503が帰ったら cluster から外す、という挙動をとる
- 使えないホストにトラフィックを流さない判断がさっさとできるのはよさそうだが、それで復帰するのかなあ
Implementing Health Checking
- Health check はコードに手をいれず実現できて便利だが
- check しているのは service の health ではなく、host の health だ
- つまり、host が auto-healing しないと意味がない
- サービスが十分なトラフィックを受けているなら、5回の5xxエラーなどの統計情報が十分 Outlier Detection として役に立つ
- もし initialize 処理が終わる前にトラフィックが流れるような場合は、Outlier Detection が役立ちます(まぁそうならんようんするやろ)
- トラフィックが少ないが重要な場合は、Active Helath Check が役に立ちます
おわりに
Active と Passive の Healthcheck があり、まぁ Passive Health check が場合によっては便利な場面があるんやなーと思いました。