Создание виртуальной машины с использованием библиотеки libvirt - github2wiki/3213r5t-3 GitHub Wiki

Установка средств виртуализации

Для настройки гипервизора KVM в CentOS 7 необходимо установить всего несколько пакетов, которые не входят в базовую установку системы.

Используйте команду ниже чтобы выполнить установку недостающих пакетов:

yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install

Включаем автозапуск службы libvirtd:

systemctl enable libvirtd && systemctl start libvirtd

Далее необходимо выполнить перезагрузку системы. Теперь проверьте загрузились ли модули ядра kvm и kvm_intel (только процессоры Intel). Для этого выполните команду:

# lsmod | grep kvm
kvm_intel             162153  0
kvm                   525259  1 kvm_intel

В случае успеха, у вас результат выполнения команды должен быть аналогичен моему. Для проверки подключения к KVM выполните команду:

virsh sysinfo

Создание хранилища для ВМ

Выполним команду для создания представления пула хранения данных:

# virsh pool-define-as storage dir - - - - "/ storage"
Pool images defined

Для примера я использовал каталог /images. Вам нужно указать свой путь к каталогу для хранения файлов образов гостевых систем.

Проверим есть ли в списке добавленный нами пул хранения данных:

# virsh pool-list --all
Name State Autostart
-------------------------------------------
storage inactive no

Запускаем хранилище:

# virsh pool-start storage
Pool images started

Закидываем образ CentOS на сервер

С помощью WinSCP (для Windows) по адресу /var/lib/libvirt/boot/ Для доступа к /boot – потребуется root-права. (Как вариант, подключаться WinSCP из под root’a) .

Установка SPICE для подключения к ВМ

источник(1) источник(2)

Installing Spice

_1. If you have a KVM Virtual Machine that is currently using VNC as the console (the old default), after upgrading to version 0.9.4-23 (or higher) for libvirt, install the following RPMS on the host: _

# yum install spice-server spice-client spice-protocol

_With CentOS 6.3 and later, you may also want to install virt-viewer. _

_2. If the host machine is a fully graphical install, you might also want to install the following optional RPMS: _

yum install cairo-spice ffmpeg-spice-libs ngspice pixman-spice spice-glib spice-gtk spice-gtk-python spice-gtk-tools spice-xpi

Cоздание ВМ

Создаем вм

# sudo virt-install -n cluster31 \
--ram 1024 --arch=x86_64 \
--vcpus=1 --cpu host --check-cpu \
--os-type linux --os-variant=rhel6 --boot cdrom,hd,menu=on \
--hvm /
--cdrom=/var/lib/libvirt/boot/CentOS64minim.iso \
--disk pool=storage,size=30,bus=virtio \
--disk pool=storage,size=20,bus=virtio \
--disk pool=storage,size=20,bus=virtio \
--disk pool=storage,size=20,bus=virtio \
--network=bridge:br1 \
--network=bridge:br2 \
--graphics spice,listen=0.0.0.0,password=Cisco1! \
--video qxl \
--noautoconsole --watchdog default,action=reset --virt-type=kvm \
--autostart

Редактируем конфигурацию ВМ

sudo virsh edit cluster31

В появившемся тексте ищем строку с "autoport" (для поиска в области за ползунком "поиск по фразе" осуществляется путёмм ввода символа "/" и фразой ,или "?" и фразой за ним, для поиска перед ползункомю. Пример:"/Смысл Жизни")и редактируем её.

Изначальный вариант:

<graphics type='spice' autoport='yes' ...>

Конечный вариант для первой ВМ. Для оставшихся двух, к номеру порта прибавляем единицу:

<graphics type='spice' port='5900' autoport='no' ...>

Для того что бы к ВМ можно было поключиться нужно открыть порты 5900,5901,5902:

sudo firewall-cmd --zone=public --add-port=5900/tcp --permonent

sudo firewall-cmd --zone=public --add-port=5901/tcp --permonent

sudo firewall-cmd --zone=public --add-port=5902/tcp --permonent

Проверяем состояния ВМ:

sudo virsh list --all

Вывод должен быть примерно таким:

Вывод должен быть примерно таким.

Выключение ВМ: sudo virsh shutdown cluster31

Запуск ВМ: sudo virsh start cluster31

Работа с ВМ

Монитрование образ установочного диска:

sudo virsh attach-disk cluster31 /var/lib/libvirt/boot/CentOS64minim.iso hda --type cdrom

Размонтирование образа:

sudo virsh change-media cluster31 hda --eject

Подключаемся через SPICE

(установил на windows клиент с оф.сайта SPICE) spice://172.17.1.41:5900 пароль Cisco1! Устанавливаем Centos…

Сетевые настройки в ВМ

На всех нодах настраиваем два интерфейса - eth0 и eth1 по следующему подобию:

eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=172.17.2.71
PREFIX=24
GATEWAY=172.17.2.1
DNS1=172.17.1.10
DOMAIN=recsds.spbgut.ru
DEFROUTE=yes
eth1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.17.3.71
PREFIX=24
GATEWAY=172.17.3.1
DNS1=172.17.1.10
DOMAIN=recsds.spbgut.ru
DEFROUTE=yes

был gateway 172.17.2.1. теперь все eth1 в 3подсеть

ИТОГО у меня:

cluster31 - spice://172.17.1.41:5900 - [email protected]
cluster31 - spice://172.17.1.41:5900 - [email protected]

cluster32 - spice://172.17.1.41:5901 - [email protected]
cluster32 - spice://172.17.1.41:5901 - [email protected]

cluster33 - spice://172.17.1.41:5902 - [email protected]
cluster33 - spice://172.17.1.41:5902 - [email protected]

Отключение ввода пароля при обращении через SUDO

Создаем файл /etc/sudoers.d/cephadmin и в нем пишем следующую строку:

cephadmin ALL=(ALL:ALL) NOPASSWD: ALL

, где cephadmin - имя пользователя, под которым вы залогинились. Проделываем это на всех хостах. Безпарольный доступ к cluster32 и 33 по SSH.

Добавление записей в файл /etc/hosts (нужно для того, чтобы можно было подключиться с одного хоста на другой по названию хоста).

Для начала узнаем ip-адрес каждого из хостов, которые прописали в предыдущем пункте. Или на каждом наберите команду: ip a

после на cluster31 добавляем файл/etc/hostsзаписи следующего формата:

172.17.2.71     cluster31
172.17.2.72     cluster32
172.17.2.75     cluster33

Создание ssh-ключей, чтобы не вводить пароль каждый раз, при подключении к другому хосту по ssh.

Создаем ключ для подключения к хостам на cluster31 без ввода пароля и названия ключа:

ssh-keygen

Копируем ключ на cluster31:

ssh-copy-id cluster31

Копируем ключ на cluster32:

ssh-copy-id cluster32

Копируем ключ на cluster33:

ssh-copy-id cluster33

Установка прав пользователя каждого из хостов chmod -R 0700 /home/cephadmin