Войти или зарегистрироваться
Выберите удобный способ — аккаунт создастся автоматически.
Или войдите по логину и паролю
 |
HOWTO. Создание виртуальных серверов. Gentoo + OpenVZ |

05.12.2008, 13:21
|
|
Moderator - Level 7
Регистрация: 13.12.2006
Сообщений: 531
С нами:
10215686
Репутация:
383
|
|
HOWTO. Создание виртуальных серверов. Gentoo + OpenVZ
В этом примере я не буду рассматривать другие ОС. По вопросам для других операционных систем обращайтесь к соответствующей документации.
Подразумевается, что на вашем сервере уже установлена ОС Gentoo Linux.
Подробнее об установке:
http://www.gentoo.org/doc/ru/handbook/handbook-x86.xml (32 битная система)
http://www.gentoo.org/doc/ru/handbook/handbook-amd64.xml (64 битная система)
Общие вопросы: http://www.gentoo.org/doc/ru/
В данном случае будет рассмотрен пример, когда у вас есть только 1 внешний IP адрес. В этом случае будет использоваться NAT.
Для начала обновим дерево портежей.
Скачиваем исходники ядра openvz
Код:
emerge openvz-sources
Переходим в директория с исходниками
(XXX - здесь будет ваша версия ядра. Используйте ls /usr/src для уточнения)
Код:
cd /usr/src/linux-2.X.X-openvz-XXX.XXX
Запускаем конфигурацию ядра
Далее будут указаны только ОСНОВНЫЕ параметры, которые я добавил на своем сервере.
Часть информации о параметрах ядра на русском языке:
http://wiki.kryukov.biz/wiki/Параметры_ядра_Linux
PHP код:
Loadable module support -->
[*] Automatic kernel module loading
Networking -->
Networking options -->
<*> Packet socket
<*> Unix domain sockets
[*] networking
[*] IP: advanced router
[*] Network packet filtering (replaces ipchains) --->
Core Netfilter Configuration --->
<*> Netfilter Xtables support (required for ip_tables)
IP: Netfilter Configuration --->
<M> Connection tracking (required for masq/NAT)
<M> IP tables support (required for filtering/masq/NAT)
<M> Packet filtering
<M> Full NAT
<M> MASQUERADE target support
OpenVZ --->
[*] Virtual Environment support
<M> VE calls interface
<M> VE network device
<M> Virtual ethernet device
<M> VE device
[*] VE netfiltering
<M> VE watchdog module
<M> Checkpointing & restoring Virtual Environments
КоНПЕлируем ) ядро и устанавливаем модули
Код:
make && make modules_install
Копируем образ ядра в директорию загрузчика (на примере GRUB)
Код:
cp arch/x86_64(x86 для 32-битных)/boot/bzImage /boot/kernel-openvz
Добавим в конфиг загрузчика
Код:
nano /boot/grub/grub.conf
Более подробно про распознование grub`ом дисков и прочее читайте в handbook, раздел "Настройка начального загрузчика"
Также сделаем следующее.
Вполне возможно, что в вашем ядре чего-нибудь будет не хватать (как обычно бывает))), и система выдаст cernel panic
Это не проблема, если есть прямой доступ к серверу. Перезагрузили -> выбрали предыдущее ядро -> исправили ошибки-> перезагрузили.
А если сервер недоступен - придется тревожить саппорт, который не всегда есть когда нужен.
В этом случае укажем в grub.conf опцию panic=5, равно как и пропишем savedefault
Теперь, если при загрузке нашего нового ядра возникнет kernel panic - система перезагрузится через 5 секунд с преждним, работающим ядром
PHP код:
default saved
timeout 10
title Gentoo Linux Kernel 2.6.25-7
root (hd0,0)
kernel /boot/2.6.25-gentoo-r7 root=/dev/sda3 // Наше старое ядро
savedefault
title Gentoo Linux OpenVZ
root (hd0,0)
kernel /boot/kernel-openvz panic=5 root=/dev/sda3 // Наше openvz ядро
savedefault 0
Перезагружаемся
|
|
|

05.12.2008, 13:21
|
|
Moderator - Level 7
Регистрация: 13.12.2006
Сообщений: 531
С нами:
10215686
Репутация:
383
|
|
Если все сделано верно, то вы должны загрузиться с новым ядром (приверяем: uname -s)
После этого продолжаем установку
Устанавливаем vzctl
Добавляем vz в автозагрузку
Код:
rc-update add vz default
Запускаем vz
Код:
/etc/init.d/vz start
Приступаем к созданию виртуальных машин.
Фактически, все виртуальные сервера хранятся в директории /vz/private
Создаем директорию для нашей машины
Код:
mkdir /vz/private/100
Распаковываем туда наш stage3
(берем здесь http://www.gentoo.org/main/en/mirrors.xml каталог /releases/amd64(или x86)/2008.0/stages/stage3-amd64-2008.0.tar.bz2 или тот, что остался от установки системы)
Код:
tar -xjf stage3-i686-2008.0_beta2.tar.bz2 -C /vz/private/100
Создаем файл конфигурации ...
Код:
vzctl set 100 --applyconfig vps.basic --save
..и правим его
nano /etc/vz/conf/100.conf, добавив в конце файла
PHP код:
OSTEMPLATE="gentoo"
IP_ADDRESS="192.168.0.101"
HOSTNAME="test.server"
Заменяем mtab символьной ссылкой на /proc/mounts
Код:
rm -f /vz/private/100/etc/mtab
ln -s /proc/mounts /vz/private/100/etc/mtab
При загрузке нам нужен только /proc
Код:
echo "proc /proc proc defaults 0 0" > /vz/private/100/etc/fstab
Правим /vz/private/100/etc/inittab. Закоментируем строки наших консолей
PHP код:
#c1:12345:respawn:/sbin/agetty 38400 tty1 linux
#c2:2345:respawn:/sbin/agetty 38400 tty2 linux
#c3:2345:respawn:/sbin/agetty 38400 tty3 linux
#c4:2345:respawn:/sbin/agetty 38400 tty4 linux
#c5:2345:respawn:/sbin/agetty 38400 tty5 linux
#c6:2345:respawn:/sbin/agetty 38400 tty6 linux
Правим /vz/private/100/etc/shadow. Заменяем пароль root на ! , что не позволит использовать учетную запись.
Позже его можно сменить командой vzctl set 100 --userpasswd root assword
Удаляем checkroot и consolefont
Код:
rm /vz/private/100/etc/runlevels/boot/checkroot
rm /vz/private/100/etc/runlevels/boot/consolefont
Правим /vz/private/100/sbin/rc. Закоментируем строку
PHP код:
# try mount -n ${mntcmd:--t sysfs sysfs /sys -o noexec,nosuid,nodev}
Добавляем в /vz/private/100/etc/make.conf строку
PHP код:
CONFIG_PROTECT = /sbin/rc
В файле /vz/private/100/etc/conf.d/rc находим RC_DEVICES= и указываем значение
Выходим из директории vz если вы там
Запускаем наш сервер
Смотрим его в списке
Все в порядке? Заходим на него
vzctl enter 100
Смотрим vzctl --help для вариантов использования команды
Для того, что бы на нашей ВМ была возможность устанавливать пакеты из порежей выполним следующее:
Создадим директорию для портежей
Код:
mkdir -p /vz/root/100/usr/portage
И монтируем туда портажи с нашего сервера
Код:
mount -o bind /usr/portage /vz/root/100/usr/portage
и каталог с исходниками
Код:
mount -n -o bind /usr/portage/distfiles /vz/root/100/usr/portage/distfiles
Теперь установка пакетов возможно через emerge <пакет>
Если все работает - переходим к реализации "вывода в мир"
Устанавливаем на основной сервер iptables
Разрешаем ip форвардинг
Код:
echo 1 > /proc/sys/net/ipv4/ip_forward
Задаем правило
Код:
iptables -t nat -A POSTROUTING -s 192.168.0.101 -o <внешняя карта сервера> -j SNAT --to <внешний адрес сервера>
Теперь виртуальная машина будет выходить в мир через наш НАТ
Сохраняем параметры и добавляем iptables в автозагрузку
Код:
/etc/init.d/iptables save
rc-update add iptables default
Если где-либо описался сильно не пинать )
Полезные ресурсы:
wiki.openvz.org
gentoo.org
Последний раз редактировалось neval; 20.05.2009 в 14:23..
|
|
|

05.12.2008, 13:42
|
|
Moderator - Level 7
Регистрация: 13.12.2006
Сообщений: 531
С нами:
10215686
Репутация:
383
|
|
PHP код:
VEID NPROC STATUS IP_ADDR HOSTNAME
100 14 running XX.XX.XX.XX -----------.ru
110 25 running XX.XX.XX.XX -----------.ru
200 44 running XX.XX.XX.XX -----------.ru
300 26 running XX.XX.XX.XX -----------.ru
400 20 running XX.XX.XX.XX -----------.ru
Значит что то не то делаешь
ВМ стартуют? Работают?
|
|
|

20.05.2009, 10:24
|
|
Участник форума
Регистрация: 23.05.2008
Сообщений: 121
С нами:
9457097
Репутация:
133
|
|
Интересная статья ))автору + )
|
|
|

20.05.2009, 12:18
|
|
Участник форума
Регистрация: 05.07.2006
Сообщений: 285
С нами:
10447586
Репутация:
117
|
|
ТС поправь Kernel, а так вполне неплохо - молодец!
|
|
|

20.05.2009, 14:24
|
|
Moderator - Level 7
Регистрация: 13.12.2006
Сообщений: 531
С нами:
10215686
Репутация:
383
|
|
Сообщение от sedoy_xxx
ТС поправь Kernel, а так вполне неплохо - молодец!
???
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|