libvirt:再起動せずにdhcp-setupを変更


11

libvirtとkvmを使用してサーバーを仮想化しています。libvirtを設定してbridge-network-interfaceでdhcp-serverを起動し、vmのIPを提供します。すべてのVMは、そのMACに基づいて常に同じIPを取得します。これは次のように構成されます。

<dhcp>
 <range start='10.1.1.2' end='10.1.1.254' />
 <host mac='54:52:00:21:01:ba' name='virstvm' ip='10.1.1.10' />
 <host mac='00:16:36:2d:71:f9' name='secvm' ip='10.1.1.20' />
</dhcp>

問題:dhcpセクションに新しいホストを追加するたびに、すべてのvmを再起動するlibvirt-binを再起動する必要があります。新しいサーバーを追加するたびにダウンタイムが発生するため、これは解決策にはなりません。解決策はありますか?


ドメインと同様にxmlファイルを編集した後、virshを使用してネットワークを変更した後、ネットワークを再作成するだけの問題だと思ったのは良い質問です。しかし、そうではないようです。virsh net-dumpxmlは、libvirtに元のファイルがまだキャッシュされていることを明確に示しています。
3dinfluence

回答:


7

virshに追加されたnet-updateコマンドは、仮想ネットワークを再起動せずにdhcp-hostの更新を許可するはずです(まだテストしていません)。

男ヴァーシュ:

net-update networkコマンドセクションxml [--parent-index index] [[--live] [--config] | [ - 電流]]

既存のネットワーク定義の指定されたセクションを更新します。オプションで、ネットワークを破棄して再起動する必要なく、変更がすぐに有効になります。

commandは、「add-first」、「add-last」、「add」(add-lastの同義語)、「delete」、または「modify」のいずれかです。

セクションは、「bridge」、「domain」、「ip」、「ip-dhcp-host」、「ip-dhcp-range」、「forward」、「forward-interface」、「forward-pf」、「portgroup」のいずれかです。 "、" dns-host "、" dns-txt "、または" dns-srv "。各セクションは、変更される要素につながるxml要素階層の連結によって名前が付けられます。たとえば、「ip-dhcp-host」は、ネットワークの要素<host>内の<dhcp>要素内に含まれる要素を変更<ip>します。

xmlは、変更されるタイプの完全なxml要素のテキスト(例:「<host mac = "00:11:22:33:44:55 'ip =' 1.2.3.4 '/>」、または完全なxml要素を含むファイル。明確化は、提供されたテキストの最初の文字を調べることによって行われます-最初の文字が「<」の場合、それはxmlテキストであり、最初の文字が「<」でない場合、使用されるxmlテキストを含むファイルの名前。

--parent-indexオプションを使用して、要求された要素が複数の親要素のどれにあるかを指定します(0ベース)。たとえば、dhcp 要素は、ネットワーク内<host>の複数の<ip>要素のいずれかに含めることができます。parent-indexが提供されない場合、「最も適切な」<ip>要素(通常は既に<dhcp>要素を持っている唯一の要素)が選択されますが、-parent-indexが与えられた場合、その特定のインスタンスが<ip>変更を取得します。

--liveが指定されている場合、実行中のネットワークに影響します。--configが指定されている場合、永続的なネットワークの次の起動に影響します。--currentが指定されている場合、現在のネットワーク状態に影響します。--liveフラグと--configフラグの両方を指定できますが、-currentは排他的です。フラグを指定しないことは、-currentを指定することと同じです。


5

Ubuntu 10.04.4 LTSホスト上のlibvirtバージョン:0.7.5-5ubuntu27では、次の手順が機能しました。

  virsh net-dumpxml default > default.xml

  $EDITOR default.xml

  virsh net-destroy default
  virsh net-define default.xml
  virsh net-start default

これは、デフォルトネットワーク以外の他のネットワークでも機能します。例のdefaultという単語をネットワークの名前に置き換えるだけです。


私はこれを試しました。新しいネットワーク構成は実際に有効になりましたが、すべてのVMはネットワーク接続を失い、再起動する必要がありました。
user1202136 14年

@ user1202136:どのようなネットワーク構成の変更を行いましたか?また、どのようなVMを使用していましたか?
pefu

Xen準仮想化VMを使用しました。ネットワーク構成の変更に関して、新しい静的DHCPエントリを追加しました。
user1202136 14年

dnsmaqを手動で再起動する以外に、ネットワークサービスを再起動することをお勧めします。
ブレノレイタン

@BrenoLeitão:どのくらい正確ですか?そして、あなたのコメントはLinuxディストリビューションのどのバージョンに適用されますか?
ペフ

2

@pefuのソリューションはCentOS 6.4でもそれを実現しました!

net-editin を使用しvirsh/var/lib/libvirt/network/default.xmlもXMLファイルは更新されず、実行中のネットワーク構成の状態も変更されませんでした。

再実行しnet-editても、再起動後に編集されたバージョンが表示されましたが、ロードされていませんでした!

それを実際のXMLファイルにエクスポートし、編集してリロードすることができます!


1

libvirtはdhcpサーバーにdnsmaqを使用していると思います。たぶん、dnsmasqを再起動すれば、すべてうまくいくでしょうか?


1

メーリングリストでの議論の後、私は知りました:これは現在全く不可能です!


これが推奨されるかどうかはわかりませんが、通常はdnsmasqプロセスを強制終了し、実行中の引数を使用して開始します。
bkzland

答えは、Linuxディストリビューションと適用するバージョンを指定する必要があります。以下で説明したように、Ubuntu 10.04 LTS以降では可能です。
ペフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.