このセクションでは、NSX Advanced Load Balancer が OpenStack に対するアクセス権がない(Orchestrator がない)環境で NSX Advanced Load Balancer を OpenStack クラウドにインストールする場合の手順について説明します。
アクセス権なしモードでは、NSX Advanced Load Balancer が Orchestrator として OpenStack にアクセスすることはできません。サービス エンジンのプロパティを手動で追加、削除、または変更できるのは、管理者のみです。サーバとネットワークは、NSX Advanced Load Balancer によって自動検出できないため、手動で構成する必要があります。
アクセス権なし OpenStack Linux クラウドに NSX Advanced Load Balancer をインストールするには、次の手順を実行します。
前提条件
NSX Advanced Load Balancer を Orchestrator なしモードでインスタンス化する必要があります。
手順
- [インフラストラクチャ] > [クラウド] の順に移動し、アクセス権なしの OpenStack クラウドを作成します。
- IP アドレス管理を [IPv4 DHCP を使用] または [IPv6 DHCP を使用] として選択し、[DHCP] セクションの関連するチェックボックスをオンにします。
- [SE qcow2] イメージをダウンロードします。このイメージは Glance にプッシュされます。
- それぞれのテナントの下にある OpenStack インスタンス(この場合は「admin」)にログインし、[プロジェクト] > [コンピュート] > [イメージ] の順に移動します。[イメージの作成] をクリックします。[形式] ドロップダウン リストから [QCOW2] オプションを選択し、ダウンロードした SE QCOW2 のイメージ ファイルを指定します。
- se.qcow2 イメージを Glance にアップロードします。
これは、NSX Advanced Load Balancer ネットワークとして使用できる既存のネットワークがない場合にのみ必要です。
このネットワークは、SE がコントローラと通信するために使用します。そのため、新しいネットワークを作成するか、または既存のネットワークを使用して、そのネットワーク上に作成された仮想マシンがコントローラにアクセスできることを確認します。
- [プロジェクト] > [ネットワーク] > [ネットワーク] の順に移動して、
avimgmt
ネットワークを作成します。[ネットワーク] タブでネットワーク名を指定します。また、[サブネット] タブで、ネットワークに対して適切なサブネットを指定します。これにより、ネットワークに関連付けられたサブネットが作成されます。有効な [ネットワーク アドレス] と [ゲートウェイ IP アドレス] を指定します。[ゲートウェイ IP] が指定されていない場合、ネットワークの最初の値がデフォルトで割り当てられます。ゲートウェイ IP アドレスを無効にするには、[ゲートウェイの無効化] チェックボックスをオンにします。高度な設定の詳細は、[サブネットの詳細] タブで指定できます。この手順は、新しい外部ネットワークを作成する必要がある場合にのみ実行してください。送信ネットワークとなり、フローティング IP アクセスを提供するネットワークを作成します。たとえば、[ネットワーク] タブで [ネットワーク名] に [provider1] と入力し、その他の詳細をそれぞれのタブで指定します。
この手順は、外部接続用に新しいルーターを作成する必要がある場合にのみ実行してください。ルーター名、管理状態、および外部ネットワークの詳細を指定して、ルーターを作成できます。
- ルーターを作成するには、[プロジェクト] > [ネットワーク] > [ルーター] の順に移動します。[Create Router] をクリックします。[]
- また、Web サーバを
avimgmt
ネットワークに展開して、テストを実行することもできます。たとえば、これは OS タイプのサーバにすることができ、ネットワーク トポロジーは次のようなものです。 - [プロジェクト] > [ネットワーク] > [セキュリティ グループ] の順に移動してセキュリティ グループを作成し、それをサービス エンジンに関連付けて、ICMP トラフィックと SSH および HTTP トラフィックが許可されるようにします。
- [プロジェクト] > [コンピュート] > [インスタンス] の順に移動して、NSX Advanced Load Balancer SE インスタンスを作成します。[インスタンスの起動] をクリックします。SE は、Heat テンプレートを使用して作成することもできます。詳細については、「アクセス権なしの OpenStack クラウドでの Heat テンプレートを使用したサービス エンジンの作成」を参照してください。
- [ソース] タブで、インスタンス化する必要がある SE 用の適切な qcow2 イメージを選択します。
- [フレーバー] タブで、SE に対応するフレーバーを選択します。この例では、これは [m1.small] になります。
- [ネットワーク] タブで、SE をインスタンス化するための [avimgmt] ネットワークを選択します。
- SE が生成されます。
- フローティング IP をインスタンスに関連付けます。この手順は、SE に直接アクセスできない場合にのみ実行してください。
- 別のインターフェイスを SE に接続します。たとえば、データ vNIC です。
- SE は、1 つの管理 vNIC と 1 つのデータ vNIC(後者はフローティング IP に関連付けられます)を使用して作成されます。
SE がコントローラに接続するため、各クラウドの NSX Advanced Load Balancer ユーザー インターフェイス(「VMware vCenter Server への NSX Advanced Load Balancer のインストール」セクションで説明)から SE のトークンをコピーし、SE の /opt/avi/scripts/init_system.py でスクリプトを実行します。スクリプトによって、コントローラの IP アドレスとトークンが要求されます(トークンは、単一の SE 用であり、60 分後に期限切れになります)。このスクリプトを実行するには、root アクセス権が必要です。
root@Avi-Service-Engine:/opt/avi/scripts# ./init_system.py -h usage: init_system.py [-h] -c CONTROLLER [-d] [-i MGMT_IP] [-m MGMT_MASK] [-g GATEWAY] [-t TOKEN] [-r] optional arguments: -h, --help show this help message and exit -c CONTROLLER, --controller CONTROLLER Controller IP address. -d, --dhcp DHCP -i MGMT_IP, --mgmt-ip MGMT_IP IP address for Management Interface (eg. 192.168.10.10) -m MGMT_MASK, --mgmt-mask MGMT_MASK Subnet mask for Management interface (eg. 24 or 255.255.255.0) -g GATEWAY, --gateway GATEWAY Default gateway -t TOKEN, --token TOKEN Auth token generated in the Controller for this SE -r, --restart Restart SE for changes to take effect root@Avi-Service-Engine:/opt/avi/scripts# ./init_system.py -c 172.16.0.10 -d -i 172.16.0.7 -m 255.255.255.0 -g 172.16.0.1 -t c708a2cd-69e2-4057-923d-a09de94914f6 -r
SE を再起動して、コントローラに接続します。
- ユーザー インターフェイスの [インフラストラクチャ] > [クラウド][クラサービス エンジン] リストで、各クラウドの下に NSX Advanced Load Balancer SE が表示されるまで待ちます。
- 各 SE を編集し、各データ ネットワークの DHCP を有効にします。
- 仮想サービスを作成し、データ ネットワークから IP アドレスを選択します。
これはアクセス権なしのクラウドであるため、仮想サービス構成で「フローティング VIP」を構成することはできません。コントローラが OpenStack Nova と通信して、割り当てられたフローティング IP を仮想 IP アドレスに割り当てるようにするには、以下のように、CLI を使用して、Neutron ポートと VIP をバインドする必要があります。
VIP アドレスにフローティング IP が必要な場合は、VIP アドレスを含むネットワークにポートを作成します。
$> neutron port-create --fixed-ip subnet_id=subnet ID of the network in which VIP is placed,ip_address=VIP IP --name anyname network ID in which the VIP is being placed
上記の構文の例を次に示します。
$> neutron port-create --fixed-ip subnet_id=55daee6b-32b7-4f9c-945e-bcd2acb7272f,ip_address=172.16.0.231 --name test200vip f14eb427-4087-4dce-8477-479e10804ba1
フローティング IP を作成し、該当の VIP アドレスに関連付けます。
$> neutron floatingip-associate bf7c870e-6608-4512-b73d-faab5b18af04 ff67ae44-9874-43e6-a194-f336b9b1d7b5
- 上記で作成した仮想サービスに関連付けるサーバのプールを作成します。この場合、サーバは、手順 16 で Horizon ユーザー インターフェイスを使用して作成したサーバです。
インフラストラクチャ マネージャに対するアクセス権がないため、
select-servers-by-network
機能は使用できません。したがって、IP アドレスを手動で指定します。 - 次のように、仮想サービスが稼動している必要があります。
- 各サービス エンジンを調べ、VIP が関連付けられていることを確認します。
Neutron 拡張機能 allowed-address-pairs を使用すると、特定の CIDR を含むトラフィックをポートから出力できます。NSX Advanced Load Balancer は、この拡張機能を使用して VIP を SE データ ポートに割り当てることにより、それらのデータ ポートからの VIP トラフィックの出力を可能にします。
セキュリティ グループでパケットがドロップされないようにするため、allowed-address-pairs を SE ポートに追加します。ML2/OVS プラグインの場合は、各 SE ポートまたは特定の VIP IP アドレスに対して
0.0.0.0/0
が指定されているallowed-address-pairs
を 1 回追加することができます。neutron port-update da0e1e9a-312d-41c2-b15f-f10ac344ef03 --allowed-address-pairs type=dict list=true ip_address=192.168.1.222/32
True の場合、
allowed-address-pairs
拡張機能が使用されます。基盤となるネットワーク プラグインでこの機能がサポートされていない場合、他の手段で同様の効果を得ることができない限り、VIP トラフィックは機能しません。基盤となるネットワークでポートのセキュリティ/ファイアウォール/スプーフィング フィルタ ルールをオフにできる場合は、このオプションをオフにすることが可能です。port-security が使用可能な場合は、SE のデータ vNIC の Neutron ポートで port-security を無効にできます。これは、上記の方法の代替手段の 1 つです。次のように、いずれかのインスタンス(サービス エンジン)に SSH 接続できることを確認します。
- オプション:NSX Advanced Load Balancer IP アドレス管理の使用が必要な場合は、IP アドレス管理ネットワークを作成し、IP アドレス管理テンプレートを作成してクラウドに関連付けることで同じ操作を行えます。したがって、VIP の IP アドレスの自動割り当てが実行されます。