libvirt: Ubah dhcp-setup tanpa memulai ulang

11

Saya menggunakan libvirt dan kvm untuk memvirtualisasi server saya. Saya mengkonfigurasi libvirt untuk memulai dhcp-server pada bridge-network-interface untuk memberikan vm ips mereka. Setiap VM selalu mendapatkan ip yang sama berdasarkan mac-nya, ini dikonfigurasi seperti ini:

<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>

Masalahnya: Setiap kali saya menambahkan host baru ke bagian dhcp saya harus me-restart libvirt-bin yang me-restart semua vm saya . Ini tidak bisa menjadi solusi karena itu berarti downtime setiap kali saya menambahkan Server baru. Apakah ada solusinya?

theomega
sumber
Pertanyaan bagus saya pikir itu hanya masalah membuat ulang jaringan setelah perubahan ke jaringan menggunakan virsh setelah Anda mengedit file xml seperti itu dengan domain. Tapi ini tampaknya tidak menjadi masalah. Seperti virsh net-dumpxml jelas menunjukkan bahwa libvirt masih memiliki file asli di-cache.
3dinfluence

Jawaban:

7

Perintah net-update yang ditambahkan di virsh harus memungkinkan pembaruan dhcp-host tanpa memulai ulang jaringan virtual (saya belum mengujinya).

man virsh:

bagian perintah jaringan net-update xml [--indeks-indeks indeks] [[--live] [--config] | [--arus]]

Perbarui bagian yang diberikan dari definisi jaringan yang ada, dengan perubahan yang secara langsung berlaku, tanpa perlu menghancurkan dan memulai kembali jaringan.

perintah adalah salah satu dari "add-first", "add-last", "add" (sinonim untuk add-last), "delete", atau "modifikasi".

bagian adalah salah satu dari "jembatan", "domain", "ip", "ip-dhcp-host", "ip-dhcp-range", "maju", "antarmuka-maju", "maju-pf", "portgroup-maju", "portgroup "," dns-host "," dns-txt ", atau" dns-srv ", setiap bagian diberi nama dengan gabungan dari hirarki elemen xml yang mengarah ke elemen yang diubah. Misalnya, "ip-dhcp-host" akan mengubah <host>elemen yang terkandung di dalam <dhcp>elemen di dalam <ip>elemen jaringan.

xml adalah teks elemen xml lengkap dari jenis yang sedang diubah (mis. "<host mac =" 00: 11: 22: 33: 44: 55 'ip =' 1.2.3.4 '/> ", atau nama dari file yang berisi elemen xml lengkap. Disambiguasi dilakukan dengan melihat karakter pertama dari teks yang disediakan - jika karakter pertama adalah "<", itu adalah teks xml, jika karakter pertama bukan "<", itu adalah nama file yang berisi teks xml yang akan digunakan.

Opsi --parent-index digunakan untuk menentukan dari beberapa elemen induk mana elemen yang diminta berada dalam (berbasis-0). Misalnya, <host>elemen dhcp dapat berupa salah satu dari banyak <ip>elemen dalam jaringan; jika indeks induk tidak disediakan, elemen "paling tepat" <ip>akan dipilih (biasanya satu-satunya yang sudah memiliki <dhcp>elemen), tetapi jika - orangtua-indeks diberikan, contoh tertentu dari <ip>akan mendapatkan modifikasi.

Jika --live ditentukan, memengaruhi jaringan yang sedang berjalan. Jika --config ditentukan, memengaruhi startup berikutnya dari jaringan persisten. Jika --current ditentukan, memengaruhi status jaringan saat ini. Kedua flag --live dan --config dapat diberikan, tetapi --current bersifat eksklusif. Tidak menentukan bendera apa pun sama dengan menentukan --current.

Kees Boogert
sumber
5

Prosedur berikut ini berfungsi untuk saya dengan Versi libvirt: 0.7.5-5ubuntu27 pada host Ubuntu 10.04.4 LTS:

  virsh net-dumpxml default > default.xml

  $EDITOR default.xml

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

Ini juga berfungsi untuk jaringan lain di samping jaringan default. Cukup ganti kata default dalam contoh dengan nama jaringan.

pefu
sumber
Saya baru saja mencoba yang ini. Sementara konfigurasi jaringan baru memang berpengaruh, semua VM kehilangan konektivitas jaringan dan perlu di-boot ulang.
user1202136
@ user1202136: Perubahan konfigurasi jaringan seperti apa yang Anda lakukan? Dan jenis VM apa yang Anda gunakan?
pefu
Saya menggunakan Xen para-virtualized VMs. Mengenai perubahan konfigurasi jaringan, saya menambahkan entri DHCP statis baru.
user1202136
Selain me-restart dnsmaq secara manual, Anda lebih suka me-restart layanan jaringan.
Breno Leitão
@Breno Leitão: Bagaimana tepatnya? Dan untuk versi rasa Distribusi Linux mana komentar Anda berlaku?
pefu
2

Solusi @ pefu juga melakukannya untuk CentOS 6.4!

Menggunakan net-editdi virshtidak memperbarui file XML di /var/lib/libvirt/network/default.xmlatau mengubah keadaan konfigurasi jaringan yang sedang berjalan.

Menjalankan kembali net-editmenunjukkan versi yang diedit bahkan setelah reboot tetapi itu tidak dimuat!

Mengekspornya ke file XML nyata, mengedit dan memuatnya berfungsi!

Hakim
sumber
1

Saya pikir libvirt menggunakan dnsmaq untuk server dhcp-nya. Mungkin Anda bisa me-restart dnsmasq dan semuanya akan baik-baik saja?

mxc
sumber
1

Setelah diskus di Mailinglist saya menemukan: saat ini tidak mungkin sama sekali!

theomega
sumber
Saya tidak tahu apakah ini direkomendasikan, tetapi saya biasanya hanya mematikan proses dnsmasq dan memulainya dengan menggunakan argumen yang sedang dijalankan.
bkzland
Jawabannya harus menentukan Distribusi Linux dan versinya. Seperti yang telah saya tunjukkan di bawah ini, dimungkinkan di Ubuntu 10,04 LTS dan yang lebih baru.
pefu