* [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