Admin/createvps

Материал из Etersoft wiki
Перейти к: навигация, поиск
Wackowiki-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была автоматически перемещена с old.wiki.etersoft.ru.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Создание контейнера


Пример скрипта

#!/bin/bash



template=altlinux-httpd-server

export VEID=$1

export NAME=$2



create() {

    vzctl create $VEID --ostemplate=$template

}

setname() {

    vzctl set $VEID --hostname $NAME --onboot yes --nameserver 87.249.47.43 --save

}

setmem() {

    vzctl set $VEID --shmpages 512000:512000 --tcprcvbuf unlimited  --kmemsize 5560000:5560000 --numproc 512 --save

}

create

setname

setmem

С использованием venet

Пример скрипта

#!/bin/bash



export VEID=$1

export NAME=$2

VEIPE=$(expr $VEID - 400)

export EXTIP=89.104.102.6

export VEIP=192.168.4.$VEIPE

addip() {

    vzctl set $VEID --ipadd $VEIP --save

}

setiptables() {

    iptables -t nat -A POSTROUTING -s $VEIP -o inet -j SNAT --to-source $EXTIP

#iptables -t nat -A PREROUTING -d $EXTIP -i inet -p tcp -m tcp --dport "$VEID"22 -j DNAT --to-destination $VEIP:22

}

addip

setiptables

iptables

NAT

-A POSTROUTING -s $VPS_IP -o $iface -j SNAT --to-source $EXT_IP

проброс порта

-A PREROUTING -d $EXT_IP -i $iface -p tcp -m tcp --dport $EXT_PORT -j DNAT --to-destination $VPS_IP:$VPS_PORT

mod_rpaf для apache2

RPAFenable On

RPAFsethostname Off

RPAFproxy_ips


С использованием veth

По материалам https://bugs.etersoft.ru/show_bug.cgi?id=1309

Подготовка контейнера:

vzctl set $VEID --ipdel all --save

vzctl set $VEID --netif_add eth0 --save

echo 'CONFIG_CUSTOMIZED="yes"' >> /etc/vz/conf/$VEID.conf

echo 'EXTERNAL_SCRIPT="/etc/vz/network"' > /etc/vz/vznet.conf

Пример скрипта /etc/vz/network

#!/bin/bash

addroute()

{

    echo 1 > /proc/sys/net/ipv4/conf/$1/forwarding

    echo 1 > /proc/sys/net/ipv4/conf/$1/proxy_arp

    echo 1 > /proc/sys/net/ipv4/conf/$2/forwarding

    echo 1 > /proc/sys/net/ipv4/conf/$2/proxy_arp

    ip route add $3 dev $1

}

if [ $VEID = '200' ] ; then

    ifconfig veth200.0 0 && addroute veth200.0 eth0 89.104.102.3 || :

fi

if [ $VEID = '201' ] ; then

    ifconfig veth201.0 0 && addroute veth201.0 eth0 89.104.102.4 || :

fi

vzctl restart $VEID


Настраиваем сеть в контейнере (указании IP проверить свободный ли он)

vzctl enter $VEID

mkdir -p /etc/net/ifaces/eth0

echo '89.104.102.4/28' > /etc/net/ifaces/eth0/ipv4address

echo 'default via 89.104.102.1' > /etc/net/ifaces/eth0/ipv4route

echo 'BOOTPROTO=static' > /etc/net/ifaces/eth0/options

echo 'TYPE=eth' >> /etc/net/ifaces/eth0/options


service network restart


Алгоритм клонирования контейнера

Далее 206 - veid клонируемого контейнера, 210 - номер клона.


1) Копирует конфиг машины, выбирая номер, который еще не занят:

cp /etc/vz/conf/206.conf /etc/vz/conf/210.conf


2) Редактируем новый конфиг, заменяя параметры сетевых соединений (IP, MAC, etc.) на новые и номер исходной машины на номер клонированной.


3) Остановить исходный контейнер, скопировать его и запустить снова:

vzctl stop 206

cp -a /var/lib/vz/private/206/ /var/lib/vz/private/210

vzctl start 210


4) В /etc/vz/network добавляем строчку с конфигом сетки:

if [ $VEID = '210' ] ; then

ifconfig veth210.0 0 && addroute veth210.0 local1000 192.168.0.81 || :

fi


5) Копируем скрипт монтирования:

cp /etc/vz/conf/206.mount /etc/vz/conf/210.mount


6) Редактируем скрипт, заменяя идентификаторы на новые.


7) Проверить, сконфигурирован ли сетевой интерфейс на клонированной машине изнутри. Если да - то поправить адреса.


Ссылки

* Перенос контейнера без даунтайма