# Задания ## 1. Установите Proxmox на две виртуальные машины Proxmox. Используйте образ диска `proxmox_8.0.2.iso`. Параметры виртуальных машин: - объем памяти RAM 16ГБ, - число ядер 4, - объем жёсткого диска 32ГБ, - сетевое устройство vmbrX. Параметры установки: - IP из сети `192.168.0.0/24` (192.168.0.[201-202]) или из сети 10.160.179.0/24, - шлюз `192.168.0.1` или 10.160.179.1, - любой общедоступный DNS, - стандартный пароль для пользователя root, - доменные имена `n[1-2].studX.myoffice.ru`. Используйте утилиту `pveversion`, чтобы узнать версию Proxmox. Для удобства, настройте беспарольный доступ между машинами. Так как ключи уже сгенерированы при установке, достаточно выполнить `ssh-copy-id`. Чтобы использовать доменные имена на данном этапе внесите их в `/etc/hosts` каждой машины. ## 2. Объедините узлы в Proxmox кластер. Используйте утилиту `pvecm` (документация утилиты `man pvecm`). ``` root@n1 # pvecm create studX-cluster root@n1 # systemctl restart corosync root@n1 # pvecm status ``` ``` root@n2 # pvecm add n1.studX.myoffice.ru root@n2 # pvecm status ``` ## 3. Настройте доступ к веб-интерфейсу с помощью прокси сервера. Прокси-машина должна иметь два сетевых интерфейса, каждый в своей vlan: 499 и X. Первая vlan позволяет подключиться к прокси из сети интернет, вторая позволяет обмениваться данными между прокси и новым кластером Proxmox. Пример настройки прокси сервера nginx. ``` server { listen 80 default_server; return 301 https://$host$request_uri; } server { listen 443 ssl; ssl_certificate /etc/letsencrypt/live/stud15.myoffice.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/stud15.myoffice.ru/privkey.pem; ssl_verify_client off; server_name _; location / { if ($args ~ ^console) { proxy_pass https://192.168.0.201:8006; } try_files $uri $uri/ =404; } location /ha/1 { return 302 https://stud12.myoffice.ru/ha/1/; } location /ha/1/ { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. #try_files $uri $uri/ =404; proxy_pass http://backend/; } location /ha/2 { return 302 https://stud12.myoffice.ru/ha/2/; } location /ha/2/ { proxy_pass http://192.168.0.4/; } location /proxmox { return 302 https://stud12.myoffice.ru/proxmox/; } location /proxmox/ { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Accept-Encoding ""; # Standard proxying headers (why do we need this?) proxy_set_header Host stud12.myoffice.ru; proxy_set_header X-Real-IP 193.32.63.182; # You need to set this manually since we include this file inside a server block on a main config proxy_set_header X-Forwarded-Host stud12.myoffice.ru; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # SSL proxying headers proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Ssl on; # hack sub_filter_once off; sub_filter 'stud12.myoffice.ru/' 'stud12.myoffice.ru/proxmox/'; sub_filter 'src="' 'src="/proxmox'; sub_filter 'href="' 'href="/proxmox'; sub_filter_types "text/html" "text/javascript" "application/json"; proxy_pass https://192.168.0.201:8006/; } location ~ ^\/(pve2|api2|novnc|xtermjs|pve-doc|pwt) { rewrite ^/(.+) /proxmox/$1; proxy_pass https://192.168.0.201:8006/$request_uri; } } ``` ## 4. Создайте виртуальную машину в новом Proxmox. Скачайте образ `Core` проекта `Tiny Core Linux` http://tinycorelinux.net/downloads.html. ## 5. Сделать резервное копирование (Backup) виртуальной машины из консоли или в терминале командой `vzdump` (документация утилиты `man vzdump`). Выберите тип режима `--mode stop` без сжатия `--compress 0`. Извлеките образ из архивного формата vma (https://pve.proxmox.com/wiki/VMA) ``` vma extract -v /var/lib/vz/dump/vzdump-qemu-100-2022_10_28-17_24_31.vma /tmp/exported_vm_100_archive ``` Сконвертируйте образ диска в формат VDI утилитой `qemu-img`. Пример команды ``` $ qemu-img convert -f raw -O vdi /tmp/exported_vm_100_archive/disk-drive-scsi0.raw /tmp/exported_vm_100.vdi ``` Объем пространства, занимаемый образом, можно определить с помощью команд `qemu-img info` или `ls -ls`; Предупреждение: Никогда не используйте `qemu-img` для изменения образов, используемых запущенной виртуальной машиной или любым другим процессом; это может привести к уничтожению образа. Кроме того, имейте в виду, что запрос образа, который изменяется другим процессом, может привести к несогласованному состоянию. ## 6. Для восстановления из бекапа используется утилита `qmrestore` (`man qmrestore`). Восстановите из бэкапа виртуальную машину под другим идентификатором. ## 7. Сделайте снимок (Snapshot) виртуальной машины командой `qm snapshot`. Найдите снимки в веб-интерфейсе. В каком виде хранятся снимки на диске? ## 8. Создайте новый мост `Linux Bridge` в настройках узла `n2`. ## 9. Проведите миграцию виртуальной машины с одного узла на другой командой `qm migrate` или из веб-интерфейса. ## 10. Увеличить объем диска виртуальной машины командой `qm resize`. ## 11. Посмотрите параметры виртуальной машины в терминале утилитой `qm config`. ## 12. Настроите перезапуск виртуальной машины в случае отказа. ## 13. Выведите список виртуальных машин в терминале. ## 14. Создайте новых пользователей Proxmox `mike` и `vera` в Realm `Proxmox VE authentication server`. Установите пользователю сложный пароль. В настройках `Datacenter -> Permissions` дайте пользователю `mike` права администратора `Administrator` на директорию `/vms`. Установите пользователю `vera` права пользователя виртуальными машинами `PVEVMUser` на директорию `/vms` в терминале узла утилитой `pveum` (Proxmox VE User Manager). ``` pveum acl modify /vms -user vera@pve -role PVEVMUser ``` ## 15. Создайте пользователя `serg` в Realm `Proxmox VE authentication server`. Установите пользователю сложный пароль. Создайте ресурсный пул для этого пользователя. Назначьте в настройках пула для `serg` права `PVEVMAdmin`, `PVEPoolUser`. Убедитесь, что `serg` может создавать виртуальные машины в своём пуле. ## 16. Попробуйте утилиту `pveperf` для анализа производительности узла. ## Релевантные источники - https://pve.proxmox.com/wiki/Command_line_tools - https://pve.proxmox.com/wiki/Backup_and_Restore - https://pve.proxmox.com/wiki/User_Management