From e78de359a6bbfa57048248b48181a66cb759c5bc Mon Sep 17 00:00:00 2001 From: Amet13 Date: Thu, 11 Aug 2016 18:08:29 +0300 Subject: =?UTF-8?q?=D0=9C=D0=BD=D0=BE=D0=B6=D0=B5=D1=81=D1=82=D0=B2=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D0=B5=20=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 155 +++++++++++++++++++++++++++++--------------------------------- 1 file changed, 73 insertions(+), 82 deletions(-) diff --git a/README.md b/README.md index ac0c93f..ad4ead4 100644 --- a/README.md +++ b/README.md @@ -290,13 +290,15 @@ Password: пароль_пользователя_root ``` [root@vz ~]# yum update ``` + Для сервера важно, чтобы было установлено правильное время. Чтобы синхронизировать время с интернетом необходимо настроить сервер `ntp`. -Если во время установки ОС, не была установлена корректная временная зона, то можно это сделать позже: +Если во время установки ОС, была установлена некорректная временная зона, то можно это сделать позже: ``` [root@vz ~]# timedatectl set-timezone Europe/Moscow ``` + Установка `ntp` и синхронизация времени с удаленными серверами: ``` [root@vz ~]# yum install ntp @@ -324,14 +326,14 @@ debian-8.0-x86_64-minimal :Debian 8.0 minimal (for AMD64/Intel EM64T) V Удаленно доступные шаблоны: ``` [root@vz ~]# vzpkg list --available --with-summary -debian-7.0-x86_64 -fedora-22-x86_64 -fedora-23-x86_64 -suse-42.1-x86_64 -ubuntu-14.10-x86_64 -ubuntu-15.04-x86_64 -ubuntu-15.10-x86_64 -vzlinux-6-x86_64 +debian-7.0-x86_64 +fedora-22-x86_64 +fedora-23-x86_64 +suse-42.1-x86_64 +ubuntu-14.10-x86_64 +ubuntu-15.04-x86_64 +ubuntu-15.10-x86_64 +vzlinux-6-x86_64 ``` Установка шаблона: @@ -355,13 +357,13 @@ vzlinux-6-x86_64 Просмотр даты последнего обновления кэша: ``` [root@vz ~]# vzpkg list -O -ubuntu-14.04-x86_64 +ubuntu-14.04-x86_64 ubuntu-16.04-x86_64 2016-05-14 02:10:18 -vzlinux-7-x86_64 -centos-7-x86_64 -centos-6-x86_64 -debian-8.0-x86_64 -debian-8.0-x86_64-minimal +vzlinux-7-x86_64 +centos-7-x86_64 +centos-6-x86_64 +debian-8.0-x86_64 +debian-8.0-x86_64-minimal ``` ### Шаблоны приложений @@ -372,19 +374,19 @@ debian-8.0-x86_64-minimal ``` [root@vz ~]# vzpkg list centos-7-x86_64 centos-7-x86_64 2016-02-09 17:01:05 -centos-7-x86_64 cyrus-imap -centos-7-x86_64 tomcat -centos-7-x86_64 php -centos-7-x86_64 docker -centos-7-x86_64 mailman -centos-7-x86_64 spamassassin -centos-7-x86_64 devel -centos-7-x86_64 mod_ssl -centos-7-x86_64 jre -centos-7-x86_64 vzftpd -centos-7-x86_64 postgresql -centos-7-x86_64 mysql -centos-7-x86_64 jsdk +centos-7-x86_64 cyrus-imap +centos-7-x86_64 tomcat +centos-7-x86_64 php +centos-7-x86_64 docker +centos-7-x86_64 mailman +centos-7-x86_64 spamassassin +centos-7-x86_64 devel +centos-7-x86_64 mod_ssl +centos-7-x86_64 jre +centos-7-x86_64 vzftpd +centos-7-x86_64 postgresql +centos-7-x86_64 mysql +centos-7-x86_64 jsdk ``` Пример установки шаблона приложений `tomcat` и `jre`: @@ -420,26 +422,25 @@ centos-7-x86_64 2016-02-09 17:00:57 centos-7-x86_64 jre 2016-02-09 20:03:50 ``` -Создадим конфиг, на основе которого будет создаваться контейнер с CentOS 7 и при этом по умолчанию будут устанавливаться Apache Tomcat и JRE: +Создадим конфиг, на основе которого будет создаваться контейнер с CentOS 7 с предустановленным Apache Tomcat: ``` [root@vz ~]# cd /etc/vz/conf/ -[root@vz conf]# cp ve-basic.conf-sample ve-centos-7-x86_64-tomcat-jre.conf-sample -[root@vz conf]# echo OSTEMPLATE=".centos-7" >> ve-centos-7-x86_64-tomcat-jre.conf-sample -[root@vz conf]# echo TEMPLATES=".tomcat .jre" >> ve-centos-7-x86_64-tomcat-jre.conf-sample +[root@vz conf]# cp ve-basic.conf-sample ve-centos-7-x86_64-tomcat.conf-sample +[root@vz conf]# echo OSTEMPLATE=".centos-7" >> ve-centos-7-x86_64-tomcat.conf-sample +[root@vz conf]# echo TEMPLATES=".tomcat" >> ve-centos-7-x86_64-tomcat.conf-sample ``` -Создадим кэш для этих приложений: +Создадим кэш для этого приложения: ``` -[root@vz ~]# vzpkg create appcache --config centos-7-x86_64-tomcat-jre +[root@vz ~]# vzpkg create appcache --config centos-7-x86_64-tomcat [root@vz ~]# vzpkg list appcache centos-7-x86_64 2016-07-31 03:12:28 - jre tomcat ``` На основе нового конфигурационного файла создадим и запустим контейнер: ``` -[root@vz ~]# prlctl create ct5 --config centos-7-x86_64-tomcat-jre --vmtype=ct +[root@vz ~]# prlctl create ct5 --config centos-7-x86_64-tomcat --vmtype=ct Creating the Virtuozzo Container... The Container has been successfully created. [root@vz ~]# prlctl start ct5 @@ -447,18 +448,10 @@ Starting the CT... The CT has been successfully started. ``` -Проверка предустановки Apache Tomcat и JRE в составе шаблона: +Проверка предустановки Apache Tomcat в составе шаблона: ``` -[root@vz ~]# prlctl exec ct5 systemctl start tomcat -[root@vz ~]# prlctl exec ct5 systemctl is-active tomcat -active -[root@vz ~]# prlctl exec ct5 ls /usr/lib/jvm/ -java-1.7.0-openjdk-1.7.0.111-2.6.7.2.el7_2.x86_64 -jre -jre-1.7.0 -jre-1.7.0-openjdk -jre-1.7.0-openjdk-1.7.0.111-2.6.7.2.el7_2.x86_64 -jre-openjdk +[root@vz ~]# prlctl exec ct5 rpm -q tomcat +tomcat-7.0.54-2.el7_1.noarch ``` ### Шаблоны контейнеров и виртуальных машин @@ -602,7 +595,7 @@ DEF_OSTEMPLATE=".centos-7" Сгенерировать пароль можно штатными средствами Linux: ``` [root@vz ~]# cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 15 | head -1 -eVjfsDkTE63s5Nw +BC4Ce984DBWVcXc ``` Или воспользоваться утилитой `pwgen`: @@ -622,7 +615,7 @@ esxrcH7dyoA46LY Также можно добавить краткое описание контейнера: ``` -[root@vz ~]# prlctl set ct1 --description "Frontend for app" +[root@vz ~]# prlctl set ct1 --description "This is my first container" ``` ### Запуск и вход @@ -679,7 +672,7 @@ CentOS Linux 7 (Core) Kernel 3.10.0-327.3.1.vz7.10.11 on an x86_64 ct2 login: root -Password: +Password: veig7Ei1iedeVa8 [root@ct2 ~]# ``` @@ -758,7 +751,7 @@ The CT has been successfully mounted. [root@vz ~]# ls /vz/root/8de0101f-c166-42ce-ad53-a7900b223d46/ bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@vz ~]# prlctl status ct6 -CT wordpress-162 exist mounted +CT ct6 exist mounted [root@vz ~]# prlctl umount ct6 Unmounting the CT... The CT has been successfully unmounted. @@ -936,7 +929,7 @@ set cpuunits 2000 ``` Если система многопроцессорная, то установка параметра `CPUMASK` может пригодиться для привязки контейнера к конкретным процессорам. -В случае восьмипроцессорной системы можно привязать контейнер к процессорам 0-3, 6, 7: +В случае восьмипроцессорной системы можно, к примеру, привязать контейнер к процессорам 0-3, 6, 7: ``` [root@vz ~]# prlctl set ct1 --cpumask 0-3,6,7 set cpu mask 0-3,6,7 @@ -1070,7 +1063,7 @@ root@ct1:/# dd if=/dev/zero of=test bs=1048576 count=10 С пользовательской стороны управление памятью с помощью VSwap и VCMM ничем не отличаются, однако с точки зрения реализации, VCMM уже находится в ванильном ядре и не требует патчей со стороны разработчиков OpenVZ. -Ограничение физической памяти и swap задаются в конфигурационном файле контейнера параметрами `PHYSPAGES` и `SWAPPAGES`. +Ограничения физической памяти и swap задаются в конфигурационном файле контейнера параметрами `PHYSPAGES` и `SWAPPAGES`. Значения устанавливаются в блоках, например: ``` PHYSPAGES="262144:262144" @@ -1292,7 +1285,7 @@ PPTP может также использоваться для организа Для работы PPTP в контейнере OpenVZ нужно включить соответствующие модули ядра на хост-ноде. -Добавим модули ядра `ppp_async`, `ppp_deflate`, `ppp_mppe`: +Добавление модулей ядра `ppp_async`, `ppp_deflate`, `ppp_mppe`: ``` [root@vz ~]# modprobe ppp_async [root@vz ~]# modprobe ppp_deflate @@ -1307,14 +1300,14 @@ slhc 13450 1 ppp_generic crc_ccitt 12707 1 ppp_async ``` -Добавил модули в автозагрузку: +Добавление модулей в автозагрузку: ``` [root@vz ~]# echo ppp_async >> /etc/modules-load.d/vz.conf [root@vz ~]# echo ppp_deflate >> /etc/modules-load.d/vz.conf [root@vz ~]# echo ppp_mppe >> /etc/modules-load.d/vz.conf ``` -Остановим контейнер, пробросим устройство и запустим контейнер: +Остановка контейнера, проброс устройства и запуск контейнера: ``` [root@vz ~]# prlctl stop ct1 [root@vz ~]# vzctl set ct1 --devnodes ppp:rw --save @@ -1354,7 +1347,7 @@ VEFSTYPE="simfs" [root@vz ~]# prlctl create ct3 --vmtype=ct [root@vz ~]# ls /vz/private/731a1572-d609-498f-8c8b-8739e336a210/fs/ .autorelabel boot/ etc/ lib/ media/ opt/ root/ sbin/ sys/ usr/ .vzfifo -bin/ dev/ home/ lib64/ mnt/ proc/ run/ srv/ tmp/ var/ +bin/ dev/ home/ lib64/ mnt/ proc/ run/ srv/ tmp/ var/ ``` Для отключения SimFS нужно в файле `/etc/vz/vz.conf` установить переменную `VEFSTYPE="ext4"`. @@ -1395,7 +1388,7 @@ PARENT_SNAPSHOT_ID SNAPSHOT_ID {aa9649d9-9ed1-408a-9463-36ce0cea6ba7} *{e76f0a0d-aa8e-491f-a720-daa65dfb911a} ``` -Символ `*` указывает текущую использующуюся ветку снапшота: +Символ `*` указывает текущую ветку снапшота: ``` [root@vz ~]# prlctl snapshot-list ct2 -t _{aa9649d9-9ed1-408a-9463-36ce0cea6ba7}*{e76f0a0d-aa8e-491f-a720-daa65dfb911a} @@ -1424,7 +1417,7 @@ The snapshot has been successfully deleted. ## [[⬆]](#toc) Работа с виртуальными машинами Помимо создания контейнеров, OpenVZ 7 поддерживает создание и управление виртуальными машинами на базе QEMU/KVM. -Утилита `prlctl` имеет возможность создавать и управлять виртуальными машинами, помимо этого также доступно управление ВМ с помощью `libvirt`. +Утилита `prlctl` имеет возможность создавать и управлять виртуальными машинами, помимо этого также доступно управление с помощью `libvirt`. ### Создание и запуск ВМ Создание виртуальной машины практически ничем не отличается от создания контейнера: @@ -1440,16 +1433,16 @@ The VM has been successfully created. ``` [root@vz ~]# prlctl create vm1 -d list The following values are allowed: -win-2000 win-xp win-2003 win-vista -win-2008 win-7 win-8 win-2012 -win-8.1 win rhel rhel7 -suse debian fedora-core fc -xandros ubuntu mandriva centos -centos7 vzlinux7 psbm redhat -opensuse linux-2.4 linux-2.6 linux -mageia mint freebsd-4 freebsd-5 -freebsd-6 freebsd-7 freebsd-8 freebsd -chrome-1 chrome +win-2000 win-xp win-2003 win-vista +win-2008 win-7 win-8 win-2012 +win-8.1 win rhel rhel7 +suse debian fedora-core fc +xandros ubuntu mandriva centos +centos7 vzlinux7 psbm redhat +opensuse linux-2.4 linux-2.6 linux +mageia mint freebsd-4 freebsd-5 +freebsd-6 freebsd-7 freebsd-8 freebsd +chrome-1 chrome ``` Для каждой виртуальной машины в каталоге `/vz/vmprivate/` создается собственная директория с именем, соответствующим ее UUID: @@ -1458,17 +1451,17 @@ chrome-1 chrome config.pvs config.pvs.backup harddisk.hdd ``` -У каждой ВМ имеется как минимум два файла: +Для каждой ВМ имеется как минимум два файла: * файл конфигурации `config.pvs` * виртуальный жесткий диск `harddisk.hdd` В файле конфигурации описываются параметры виртуальной машины в XML-формате. В свою очередь виртуальный жесткий диск может быть двух типов: -* `plain` — диск с фиксированным размером -* `expanded` — диск с изменяемым размером +* plain — диск с фиксированным размером +* expanded — диск с изменяемым размером -По умолчанию при создании виртуальной машины, создается expanded-диск с размером 65G. +По умолчанию при создании виртуальной машины, создается expanded-диск размером 65G. Просмотр только что созданной ВМ: ``` @@ -1506,8 +1499,8 @@ UUID STATUS IP_ADDR T NAME [root@vz ~]# prlctl set vm1 --autostart on ``` -Параметры виртуальной машины установлены, ее можно запускать, однако для установки гостевой ОС необходим образ ОС. -Для хранения образов ОС можно создать отдельный каталог и централизованно хранить все образы там: +Параметры виртуальной машины установлены, ее можно запускать, однако для установки гостевой ОС необходим соответствующий образ. +Для хранения образов ОС можно создать отдельный каталог и централизованно хранить в нем все образы: ``` [root@vz ~]# mkdir /vz/vmprivate/images/ [root@vz ~]# ls /vz/vmprivate/images/ -1 @@ -1527,7 +1520,7 @@ CentOS-7-x86_64-Minimal-1503-01.iso [root@vz ~]# prl_disk_tool resize --hdd /vz/vmprivate/vm1.pvm/harddisk.hdd --size 8G ``` -Просмотр конфигурации виртуальной машины перед ее запуском: +Просмотр конфигурации виртуальной машины перед запуском: ``` [root@vz ~]# prlctl list vm1 -i | grep Hardware -A9 Hardware: @@ -1577,7 +1570,7 @@ Password: Oiwaiqud *Установленная гостевая ОС* ![Установленная гостевая ОС](https://raw.githubusercontent.com/Amet13/vz-tutorial/master/images/installed-os.png) -После установки ОС, можно соединиться к ней по SSH: +После установки ОС, можно соединиться к виртуальной машине по SSH: ``` user@localhost ~ $ ssh root@192.168.0.180 root@192.168.0.180's password: eihaixahghath7A @@ -1848,10 +1841,8 @@ KSM обеспечивает системам виртуализации воз Для включения KSM в OpenVZ необходимо запустить сервисы `ksm` и `ksmtuned`: ``` -[root@vz ~]# systemctl start ksm -[root@vz ~]# systemctl start ksmtuned -[root@vz ~]# systemctl enable ksm -[root@vz ~]# systemctl enable ksmtuned +[root@vz ~]# systemctl start ksm && systemctl enable ksm +[root@vz ~]# systemctl start ksmtuned && systemctl enable ksmtuned ``` Работоспособность KSM можно проверить на примере общих страниц в памяти (shared memory pages): @@ -1974,7 +1965,7 @@ ha_prio HA_PRIO * если работа хост-ноды замедлилась, для анализа нагрузки можно воспользоваться утилитами `vzps`, `vztop`, `iotop`, `atop` * для обнаружения сетевых проблем можно воспользоваться утилитами `ping`, `traceroute`, `nmap`, `mtr`, `tcpdump`, `nc`, `iftop`, `netstat`, `ss` * `strace` будет верным помощником для отслеживания системных вызовов -* используйте RAID +* используйте RAID для обеспечения сохранности данных * для экстренных ситуаций, когда могут быть проблемы с сетью необходимо всегда иметь под рукой IPMI или KVM-доступ * не перезагружайте хост-ноду без выяснения обстоятельств неполадок, делайте это только в самых крайних случаях * следите за временем на сервере, используйте для синхронизации NTP на хост-ноде -- cgit v1.2.3