ロードバランシングとネットワークサービス
OVNはスイッチングやルーティングだけでなく、論理ネットワーク内でロードバランシング、ファイアウォール、トラフィックシェーピング、DNS機能を提供します。これらはいずれも個別の専用アプライアンスを必要とせず、他のトラフィックと同じデータパス上で直接強制適用されます。
ロードバランサー (Load balancers)
ロードバランサーは、仮想IPとポートをバックエンドアドレスのプールにマッピングします。Load Balancers ページで作成し、これを利用するクライアントが属する論理スイッチにアタッチします。
- プロトコル: TCP、UDP、またはSCTP
- VIPルール: 仮想IP、ポート、および1つ以上の
address:portバックエンド
ロードバランサーが正常に機能するかどうかは、以下の2つのルールによって決まります:
- 分散ルーターではなく、論理スイッチにアタッチすること。専用ゲートウェイポートを持たないルーターはインバウンド通信のみを変換し、戻りの応答を逆変換しないため、すべてのリクエストが無応答に見えてしまいます。
- クライアントのサブネット外のアドレスをVIPに設定すること。サブネット内のVIPにはARP応答者が存在しないため、クライアントはパケットを送信する前にハングアップします。
両方の条件を満たすと、リクエストはバックエンド間で分散され、複数のリクエストを送信して異なるバックエンドが応答することを確認できます。
ロードバランサーグループ (Load balancer groups)
グループは、一括して適用されるロードバランサーのセットです。グループを複数のスイッチにアタッチすると、所属するすべてのロードバランサーがそれらのスイッチすべてに適用されるため、各スイッチに手動で1つずつロードバランサーをアタッチする手間を省くことができます。
セキュリティグループ: ポートグループ、アドレスセット、およびACL
ポートグループ (Port groups)
ポートグループは、論理スイッチポートに名前を付けたグループです。ACLはグループに対して作成されるため、グループにポートを追加するだけでグループ内のすべてのルールが自動的に適用されます。ワークロードが追加・削除されてもルール自体を編集する必要はありません。
アドレスセット (Address sets)
名前付きのアドレスまたはCIDRのセットであり、ACLマッチ条件から参照されるため、1つのルールで多数の送信元をカバーできます。
命名規則
ポートグループおよびアドレスセットの名前はルールの評価式に直接代入されます。OVNは - を減算記号として解釈するため、db-servers のような名前を付けると、ルールは保存されても実際には適用されません。必ずアンダースコアを使用して db_servers のように命名してください。Vaporは入力時に不正な名前を拒否します。
ACL (アクセス制御リスト)
ACLはポートグループに適用されるルールです。以下の要素を持ちます:
- 方向 (Direction) — グループのポートに着信するトラフィックに対する
to-lport、およびポートから送出されるトラフィックに対するfrom-lport - 優先度 (Priority) — 高い値が優先
- アクション (Action) —
allow-related(ステートフル、応答通信を許可)、allow(ステートレス、応答通信を許可しない)、drop、reject - マッチ条件 (Match) — プロトコル、ポート範囲、リモートCIDR、アドレスセット、またはポートグループから構築(直接記述も可能)
- ルール名 (Rule name) — 任意設定。ログ出力に表示されるため設定を推奨
- ログと重大度 (Log and severity) — マッチ時にログを出力するかどうか、およびその重大度レベル
- メーター (Meter) — ルールのログメッセージの出力レートを制限
コネクション型のプロトコル(TCPなど)では、通常の allow ではなく必ず allow-related を選択してください。単なる allow はステートレスであるため、戻りの応答パケットがドロップされてしまいます。
メーターはログを制限し、トラフィックは制限しません
ACLのメーターは、ルールがログ行を出力する頻度のみを制限します。トラフィック自体には何の影響も与えません。帯域幅を制限または制御したい場合は、QoSルールを使用してください。
通信をブロックするためのルールを追加した後は、実際にブロックされているか必ずテストしてください。ACLが正常に保存・表示されていても、実際には適用されていないケースがあります。詳細は トラブルシューティング を参照してください。
QoS
QoSルールは論理スイッチ上のトラフィックを制限またはマーキングします。通常はポート名を指定する式でマッチングされます。
- 方向:
from-lportまたはto-lport - 優先度とマッチ条件
- 帯域幅 (bandwidth)(kbps単位のレートとバーストサイズ)または DSCP マーキングのいずれか(両方は不可)
レート制限は即座に有効になり、スループットテストで確認できます(2000 kbpsに制限されたポートは約そのレートで転送されます)。ルールを削除すると元のフルスループットに復旧します。
メーター (Meters)
メーターは名前付きのレート制限です。単位(kbps または pktps)、レート、バーストサイズ、およびアクションを定義します。メーターは主にACLから参照されてログの出力頻度を制限し、ノイズの多いルールによってシステムログが埋め尽くされるのを防ぐために使用されます。
DNS
DNSレコードセットは、1つ以上の論理スイッチにアタッチされ、ホスト名とIPアドレスをマッピングします。OVNはそれらのスイッチ上のポートからのクエリに直接応答するため、ワークロードは外部のリゾルバーにアクセスすることなく内部の名前解決を行えます。
レコードはシンプルなホスト名とアドレスのペアです:
web.internal 10.50.0.11
db.internal 10.50.0.12テスト時の注意点:
- ワークロードがリゾルバーとして実際に使用しているアドレス(通常はサブネットゲートウェイ)に対してクエリを送信してください。別のルートを持つゲストからパブリックリゾルバーに問い合わせると、外部の本物のリゾルバーに到達して
NXDOMAINが返されます。 - OVNが保持していない名前を問い合わせると、否定応答ではなく「無応答」となります。同様に、IPv4レコードのみを持つ名前に対してクライアントがIPv6アドレスを要求した場合も応答はありません。これらは両方とも仕様通りの正しい動作です。