l_threshold と u_threshold の使い方
IPVSには設定した接続数を越えると、それ以上の接続を抑止する threshold という機能があります。
これに関連するパラメータは l_threshold と u_threshold のふたつです。
今回はこれらの使い方をおさらいします。
u_threshold
現在の接続数がこの値よりも大きくなると、それ以上の接続をしなくなります。
全サーバがこの状態に陥るとサービス停止となるので要注意です。
net/ipv4/ipvs/ip_vs_conn.c
if (dest->u_threshold != 0 && ip_vs_dest_totalconns(dest) >= dest->u_threshold) dest->flags |= IP_VS_DEST_F_OVERLOAD;
IP_VS_DEST_F_OVERLOADフラグが立っている転送先には新規の接続はされなくなります。
l_threshold
u_thresholdでセットされたIP_VS_DEST_F_OVERLOADフラグをクリアする条件を指定します。
接続数がこの値を下回ったらIP_VS_DEST_F_OVERLOADフラグがクリアされます。
l_thresholdが0の場合は、接続数がu_thresholdの75%を下回ったらクリアされます。
net/ipv4/ipvs/ip_vs_conn.c
if (dest->l_threshold != 0) { if (ip_vs_dest_totalconns(dest) < dest->l_threshold) dest->flags &= ~IP_VS_DEST_F_OVERLOAD; } else if (dest->u_threshold != 0) { if (ip_vs_dest_totalconns(dest) * 4 < dest->u_threshold * 3) dest->flags &= ~IP_VS_DEST_F_OVERLOAD; } else {
使用例
設定
# ipvsadm -a -t x.x.x.x -r y.y.y.y -s rr -x u_threshold -y l_threshold
参照
# ipvsadm -L -n --thresholds