Neutoron serverがpackage upgradeにより起動しなくなった場合の対応方法
Packageをアップデートした後、以下のエラーでNeutron serverが起動しなくなった。
# /etc/init.d/neutron-server start neutron-db-check: ERROR: neutron database does not have version information. You must run the "neutron-db-manage stamp" command before starting neutron services.以下のようにするとこの問題は解決した。
# neutron-db-manage --config-file /etc/neutron/neutron.conf stamp havana No handlers could be found for logger "neutron.common.legacy" INFO [alembic.migration] Context impl MySQLImpl. INFO [alembic.migration] Will assume non-transactional DDL.
OpenStackのGatewayのないネットワーク上のVMでuser dataとmeta data取得の為のrouteを設定する
OpenStackでは、AWS EC2と同様に169.254.169.254にhttpでアクセスできる。
Gatewayが設定されていないSubnetに接続されているゲストマシンから、それらの情報を取得するには次の設定をする。なお、構成としてNeutronを使用していることを前提とする。
Gatewayが設定されていないSubnetに接続されているゲストマシンから、それらの情報を取得するには次の設定をする。なお、構成としてNeutronを使用していることを前提とする。
- /etc/neutron/dhcp_agent.iniに次の設定をする。
enable_isolated_metadata = True
- neutron-dhcp-agentが実行されているマシン(いわゆるNetwork node)をリスタートする。
なお、下記のようにdhcp agentの再起動だけでよさそうにも思えるが、RDO(Havana)ではうまく行かなかった。# service neutron_dhcp_agent restart
設定が正常に反映された場合、dnsmasqの--dhcp-optsfileに指定されている設定ファイルの内容は、次のように169.254.169.254への静的ルートを含む。# cat /var/lib/neutron/dhcp/04911b6c-d75a-4744-b604-c99a342ca95f/opts tag0,option:classless-static-route,169.254.169.254/32,192.168.150.101 tag0,249,169.254.169.254/32,192.168.150.101
- ゲストマシンの起動 ゲストOSのrouteコマンドでrouting tableを確認すると、169.254.169.254が設定されていることが分かる。
$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 169.254.169.254 192.168.150.101 255.255.255.255 UGH 0 0 0 eth0 192.168.150.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
OpenStackのNeutronでfloating IPを設定する例
内部Networkの192.168.50.100を外部ネットワークにマッピングする例を示します。
まず、内部ネット192.168.50.100のIPをもっているportのPORT_IDを調べます。
まず、内部ネット192.168.50.100のIPをもっているportのPORT_IDを調べます。
# neutron port-list
+--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+
| id | name | mac_address | fixed_ips |
+--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+
| 02cd18bc-768b-4b9b-937b-40dfe66fe33e | | fa:16:3e:41:3f:01 | {"subnet_id": "2cc97205-b498-4e53-8fe5-21dd6f5da317", "ip_address": "192.168.30.128"} |
| 897101af-581f-42da-b8b6-56b8352cf53f | | fa:16:3e:b2:47:71 | {"subnet_id": "ad914263-519c-40eb-a9b4-421485e5ece3", "ip_address": "192.168.50.101"} |
| ace36996-0315-4a7d-8eaa-379bb67bd688 | | fa:16:3e:95:40:18 | {"subnet_id": "ad914263-519c-40eb-a9b4-421485e5ece3", "ip_address": "192.168.50.100"} |
| bc538543-d817-48a9-9dd3-9803fe6cf058 | | fa:16:3e:63:c9:12 | {"subnet_id": "ad914263-519c-40eb-a9b4-421485e5ece3", "ip_address": "192.168.50.1"} |
+--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+
次で、以下のように実際にマッピングを作成します。
# neutron floatingip-create --port-id ace36996-0315-4a7d-8eaa-379bb67bd688 --fixed-ip-address 192.168.50.100 ext-net Created a new floatingip: +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | fixed_ip_address | 192.168.50.100 | | floating_ip_address | 192.168.30.129 | | floating_network_id | 2635ab5a-0784-4898-b91d-dbe1228f31cf | | id | ba6e13f3-0768-4d8f-8cd6-91217ea558aa | | port_id | ace36996-0315-4a7d-8eaa-379bb67bd688 | | router_id | 612dafe5-c553-4103-a5d2-96e379ed2e50 | | tenant_id | 4df9786b5d044f5e8ae1593e105546d4 | +---------------------+--------------------------------------+
別の方法
なお、次のようにfloating IPを作成して、その後、associateすることもできる。# neutron floatingip-create ext-net +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | fixed_ip_address | | | floating_ip_address | 192.168.158.82 | | floating_network_id | 53fe6eb3-6558-47a5-a758-3b2aa1f102ce | | id | b4cd47df-92e1-433d-b48f-152b79063984 | | port_id | | | router_id | | | tenant_id | c5f8ac76b2a541c09da7c0fa8f23c03f | +---------------------+--------------------------------------+ # neutron floatingip-associate b4cd47df-92e1-433d-b48f-152b79063984 ace36996-0315-4a7d-8eaa-379bb67bd688上記こまんどの第二引数はfloatingipのID、第三引数はport_idを表す。
Openstack (neutron)がつくるNetwork Interfaceの関係
仮想マシン
OpenStackでneutronとopenvswitchを使った構成では、仮想マシン毎に 以下のような4つのインターフェイスが作成される。最初の3文字まはた4文字が異なり後は同じ数値の組です。なお、これは、nova.confに以下の設定がある場合です。
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
- qbr655843be-3b
- qvb655843be-3b
- qvo655843be-3b
- tap655843be-3b
tapから始まるI/FはQEMU (KVM)などが作るゲストOSに接続されている。それがqbrから始まるBridgeに接続されている。 Bridgeの構成は、次のようにbrctrlコマンドで確認できる。
# brctl show
bridge name bridge id STP enabled interfaces
qbr655843be-3b 8000.f258a8426856 no qvb655843be-3b
tap655843be-3b
qvbとqvoは、virtual ethernet tunnel (veth)の両端のデバイスである。qvbはBridge側に、qvoはOpen vSwitch側に接続されている。
DHCP agent
DHCP agentのネットワーク構成を下図に示す。
テナントネットワークごとのDHCPサーバは、独自のnetwork namespaceで実行されている。それは、virtual ethernet tunnelを経由してグローバルなnetowrk namespaceでOpen vSwitchに接続される。
なお、network namespaceの一覧を表示させるには次のようにする
# ip netns qdhcp-26ac80d0-9f3d-46bf-9c04-27ecdcbd7800 qrouter-f53f573b-5c5f-4136-af7b-c7879cde9ed3 qrouter-d1982370-acba-4861-b706-185ccfd52cce qdhcp-6e1aec2f-ad9c-4aec-b49e-cc5a85a1f1e5また、次のようにnetwork namespaceを指定して、コマンド実行することで、その空間でのinterface一覧を取得できる。
# ip netns exec qdhcp-26ac80d0-9f3d-46bf-9c04-27ecdcbd7800 ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
ns-9e1da44f-f2 Link encap:Ethernet HWaddr FA:16:3E:AA:A4:B2
inet addr:10.5.20.3 Bcast:10.5.20.255 Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:feaa:a4b2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:468 (468.0 b) TX bytes:468 (468.0 b)
neutronコマンドがAuthentication requiredを返す際の対処法
neutronがAuthentication requiredを返してかつ、/var/log/neutron/server.logに次のような記録がある場合、古い認証キーが使われている可能性があります。
2014-01-26 16:16:15.038 2814 WARNING keystoneclient.middleware.auth_token [-] Verify error: Command 'openssl' returned non-zero exit status 4 2014-01-26 16:16:15.039 2814 WARNING keystoneclient.middleware.auth_token [-] Authorization failed for token 7cd65acbdf1048d97f6629c2614eb9f8このような事は、OpenStackコンポーネントのアップデートなどを繰り返しているうちに発生することがあります。 対処法は、/var/lib/neutron/keystone-signingを削除(あるいは別名に)します。
登録:
投稿 (Atom)