ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] P9 OpenVZ7 - автоматическое добавление veth-интерфейса в бридж
@ 2020-12-04  7:57 Alex Moskalenko
  2020-12-04 12:49 ` Andrew A. Vasilyev
  0 siblings, 1 reply; 4+ messages in thread
From: Alex Moskalenko @ 2020-12-04  7:57 UTC (permalink / raw)
  To: ALT Linux Community general discussions

Здравствуйте.

Есть система на p8 с некоторым количеством OpenVZ-контейнеров с ядром 
ovz-el. Есть желание перенести ее на p9 и ядро ovz-el7. Собственно 
процесс переноса хост-системы особх вопросов не вызывает, а вот с 
переносом контейнеров есть вопросы. Может, я что-то пропустил в 
документации, поэтому прошу поправить и направить. :)

1. Перенос собственно контейнеров (часть в simfs, часть в ploop) проще 
всего провести через создание архива rootfs, удаление старого контейнера 
и создание нового с распаковкой rootfs в него. Скрипты миграции, которые 
находятся в инете, делают по сути то же самое. Это правильное решение? 
Даунтайм контейнеров приемлем.

2. Непонятно пока, что делать с контейнерами, использующими veth. В p8 
был файл vznet.conf, в котором указывался внешний скрипт, добавляющий 
veth-интерфейс со стороны хоста в указанный в конфигурационном файле VE 
мост. В p9 vzctl вообще не знает параметр bridge= в конфигурации VE, а 
файлы vznet.conf похоже вообще не читается и внешний скрипт не 
вызывается. В mount-скрипте интерфейс еще не создан. Как теперь 
правильно добавлять veth-интерфейсы контейнеров в бридж?




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Comm] P9 OpenVZ7 - автоматическое добавление veth-интерфейса в бридж
  2020-12-04  7:57 [Comm] P9 OpenVZ7 - автоматическое добавление veth-интерфейса в бридж Alex Moskalenko
@ 2020-12-04 12:49 ` Andrew A. Vasilyev
  2020-12-04 14:27   ` Alex Moskalenko
  0 siblings, 1 reply; 4+ messages in thread
From: Andrew A. Vasilyev @ 2020-12-04 12:49 UTC (permalink / raw)
  To: community

   Добрый день!

04.12.2020 10:57, Alex Moskalenko пишет:
> Есть система на p8 с некоторым количеством OpenVZ-контейнеров с ядром 
> ovz-el. Есть желание перенести ее на p9 и ядро ovz-el7. Собственно 
> процесс переноса хост-системы особх вопросов не вызывает, а вот с 
> переносом контейнеров есть вопросы. Может, я что-то пропустил в 
> документации, поэтому прошу поправить и направить. :)
> 
> 1. Перенос собственно контейнеров (часть в simfs, часть в ploop) проще 

   Обратите внимание на то, что в ovz7 simfs не поддерживается!

> всего провести через создание архива rootfs, удаление старого контейнера 
> и создание нового с распаковкой rootfs в него. Скрипты миграции, которые 

   Скрипт ovztransfer.sh от Virtuozzo переносит только ploop контейнеры.

> находятся в инете, делают по сути то же самое. Это правильное решение? 
> Даунтайм контейнеров приемлем.

   Есть ещё 3-й вариант: на новом сервере создать контейнеры из свежих 
шаблонов, и переносить в эти контейнеры сервисы и данные.
   Шаблоны можно сделать самостоятельно, используя mkimage-profiles 
(цели ve/systemd-etcnet.tar.gz ve/systemd-networkd.tar.gz 
ve/sysvinit-etcnet.tar.gz) и инструкции из 
https://www.altlinux.org/OpenVZ7 (Создание шаблонов контейнеров).

> 2. Непонятно пока, что делать с контейнерами, использующими veth. В p8 
> был файл vznet.conf, в котором указывался внешний скрипт, добавляющий 
> veth-интерфейс со стороны хоста в указанный в конфигурационном файле VE 
> мост. В p9 vzctl вообще не знает параметр bridge= в конфигурации VE, а 
> файлы vznet.conf похоже вообще не читается и внешний скрипт не 
> вызывается. В mount-скрипте интерфейс еще не создан. Как теперь 
> правильно добавлять veth-интерфейсы контейнеров в бридж?

   В mount-скрипте можно ждать появления нужного интерфейса, как 
предлагается в примере из https://wiki.openvz.org/Virtual_Ethernet_device
   Только нужно обратить внимание на то, что скрипт mount должен 
находиться в каталоге /var/lib/vz/private/VEID/scripts/, при этом 
файловая система должна быть смонтирована без флага noexec! Файлы 
/etc/vz/conf/VEID.mount не поддерживаются. Про скрипты mount и vps.mount 
написано в vzctl(8).


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Comm] P9 OpenVZ7 - автоматическое добавление veth-интерфейса в бридж
  2020-12-04 12:49 ` Andrew A. Vasilyev
@ 2020-12-04 14:27   ` Alex Moskalenko
  2020-12-17  8:54     ` Alex Moskalenko
  0 siblings, 1 reply; 4+ messages in thread
From: Alex Moskalenko @ 2020-12-04 14:27 UTC (permalink / raw)
  To: community


04.12.2020 15:49, Andrew A. Vasilyev пишет:
> Добрый день!
>
>   Обратите внимание на то, что в ovz7 simfs не поддерживается!
>   Есть ещё 3-й вариант: на новом сервере создать контейнеры из свежих 
> шаблонов, и переносить в эти контейнеры сервисы и данные.
>   Шаблоны можно сделать самостоятельно, используя mkimage-profiles 
> (цели ve/systemd-etcnet.tar.gz ve/systemd-networkd.tar.gz 
> ve/sysvinit-etcnet.tar.gz) и инструкции из 
> https://www.altlinux.org/OpenVZ7 (Создание шаблонов контейнеров).
>
Про это прочитал, поэтому планируется на p8 смонтировать rootfs для 
каждой VE, заархивировать их, произвести обновление до p9, создать новые 
VE из шаблонов с нужными параметрами и разархивировать rootfs в них. 
Внутри контейнеров p9, как и в шаблонах - вроде как должно сработать.


>> 2.  Непонятно пока, что делать с контейнерами, использующими veth. В 
>> p8 был файл vznet.conf, в котором указывался внешний скрипт, 
>> добавляющий veth-интерфейс со стороны хоста в указанный в 
>> конфигурационном файле VE мост. В p9 vzctl вообще не знает параметр 
>> bridge= в конфигурации VE, а файлы vznet.conf похоже вообще не 
>> читается и внешний скрипт не вызывается. В mount-скрипте интерфейс 
>> еще не создан. Как теперь правильно добавлять veth-интерфейсы 
>> контейнеров в бридж?
>
>   В mount-скрипте можно ждать появления нужного интерфейса, как 
> предлагается в примере из https://wiki.openvz.org/Virtual_Ethernet_device
>   Только нужно обратить внимание на то, что скрипт mount должен 
> находиться в каталоге /var/lib/vz/private/VEID/scripts/, при этом 
> файловая система должна быть смонтирована без флага noexec! Файлы 
> /etc/vz/conf/VEID.mount не поддерживаются. Про скрипты mount и 
> vps.mount написано в vzctl(8).
>
Вариант с wiki.openvz.org тоже рассматривал и тестировал, но он у меня 
не сработал, так как vzctl похоже ждет завершения всех потомков 
mount-скрипта, и пока все они не завершатся - интерфейсы не создаются. А 
потомки не завершаются, так как ждут создания интерфейса...



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Comm] P9 OpenVZ7 - автоматическое добавление veth-интерфейса в бридж
  2020-12-04 14:27   ` Alex Moskalenko
@ 2020-12-17  8:54     ` Alex Moskalenko
  0 siblings, 0 replies; 4+ messages in thread
From: Alex Moskalenko @ 2020-12-17  8:54 UTC (permalink / raw)
  To: community

В общем, штатными средствами добавить создаваемый интерфейс в мост я так 
и не смог. Указание network=bridgename для описания интерфейса не 
помогло - скрипт vznetcfg пытается использовать prlsrvctl, которого у 
нас нет.

Пока остановился на костыле - прописывание вручную в конфигурационный 
файл VE в конфигурацию интерфейса bridge=bridgename и создание скрипта 
/usr/share/libvzctl/script.d/vz-netns_dev_add по мотивам аналога из 
старого OpenVZ:

#!/bin/bash

. /etc/vz/vz.conf
. /usr/share/libvzctl/scripts/vz-functions

vzcheckvar VEID
vzcheckvar VNAME
vzcheckvar HNAME

. /etc/vz/conf/$VEID.conf

for iface in $(printf %s "$NETIF" |tr ';' '\n'); do
     unset BRIDGE
     bridge=
     host_ifname=

     for str in $(printf %s "$iface" |tr ',' '\n'); do
     case "$str" in
         bridge=*|host_ifname=*)
         eval "${str%%=*}=\${str#*=}" ;;
     esac
     done
     [ "$host_ifname" = "$HNAME" ] || continue
     [ -n "$bridge" ] && export BRIDGE="$bridge"
     break
done

/usr/share/libvzctl/scripts/vz-netns_dev_add


Если кто знает менее извращенный способ (а кстати, как это делается в 
RHEL? Ядро ведь из него?) - прошу поделиться знанием.


04.12.2020 17:27, Alex Moskalenko пишет:
>
> 04.12.2020 15:49, Andrew A. Vasilyev пишет:
>
>>> 2.  Непонятно пока, что делать с контейнерами, использующими veth. В 
>>> p8 был файл vznet.conf, в котором указывался внешний скрипт, 
>>> добавляющий veth-интерфейс со стороны хоста в указанный в 
>>> конфигурационном файле VE мост. В p9 vzctl вообще не знает параметр 
>>> bridge= в конфигурации VE, а файлы vznet.conf похоже вообще не 
>>> читается и внешний скрипт не вызывается. В mount-скрипте интерфейс 
>>> еще не создан. Как теперь правильно добавлять veth-интерфейсы 
>>> контейнеров в бридж?
>>
>>   В mount-скрипте можно ждать появления нужного интерфейса, как 
>> предлагается в примере из 
>> https://wiki.openvz.org/Virtual_Ethernet_device
>>   Только нужно обратить внимание на то, что скрипт mount должен 
>> находиться в каталоге /var/lib/vz/private/VEID/scripts/, при этом 
>> файловая система должна быть смонтирована без флага noexec! Файлы 
>> /etc/vz/conf/VEID.mount не поддерживаются. Про скрипты mount и 
>> vps.mount написано в vzctl(8).
>>
> Вариант с wiki.openvz.org тоже рассматривал и тестировал, но он у меня 
> не сработал, так как vzctl похоже ждет завершения всех потомков 
> mount-скрипта, и пока все они не завершатся - интерфейсы не создаются. 
> А потомки не завершаются, так как ждут создания интерфейса...
>


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-12-17  8:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-04  7:57 [Comm] P9 OpenVZ7 - автоматическое добавление veth-интерфейса в бридж Alex Moskalenko
2020-12-04 12:49 ` Andrew A. Vasilyev
2020-12-04 14:27   ` Alex Moskalenko
2020-12-17  8:54     ` Alex Moskalenko

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git