2015年10月7日水曜日

OpenContrailのSimple Gatewayの作り方 (改訂版)

以前このポストでSimple Gatewayの作り方を書きましたが、2.20で再度試したところバグが直っていて作成方法が少し変わったので再度ポストします。

下図のようにFloatingIPやインターネットに出て行くIPアドレスとして203.0.113.0/24を割り当てます。
この仮想ネットワークはSimpleゲートウェイを作成する前に作成しておきます。
vhost0とRouterの間は適宜接続できるように設定してださい。Compute NodeのDefault GatewayはRouterのアドレスになります。
テスト環境などでグローバルIPアドレスをFloatingIPに割り当てられない場合は、RouterでNATできるように事前に設定してください。
この例では作成されるテナント(プロジェクト)はadminで仮想ネットワーク名はpublicと設定します。


このネットワークに対してSimple gatewayを作成します。


Simple GatewayはコンピュートノードのvRouterをゲートウェイとして利用し、コンピュートノードをゲートウェイとするため、コンピュートノードコマンドを実行します。
まず、以下のディレクトリをexport
export PYTHONPATH=/usr/lib/python2.7/dist-packages/contrail_vrouter_api/gen_py/instance_service/
export PYTHONPATH=/usr/lib/python2.7/dist-packages/nova_contrail_vif/gen_py/instance_service/

次に、provision_vgw_interface.pyでゲートウェイを作成する
python /opt/contrail/utils/provision_vgw_interface.py --oper create --interface vgw1 --subnets 203.0.113.0/24 --route 0.0.0.0/0 --vrf default-domain:admin:public:public

--vrfの引数がdefault-domain:admin:public:publicと仮想ネットワーク名が重なっていますが、これは設定するルーティングインスタンス名です。


この設定をすると、コンピュートノードはvhost経由で外部ネットワークと通信を行います。
インターネットのゲートウェイルータやゲートウェイサーバには仮想ネットワークに通信できるようにルーティングの追加を忘れないようにしてください。

ここまで設定すると、vRouterに VGW1と --routeで設定したルーティング情報が追加されます。
後は仮想マシンにpublicからIPアドレスを割り当てるか、publicからFloating IPを作成し、仮想マシンに割り当てれば外部ネットワークに接続できます。