第30章 ネイティブのコンテナールーティングの設定
30.1. ネットワークの概要
一般的なネットワーク設定を以下に示します。
- 11.11.0.0/16 はコンテナーネットワークです。
- 11.11.x.0/24 サブネットは各ノード用に予約済みで、Docker Linux ブリッジに割り当てられています。
- 各ノードには 11.11.0.0/16 の範囲内にある (ローカルサブネットを除く) あらゆるものに到達するために使用するルーターへのルートがあります。
- ルーターには各ノードのルートがあるため、適切なノードにポイントできます。
- ネットワークトポロジーが変更されない限り、新規ノードが追加されても既存のノードを変更する必要はありません。
- IP 転送が各ノードで有効になっています。
以下の図はこのトピックで説明されているコンテナーのネットワーク設定を示しています。2 つのネットワークインターフェースカードを搭載したルーターとして機能する 1 つの Linux ノード、2 つのスイッチ、およびこれらのスイッチに接続された 3 つのノードを使用しています。
30.2. ネイティブのコンテナールーティングの設定
既存のスイッチとルーター、Linux のカーネルネットワークスタックを使用してコンテナーネットワークを設定できます。
ネットワーク管理者は、新規ノードがクラスターに追加される際に、ルーターを変更するか、ルーターを変更するスクリプトを作成する必要があります。
このプロセスを変化させて、あらゆるタイプのルーターで使用することができます。
30.3. コンテナーネットワーク用のノードのセットアップ
未使用の 11.11.x.0/24 サブネット IP アドレスをノードの Linux ブリッジに割り当てます。
# brctl addbr lbr0 # ip addr add 11.11.1.1/24 dev lbr0 # ip link set dev lbr0 up
新規ブリッジを使用するように Docker 起動スクリプトを変更します。デフォルトでは、起動スクリプトは
/etc/sysconfig/docker
ファイルです。# docker -d -b lbr0 --other-options
11.11.0.0/16 ネットワークのルーターへのルートを追加します。
# ip route add 11.11.0.0/16 via 192.168.2.2 dev p3p1
ノードで IP 転送を有効にします。
# sysctl -w net.ipv4.ip_forward=1
30.4. コンテナーネットワーク用のルーターのセットアップ
以下の手順は、複数の NIC を搭載した Linux ボックスがルーターとして使用されていることを前提としています。必要に応じて手順を変更して、特定のルーターに対応する構文を使用してください。
ルーターで IP 転送を有効にします。
# sysctl -w net.ipv4.ip_forward=1
クラスターに追加された各ノードのルートを追加します。
# ip route add <node_subnet> via <node_ip_address> dev <interface through which node is L2 accessible> # ip route add 11.11.1.0/24 via 192.168.2.1 dev p3p1 # ip route add 11.11.2.0/24 via 192.168.3.3 dev p3p2 # ip route add 11.11.3.0/24 via 192.168.3.4 dev p3p2