воскресенье, 26 июня 2016 г.

Знакомство с OpenStack

Это выдержка из методички, которую я писал для студентов-магистров.
Поэтому тут будет немного очевидных пояснений для студентов.

Сервис TryStack позволяет использовать уже готовое окружение OpenStack без развертывания сложной инфраструктуры на локальных серверах.

Для регистрации на сервисе необходимо иметь аккаунт в Facebook и вступить в группу TryStack.
Ведется разработка OpenStackID для авторизации на сервисе с помощью OAuth2, однако регистрация возможна только через Facebook.

После отправки заявки на вступление в закрытую группу возможно придется подождать несколько дней подтверждения заявки.
Когда заявка подтверждена, то можно авторизоваться в панели TryStack с помощью аккаунта Facebook.

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

OpenStack позволяет создавать множество инстансов из готовых шаблонов ОС, также существует возможность создавать свои образы.
Доступные шаблоны ОС можно наблюдать в разделе Compute - Images.

Для настройки OpenStack в первую очередь необходимо настроить сеть.

Создадим внутреннюю сеть с именем student-net, подсеть student-subnet (192.168.0.0/24), укажем пул используемых IP-адресов (192.168.0.2 -- 192.168.0.10) и укажем DNS-сервера (8.8.8.8, 8.8.4.4) в разделе Network - Networks - Create Network.



После создания внутренней сети, необходимо создать маршрутизатор, который соединит внешнюю сеть (public) с внутренней (student-net), сделать это можно в разделе Network - Routers - Create Router.


Текущую топологию сети можно увидеть в разделе Network - Network Topology.
На схеме видно, что маршрутизатор (student-router) связан с внешней сетью (public), но не с внутренней (student-net).

Соединяем маршрутизатор с внутренней сетью.
Щелкаем на маршрутизатор и выбираем пункт Add Interface, добавляем внутреннюю сеть (student-net) к маршрутизатору, в качестве шлюза указываем адрес 192.168.0.1.


После этого можно посмотреть на новую топологию сети.
Видно что теперь маршрутизатор соединяет внутреннюю и внешнюю сети.

На этом настройка сети для OpenStack окончена.

По умолчанию для подключения к инстансам используется подключение по SSH с помощью шифрованых ключей.
Поэтому необходимо создать пару ключей, сделать это можно в разделе Access & Security - Key Pairs - Create Key Pair.
Пусть это будет пара ключей с именем student123.

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

Для соединения к инстансу с внешнего мира, необходимо иметь выделенный внешний IP-адрес.
В TryStack можно получить только один такой адрес, сделать это можно в разделе Compute - Access & Security - Floating IPs - Allocate IP To Project.
В некоторых случаях возможно, что выделить внешний IP-адрес не удается, в таком случае необходимо попробовать позже, предварительно обновив веб-страницу, это связано с ограниченным пулом IP-адресов, поэтому для всех пользователей TryStack таких адресов может не хватать.

После получения внешнего адреса, можно увидеть в списке.

Далее необходимо создать группу безопасности, в которой можно настроить правила фильтрации трафика для инстанса.
В разделе Compute - Access & Security - Security Groups - Create Security Group создадим группу my-secgroup.

После создания группы, в общем списке выбираем пункт Manage Rules для my-secgroup.
Там можем видеть, что по умолчанию для данной группы открыты все исходящие соединения для IPv4 и IPv6.
Создадим разрешаюшее правило для входящих соединений по протоколу ICMP.

Аналогично создадим разрешающие правила для TCP и UDP.

Далее мы можем создать первый инстанс (Compute - Instances - Launch Instance - Details).
Создадим его на базе ОС Ubuntu 16.04, размер инстанса m1.small (2048MB RAM, 20GB HDD).
Имя инстанса student-instance.

В разделе Access & Security укажем пару ключей student123 и группу безопасности my-secgroup.
В разделе Networking выберем сеть student-net.

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

Для того, чтобы получить доступ к инстансу с внешней сети, необходимо привязать к инстансу внешний IP-адрес.
В разделе Compute - Access & Security - Floating IPs напротив IP-адреса нажимаем кнопку Associate, затем указываем, что ассоциируем адрес с инстансом student-instance.

После этого в списке инстансов видим, что student-instance присвоен внешний IP-адрес 8.43.86.56.

После того, как к инстансу привязан внешний адрес, можно проверить его доступность, пропинговав адрес и соединиться по SSH (это можно сделать с помощью Putty):
$ ping -c 1 8.43.86.56
PING 8.43.86.56 (8.43.86.56) 56(84) bytes of data.
64 bytes from 8.43.86.56: icmp_seq=1 ttl=49 time=144 ms

--- 8.43.86.56 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 144.067/144.067/144.067/0.000 ms

$ ssh [email protected] -i Downloads/student123.pem
$ sudo -s
# dmidecode -s system-product-name
OpenStack Nova

Инстансы созданные в TryStack доступны на протяжении 24 часов, так как сервис бесплатный, он позволяет только взглянуть на то, как работает OpenStack, поэтому он не годится для размещения своих проектов в облаке.

На таких инстансах доступно использование любого ПО, по аналогии с виртуальной машиной VirtualBox.

Установим для примера веб-сервер Nginx и разместим для общего доступа HTML-страничку.
# apt-get update && apt-get install nginx
# echo "<h1>Hello, this instance created by OpenStack.</h1>" > /var/www/html/index.nginx-debian.html
# echo "<h3>Computer Science and Engineering, SevSU</h3>" >> /var/www/html/index.nginx-debian.html

Заходим из веб-браузера по адресу инстанса (8.43.86.56) и видим наше небольшое "веб-приложение".

Комментариев нет: