OpenStackの仮想ネットワーク管理機能「Quantum」の基本的な設定 3ページ
ネットワークノードの設定
ネットワークノードでは、制御ノードで設定したquantum.confおよびapi-paste.iniファイルの編集に加え、以下の設定が必要だ。
- L3 Agentの設定
- DHCP Agentの設定
- プラグインの設定
- sudoersファイルの設定
- ブリッジ関連のカーネルパラメータ変更
- dnsmasqパッケージのバージョン確認とアップデート
なお、L3 AgentやDHCP Agent、プラグインの設定作業はOS_USERNAMEやOS_PASSWORD、OS_AUTH_URL、OS_TENANT_NAMEといった環境変数を定義した状態で実行する必要がある。以下のようにこれらを定義しておこう。
$ export OS_USERNAME=<管理用ユーザー> $ export OS_TENANT_NAME=<管理用のテナント名> $ export OS_PASSWORD=<管理用ユーザーのパスワード> $ export OS_AUTH_URL=http://<keystoneが稼働しているホスト名>:5000/v2.0/
さて、まずはL3 Agentの設定だが、これはquantum-l3-setupコマンドを実行するだけで良い。
# quantum-l3-setup Please select a plugin from: linuxbridge openvswitch Choice: linuxbridge ←使用するプラグインを指定する Quantum plugin: linuxbridge Configuration updates complete!
続いてDHCP Agentの設定だが、こちらはquantum-dhcp-setupコマンドで行える。
# quantum-dhcp-setup Please select a plugin from: linuxbridge openvswitch Choice: linuxbridge ←使用するプラグインを指定する Quantum plugin: linuxbridge Please enter the Quantum hostname: 192.168.100.20 ←AMQPサーバーが稼働しているホスト名を指定する Configuration updates complete!
quantum-dhcp-setupコマンドはquantum.confの設定ファイルを書き換えるため、コマンド実行後にquantum.confおよびapi-paste.iniファイルを制御ノードで設定したものと同じになっているか確認しておこう。
Plugin Agentであるlinuxbridge-agentの設定については、/etc/quantum/linuxbridge/linuxbridge_conf.iniというファイルに記述されている。ここで設定が必要なのは「tenant_network_type」および「sql_connection」、「network_vlan_ranges」、「physical_interface_mappings」の4つだ。
まずtenant_network_typeだが、こちらは通常は「vlan」を指定する。
tenant_network_type = vlan
sql_connectionでは以下の形式で使用するデータベースの情報を記述する。
sql_connection = <プロトコル>//<ユーザー名>:<パスワード>@<ホスト名>:<ポート番号>/<データベース名>
たとえばデータベースにMySQLを使用し、ユーザー名およびパスワードが「quantum」、データベースのホスト名が「192.168.100.20」、データベース名が「quantum_linux_bridge」(quantum-server-setupコマンドがデフォルトで作成するデータベース名)、だった場合、下記のようになる。
sql_connection = mysql://quantum:quantum@192.168.100.20:3306/quantum_linux_bridge
「physical_interface_mappings」は、仮想ネットワークの作成に利用するネットワークインターフェイスの指定と、それを参照するための名称の定義を行うものだ。たとえばeth0を使って仮想ネットワークを作成し、そのネットワークを「physnet1」という名称で参照する場合、次のようになる。
physical_interface_mappings = physnet1:eth0
eth0以外のネットワークインターフェイスを仮想ネットワークの作成に使用する場合、eth0の部分を適切なものに置き換えておこう。
「network_vlan_ranges」は、使用するVLANのタグの範囲を指定するものだ。たとえば先に定義したphysnet1でVLANのタグとして1000から2999の間の数を利用する場合、以下のようになる。
network_vlan_ranges = physnet1:1000:2999
通常この値は適当なもので問題ないが、利用できるVLANのタグに制限がある場合は変更が必要だ。
続いて、Quantum関連サービスを実行するquantumユーザーがroot権限でコマンドを実行できるよう、/etc/sudoersファイルに下記を追加しておく。
quantum ALL=(ALL) NOPASSWD:ALL
カーネルパラメータの設定は、ネットワークノードにおいてiptablesによるパケットの転送を正しく行うために必要だ。Linuxカーネルでは、bridge-nf-call-iptablesおよびbridge-nf-call-ip6tables、bridge-nf-call-arptablesといったパラメータで、ブリッジデバイスを通過するTCP/IPパケットについてiptablesによるフィルタリングを適用するかどうかを指定できる。Quantumを利用する場合、これらの値が0になっている(フィルタリングを適用しない)設定となっている必要がある。
これらの値は、次のようにcatコマンドを実行することで確認できる。
# cat /proc/sys/net/bridge/bridge-nf-call-iptables 0 # cat /proc/sys/net/bridge/bridge-nf-call-ip6tables 0 # cat /proc/sys/net/bridge/bridge-nf-call-arptables 0
もし1に設定されている項目があった場合、以下のようにして「0」に変更しておこう。
# echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables # echo 0 > /proc/sys/net/bridge/bridge-nf-call-ip6tables # echo 0 > /proc/sys/net/bridge/bridge-nf-call-arptables
また、念のためIPフォワーディングが有効になっていることも確認しておく。
# cat /proc/sys/net/ipv4/ip_forward 1
なお、これらのデフォルト値は/etc/sysctl.conf内に記述されているのだが、Red Hat Enterprise Linux 6.3(およびその互換環境)ではbridge-nf-call-iptablesおよびbridge-nf-call-ip6tables、bridge-nf-call-arptablesの値が正しく反映されないというバグが確認されている。もし/etc/sysctl.conf内でこれらの値を0に設定しているにも関わらずデフォルト値が1になっている場合は、下記を/etc/rc.localファイルに記述しておくことで対処できるとのことだ。
echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables echo 0 > /proc/sys/net/bridge/bridge-nf-call-ip6tables echo 0 > /proc/sys/net/bridge/bridge-nf-call-arptables
これらに加え、DHCP Agentが利用するdnsmasqパッケージのバージョンの確認も必要だ。記事作成時点でCentOS 6.3で提供されているdnsmasqのバージョンは2.48なのだが、DHCP Agentはdnsmasq 2.59以上を必要とする。そのため、より新しいバージョンのdnsmasqを別途インストールする必要がある。今回は、DAGリポジトリで提供されているdnsmasqパッケージをインストールすることにする。DAGリポジトリ(x86_64向け)もしくはDAGリポジトリ(x86向け)からdnsmasqパッケージをダウンロードしてインストールしておこう。たとえばdnsmasq-2.63-1.el6.rfx.x86_64.rpmというパッケージをインストールする場合、以下のようにすれば良い。
rpm -Uvh http://apt.sw.be/redhat/el6/en/x86_64/extras/RPMS/dnsmasq-2.63-1.el6.rfx.x86_64.rpm
以上の設定がすべて完了したら、serviceコマンドでサービスを稼働させておく。
# service quantum-linuxbridge-agent start # service quantum-l3-agent start # service quantum-dhcp-agent start