Создание виртуальной машины с использованием библиотеки 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 для подключения к ВМ
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