Дипломной практике тема диплома: Разработка сетевой инфраструктуры единой информационной среды кафедры икт




Скачать 114.98 Kb.
НазваниеДипломной практике тема диплома: Разработка сетевой инфраструктуры единой информационной среды кафедры икт
Дата публикации10.04.2013
Размер114.98 Kb.
ТипДиплом
odtdocs.ru > География > Диплом
МОСКОВСКИЙ ИНСТИТУТ ЭЛЕКТРОНИКИ И МАТЕМАТИКИ

(Технический Университет)

Кафедра Информационно-коммуникационные технологии

ОТЧЕТ
ПО ПРЕДДИПЛОМНОЙ ПРАКТИКЕ


Тема диплома: Разработка сетевой инфраструктуры единой информационной среды кафедры ИКТ

Выполнил:




В.В. Добрынин




(подпись)




Принял:




^ Д.А. Королев




(подпись)





Москва 2008

Содержание

Введение 3

Основные возможности 3

Программное обеспечение 4

Установка поддержки Linux-VServer в ядре 5

Установка программного обеспечения для управления VPS 6

Создание VPS 8

Настройка сети в VPS 9

Архитектурные рекомендации 10

Настройка ограничений дискового пространства 12

Настройка ограничений ресурсов 13

Вывод 14


Введение


В наше время неудержимого прогресса информационных технологий и развития глобальных сетей многим системным администраторам приходится сталкиваться с задачами, связанными с созданием ресурсов, предназначенных для широкого пользования. С увеличением объема таких ресурсов, находящихся в руках одного администратора, растет сложность администрирования и, как правило, страдает безопасность. Встают вопросы частичного делегирования административных полномочий. Техники VPS (Virtual Private Server) и VDS (Virtual Dedicated Server) позволяют решать такие задачи -- задачи "эффективного разделения целого на меньшее". Аббревиатура VPS не зря образована от слова virtual (виртуальный), она направлена на виртуализацию. Однако, в отличие от других небезызвестных технологий, таких как, например, VMware и Xen, VPS предоставляет минимальную виртуализацию. Подробнее различные виды виртуализации описаны здесь: http://en.wikipedia.org/wiki/Virtualization.

В этой работе рассматривается технология “Linux-VServer” (http://linux-vserver.org/). Описываются основные возможности, а также приводятся инструкции по установке программного обеспечения, и настройке виртуальных серверов.
^

Основные возможности


Технология Linux-VServer позволяет создавать несколько виртуальных серверов (VPS), работающих независимо под управлением одного ядра операционной системы.

Каждый виртуальный сервер связан с одним контекстом, в котором выполняются его процессы. Контекст — это окружение, объединяющее группу процессов в системе, и отделяющее их от процессов не входящих в этот контекст. Имена пользователей и групп, а так же их идентификаторы принадлежат контексту. Процессы главного (корневого) сервера входят в контекст с номером ноль и обладают большими возможностями, они имеют доступ к процессам и данным всех виртуальных серверов. В файловой системе главного сервера корни файловых систем виртуальных серверов расположены в некоторой директории.

VPS внутри выглядит как полноценная Linux-система. Вы можете предоставить права root на него и совершенно не боятся, что как-то могут быть повреждены другие виртуальные серверы или главный сервер. Все сервисы, такие как электронная почта, базы данных, Web, SSH, могут быть запущены без модификаций (или с некоторыми минимальными модификациями) на виртуальном сервере (список программ, с которыми возникают проблемы можно просмотреть здесь: http://wiki.linux-vserver.org/ProblematicPrograms). Каждый VPS может обладать как одним IP-адресом, так и несколькими.

Для виртуального сервера может быть настроено множество параметров и ограничений. Вот наиболее часто используемые из них:

1. Место, занимаемое на диске и количество индексных дескрипторов (файлов).

2. Объем физической и виртуальной памяти.

3. Доля использования мощности процессора и список процессоров, на которых может выполняться VPS.

4. Максимальное количество процессов, принадлежащих контексту.

Для каждого VPS могут отслеживаться такие показатели, как:

1. Использованное процессорное время.

2. Количество совершенных системных вызовов fork (с его помощью создаются новые процессы).

3. Количество полученных и переданных сетевых пакетов.
^

Программное обеспечение


1. Операционная система GNU/Linux; Linux-ядро 2.6.17 (http://kernel.org/).

2. Linux-VServer Kernel Patches 2.0.21 (http://wiki.linux-vserver.org/Downloads).

3. Linux-VServer Userspace Utilities 0.30.210 (http://wiki.linux-vserver.org/Downloads).

Также потребуется образ, который будет использоваться на VPS. Вот некоторый список архивов, содержащих готовые образы:

1. http://mirrors.sandino.net/vserver/images/

2. http://debian.marlow.dk/vserver/guest/

3. http://www.fumanchu.com/vserver/

4. http://lylix.net/vps+templates/func,select/id,1/

5. http://distfiles.gentoo.org/experimental/x86/vserver/

6. http://distfiles.gentoo.org/experimental/amd64/vserver/

Отличается такой образ от полноценной Linux-системы обычно измененными скриптами инициализации, а в особенности -- скриптами, направленными на проверку целостности корневой файловой системы и т.п. Разумеется, никто не отменяет возможности самостоятельного создания образа на основе используемого вами дистрибутива.
^

Установка поддержки Linux-VServer в ядре


Скачаем ядро, разархивируем его и добавим патч:

# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.13.tar.bz2
# wget http://ftp.linux-vserver.org/pub/kernel/vs2.0/patch-2.6.17.13-vs2.0.2.1.diff.bz2
# tar -xjf linux-2.6.17.13.tar.bz2
# bunzip2 patch-2.6.17.13-vs2.0.2.1.diff.bz2
# cd linux-2.6.17.13
# make menuconfig

После того, как вы примените патч к ядру, в меню конфигурации появится новая секция “Linux-VServer”, ей мы и уделим внимание.

Опции, отвечающие за совместимость со старым управляющим программным обеспечением, и не представляющие в нашем случае никакого интереса. Их надо отключить.

Linux-VServer -> Show a Legacy Version Number (VSERVER_LEGACY_VERSION=n)
Linux-VServer -> Enable Legacy Kernel API (VSERVER_LEGACY=n)

Следующая опция отвечает за устаревшую поддержку сети в виртуальных серверах, эта поддержка, как написано в документации, нужна:

Linux-VServer -> Disable Legacy Networking Kernel API (CONFIG_VSERVER_NGNET=n)

Опция, отвечающая за то, чтобы виртуальные серверы видели только свои процессы (в отличие от главного сервера, который может просматривать процессы всех VPS (с помощью специальных утилит):

Linux-VServer -> Enable Proc Security (VSERVER_PROC_SECURE=y)

Опция, отвечающая за возможность жесткого управления процессами. Если VPS превысил свой лимит процессорной мощности и для него установлено жесткое управление, выполнение процессов контекста будет заморожено на некоторый промежуток времени(подробнее смотреть “Ограничение ресурсов”):

Linux-VServer -> Enable Hard CPU Limits (VSERVER_HARDCPU=y)

Следующая опция отвечает за ограничение времени простоя контекста, она позволяет добиться большей интерактивности (меньшего времени отклика), но и сильно увеличивает перегрузку, связанную с планированием процессов (отправкой их на выполнение). Оставлю выбор на ваше усмотрение:

Linux-VServer -> Limit The IDLE task (VSERVER_HARDCPU_IDLE)

Опция, отвечающая за разделение битов в идентификаторах пользователя и группы на биты, характеризующие номер контекста, и биты являющиеся идентификатором пользователя внутри VPS. Изменяя эти числа, можно достичь разного максимального числа возможных групп и пользователей в системе. Используется это при сохранении принадлежности файла к конкретному VPS в файловой системе. Рекомендую оставить значение по умолчанию:

Linux-VServer -> Persistent Inode Context Tagging -> UID24/GID24 (INOXID_UGID24=y)

Опция отвечает за поддержку встроенного в ядро NFS демона:

Linux-VServer -> Tag NFSD User Auth and Files (XID_TAG_NFSD=n)

После настройки этих опций скомпилируем и установим ядро, поправим соответсвующим образом загрузчик, а потом не забудем перезагрузиться:

# make bzImage modules modules_install install
^

Установка программного обеспечения для управления VPS


Для работы утилит нам понадобится программа vconfig

(http://www.candelatech.com/~greear/vlan.html).

Скачаем и разархивируем утилиты:

# wget http://ftp.linux-vserver.org/pub/utils/util-vserver/util-vserver-0.30.210.tar.bz2
# tar -xjf util-vserver-0.30.210.tar.bz2
# cd util-vserver-0.30.210

Конфигурацию производим следующим образом:

# ./configure --prefix=/usr/local/vserver –with-vrootdir=/var/vservers

Опция “vrootdir” указывает папку, в которой будут располагаться корни виртуальных фаловых систем.

Компилируем и устанавливаем:

# make
# make install

Дополним переменные окружения новыми путями (это лучше прописать, например, в bashrc):

# PATH=$PATH:/usr/local/vserver/sbin
# MANPATH=$MANPATH:/usr/local/vserver/man

Настроим файловую систему, в которой будут располагаться виртуальные серверы (в ней будет находиться vrootdir, в нашем случае -- /var/vservers). При монтировании нам нужно обязательно указать опцию “tagxid”: она включает установку принадлежности файлов конкретному VPS (см. Ядро: Linux-VServer -> Persistent Inode Context Tagging). Также, если вы используете reiserfs, вам понадобится опция “attrs”, включающая поддержку атрибутов файла (chattr, lsattr) (проверьте, включена ли в ядре опция REISERFS_FS_XATTR, при использовании reiserfs). Монтирование производится следующим образом:

# mount /dev/sda2 /var/ -o tagxid,attrs

Или, в случае fstab, это будет строчка вида:

/dev/sda2 /var reiserfs tagxid,attrs 1 1

В этом примере монтирование производится в директорию /var, это не обязательно.

После установки поддержки в ядре, установки утилит, настройки файловой системы произведем перезагрузку.

Создаем директорию, в которой будут храниться наши VPS и устанавливаем для нее флаг “Chroot Barrier” (“барьер смененного корня”). Отвечает этот флаг за то, что никакой процесс из VPS (контекста) не сможет выбраться за этот барьер.

# mkdir /var/vservers
# /usr/local/vserver/sbin/setattr --barrier /var/vservers/

Для продолжения понадобится выполнить команду, делающую видимыми для самого сервера некоторые части /proc (см. Ядро: Linux-VServer -> Enable Proc Security). Полезно добавить эту команду к скриптам инициализации системы.

# /usr/local/vserver/etc/init.d/vprocunhide start

Для того, чтобы перезагрузка и выключение виртуальных серверов обрабатывались корректно, потребуется сделать следующее:

# echo 'kernel.vshelper =/usr/local/vserver/lib/util-vserver/vshelper' >> /etc/sysctl.conf
# sysctl -p

Следующая команда должна вывести информацию о версии Linux-VServer API в ядре и версии утилит. Если она делает это, то установка прошла успешно.

# vserver-info
^

Создание VPS


Для начала нужен образ VPS. Мы выберем для себя образ, на основе Gentoo. Скачаем и распакуем его:

# wget http://distfiles.gentoo.org/experimental/x86/vserver/stage3-i686-20060317.tar.bz2
# mkdir /usr/src/stage3-vserver
# tar -xjf stage3-i686-20060317.tar.bz2 -C /usr/src/stage3-vserver
# mkdir /usr/src/stage3-vserver/usr/portage

Если вы используете не Gentoo в качестве дистрибутива для главного сервера, вам понадобится скачать и установить дерево портежей (это дерево можно можно монтировать к нескольким VPS для совместного использования):

# wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2
# tar -xjf portage-latest.tar.bz2 -C /usr

Создадим базовую конфигурацию для нашего нового VPS:

# vserver testvps build -m skeleton --context 5 --initstyle plain

Рассмотрим параметры команды:

1) “testvps” -- имя виртуального сервера.

2) -m skeleton -- метод создания, означающий, что надо создать только конфигурационные файлы.

3) --context 5 -- идентификатор контекста.

4) --initstyle plain -- стиль загрузки (http://oldwiki.linux-vserver.org/InitStyles).

После выполнения данной команды, для нового сервера создана конфигурация в /usr/local/vserver/etc/vservers/testvps, зайдем в эту директорию.

Скопируем файловую систему нашего будущего VPS:

# cp /usr/src/stage3-vserver/* /var/vservers/testvps/ -pPR

Дополним fstab следующим образом:

# cat >> /usr/local/vserver/etc/vservers/testvps/fstab
/usr/portage /usr/portage none bind,ro 0 0
/usr/portage/distfiles /usr/portage/distfiles none bind,rw 0 0

Первая строчка монтирует “дерево портежей” в режиме “только чтение”, вторая -- директорию, содержащую архивы исходных файлов, используемые пакетным менеджером emerge.

Запустим наш новый виртуальный сервер:

# vserver testvps start

Посмотрим информацию о запущенных серверах:

# vserver-stat
CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME
0 106 1.6G 744.4M 36m41s10 6m39s70 17h45m58 root server
5 1 1.4M 492K 0m00s21 0m00s13 0m00s75 testvps

Обратите внимание, что главный сервер представляется как VPS с номером 0 и именем “root server”.

Для входа в консоль VPS можно использовать следующую команду:

# vserver testvps enter
^

Настройка сети в VPS


Прежде всего перейдем в каталог с конфигурацией интерфейсов виртуального сервера и создадим директорию для первого интерфейса:

# cd /usr/local/vserver/etc/vservers/testvps/interfaces
# mkdir 0
# cd 0/

Установим имя устройства, к которому будет присоединен IP-адрес нашего VPS:

# echo 'eth0' > dev

Укажем псевдоним устройства, создаваемого при инициализации VPS:

# echo 'testvps' > name

Настроим IP-адрес и маску сети:

# echo '192.168.0.2' > ip
# echo '24' > prefix

Перезагрузим VPS:

# vserver testvps restart

Для того, чтобы посмотреть получившийся результат, воспользуемся командой ip (входит в iproute2: http://linux-net.osdl.org/index.php/Iproute2).

# ip addr | grep 192.168.0.1

На экране мы увидим что-то вроде:

inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0:testvps

Обратите внимание, что полное имя устройства вида “<имя>:<псевдоним>” не может быть в длину больше 15 символов.

В VPS можно увидеть результат:

# vserver testvps enter

# ifconfig

Выход из консоли VPS осуществляется стандартно: комбинацией клавиш 'Ctrl-D' или командой logout.

Если по аналогии создать второй виртуальный сервер и присвоить ему IP-адрес из той же сети (например, 192.168.0.3) серверы смогут осуществлять коммуникации друг с другом.
^

Архитектурные рекомендации


Наиболее востребованной технология VPS оказалась для создания хостинговых решений. Большую актуальность она имеет и в образовательной среде, так как предоставляет возможность без последствий давать привилегии суперпользователя (root). А как без них обучить администрированию?

Рассмотрим четыре способа организации доступа к виртуальным серверам. Некоторые из них могут быть использованы для организации публичного (для неограниченной аудитории) доступа, другие -- для групп пользователей конечного размера. Выбирая наиболее эффективные варианты доступа в конкретной ситуации и правильно комбинируя их, можно добиться больших гибкости, удобства использования и надежности.

1. Публичный IP на каждый VPS.

Это самый простой вариант для реализации и в то же время самый расточительный для адресного пространства IP. Заключается он в том, что на каждый VPS выделяется один (или более) публичный IP. Таким образом, любой сервис, запущенный на VPS и слушающий на каком-то порту, будет доступен из глобальной сети.

2. Приватный IP + Port Forwarding (DNAT).

Этот вариант очень удобен, когда вы хотите предоставить доступ к одному или нескольким сервисам, запущенным на VPS, например, для администрирования.

VPS-серверам выделяются IP-адреса из приватного диапазона некоторой виртуальной сети. Для нужных сервисов на VPS-серверы пробрасываются порты с публичных IP-адресов, привязанных к самому серверу. Таким образом, обращаясь на один и тот же IP-адрес, например, по портам 21 (FTP) и 80 (HTTP), мы можем в действительности обращаться к разным VPS.

Основным недостатком такой реализации является разумеется то, что она совершенно не пригодна для HTTP-хостинга. Скорее всего, вас не поймут, если вы предложите одним своим клиентам обращаться к своему сайту по порту 1080, а другим -- по 8080, что простительно в случае с административным доступом.

3. Приватный IP + VPN.

Так же, как и в предыдущем варианте, VPS назначаются приватные IP-адреса. В получившуюся приватную сеть организовывается VPN-доступ с использованием например PPTP или OpenVPN, или IPSec.

Этот вариант может быть использован не для публичного доступа, а для административного или для доступа некоторой небольшой группы людей. Многие VPN-реализации предоставляют шифрование: таким образом, работая через VPN с сервисами, запущенными на VPS, можно гарантировать некоторый, достаточно высокий, уровень сохранности данных. В образовательной среде этот вариант имеет большие преимущества, так как позволяет малыми затратами адресного пространства сделать многое.

4. Приватный IP + HTTP-прокси.

На главном сервере или на одном из VPS с публичным IP-адресом мы запускаем реверсный HTTP-прокси-сервер, перенаправляющий, в зависимости от доменного имени, запросы внутрь виртуальной сети на нужные VPS. Таким образом через 80 порт на одном публичном IP мы можем предоставлять HTTP доступ к сайтам, расположенным на разных VPS. В качестве реверсного прокси сервера прекрасно подходит продукт российского производства nginx (http://sysoev.ru/).

Этот вариант, к большому сожалению (в силу внутреннего устройства протокола), пригоден только для HTTP.
^

Настройка ограничений дискового пространства


Для настройки перейдем в директорию с конфигурацией VPS и создадим там каталог:

# cd /usr/local/vserver/etc/vservers/testvps/
# mkdir dlimits
# mkdir dlimits/0
# cd dlimits/0

Укажем директорию, для которой мы устанавливаем ограничения:

# echo '/var/vservers/testvps' > directory

Ограничим количество индексных дескрипторов файлов:

# echo '100000' > inodes_total

Ограничим пятью гигабайтами место, доступное VPS:

# echo '5242880' > space_total

Установим процент от общего размера, резервируемый для пользователя root.

# echo '5' > reserved

После этого перезагрузим VPS, войдем в него и посмотрим, что получилось:

# df -h
/dev/hdv1 5,0G 0 4,8G 0% /

Так как для файлов образа не установлен идентификатор контекста (XID), место на диске, занимаемое ими, не учитывается. Если вы хотите, чтобы и оно учитывалось, можно сделать следующее:

# vserver testvps stop
# chxid -c 5 -R /var/vservers/testvps
# vserver testvps start

Входим и проверяем:

# df -h
/dev/hdv1 5,0G 503M 4,3G 11% /
^

Настройка ограничений ресурсов


Перейдем в директорию с конфигурацией виртуального сервера:

# cd /usr/local/vserver/etc/vservers/testvps/
# mkdir rlimits
# cd rlimits

Существуют следующие ресурсы: cpu, fsize, data, stack, core, rss, nproc, nofile, memlock, as, locks. Более подробно о типах ресурсов можно прочитать в 'man setrlimit'. В директории создаются файлы с именами <имя ресурса>.min, <имя ресурса>.soft, <имя ресурса>.hard, в которых и определяются конкретные ограничения для ресурсов.

В файле /usr/local/vserver/etc/vservers/testvps/flags вы можете установить флаги, рассмотрим некоторые часто используемые:

virt_uptime -- показывать внутри VPS время работы виртуального сервера.

virt_load -- показывать индикатор загрузки VPS, а не главного сервера.

sched_hard -- указывает планировщику замораживать процесс, если он превысил лимит мощности процессора.

sched_prio -- указывает планировщику понижать приоритет процесса, если он превысил лимит процессора.

fork_rss -- запрещать системный вызов fork если превышен rlimit rss.

В файле /usr/local/vserver/etc/vservers/schedule вы можете установить параметры планировщика. Например, для того, чтобы VPS выделялось 7/32 (21.9%) каждого процесса, а в случае превышения -- он приостанавливался на (200 / 7) * 32 = 928 так называемых “мгновений” (jiffies), нужно создать файл следующего содержания:

7
32
500
200
1000
string

928 jiffies -- это порядка одной секунды, если частота таймера равна 1000 Гц и примерно десять секунд, если частота равна 100 Гц (частота таймера в конфигурации ядра: Processor type and features -> Timer frequency).

Управление планировщиком находится в стадии разработки и может измениться.

Более подробно об этих и многих других настройках можно прочитать в документации на официальном сайте: http://wiki.linux-vserver.org/VServerConfiguration.

Вывод


За время практики была рассмотрена система виртуализации с открытым кодом Linux-VServer. В результате анализа возможностей этой системы, ее внедрения на тестовом сервере и конфигурации сделан вывод о том, что она удовлетворяет потребностям, предъявляемым к виртуализации применительно к единой информационной среде кафедры ИКТ: обладает необходимым функционалом, стабильна в работе, достаточно гибка в настройке. В отчете представлены основные возможности Linux-VServer и рекомендации по ее конфигурации.


Добавить документ в свой блог или на сайт

Похожие:

Проект студента группы с-105 кафедры «Информационно-коммуникационные технологии»
Работа А. В. Муратова является своевременной и актуальной, поскольку разработка надежного и удовлетворяющего всем техническим требованиям...

Дипломной практике тема диплома: Разработка системы позиционирования...
Тема диплома: Разработка системы позиционирования транспорта по сигналам сотовых сетей

Дипломной практике тема диплома: Разработка библиотеки для просмотра...
Тема диплома: Разработка библиотеки для просмотра сферических панорам средствами html5

Отчет о преддипломной практике Тема «Разработка решения для централизованного...
Тема «Разработка решения для централизованного мониторинга ресурсов еис кафедры икт»

Дипломной практике тема диплома: Разработка распределенной системы управления хостингом
То есть, фактически описываемые модели маршрутизаторов являются небольшими компьютерами. Далее везде под понятиями «маршрутизатор»...

«Утверждаю» Зав кафедрой задание на дипломное проектирование Азаров В. Н
Разработка комплексной системы электронной почты корпоративного уровня в рамках единой информационной среды кафедры

Разработка модуля проверки уникальности контента для движка mediawiki
Для решения данной задачи и был спроектирован, запрограммирован и внедрен в рамках единой информационной системы кафедры икт модуль...

Дипломному проекту На тему Разработка
На тему «Разработка решения для централизованного мониторинга ресурсов еис кафедры икт»

Отчет по преддипломной практике тема диплома
Федеральное государственное автономное образовательное учреждение высшего Профессионального образования

Паспорт подпрограммы
Об утверждении районной целевой программы «Развитие единой образовательной информационной среды на 2013-2016 годы»

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
odtdocs.ru
Главная страница