ラベル neutron の投稿を表示しています。 すべての投稿を表示
ラベル neutron の投稿を表示しています。 すべての投稿を表示

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を使用していることを前提とする。
  • /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を調べます。
# 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を削除(あるいは別名に)します。