The personal blog of Andrey Markelov (Андрей Маркелов) about Linux and Cloud computing.
21 мая 2015
11 мая 2015
Настройка работы Docker и OpenStack
Первое с чего мы начнем —
это установка Docker и необходимых пакетов.
Обращаю внимание, что этот вариант
установки подходит только для тестовых
сред. Для «боевой установки» следует
собрать rpm-пакет с драйвером Docker и не
устанавливать на вычислительные узлы
средства, применяемые при разработке.
Действия выполняем на вычислительном
узле:
[root@os2 ~]# yum -y install net-tools docker-io python-pip git
Также обратите внимание на
то, что мы устанавливаем пакет net-tools,
который в современных дистрибутивах
при установке по умолчанию заменен на
iproute,а утилиты из его состава имеют
статус устаревших. Нам он понадобится
ради команды ifconfig, которая используется
драйвером Docker.
Теперь забираем с Github исходный код
драйвера и устанавливаем:[root@os2 ~]# git clone https://github.com/stackforge/nova-docker.git
[root@os2 ~]# cd nova-docker
[root@os2 nova-docker]# git checkout -b pre-i18n 9045ca43b645e72751099491bf5f4f9e4bddbb91
[root@os2 nova-docker]# python setup.py install
[root@os2 nova-docker]# pip install pbr
Команду git checkout мы выполняем
до обновления исходного кода, который
«ломает» совместимость с релизом
OpenStack Juno. Следующим шагом запускаем и включаем
сервис Docker и выполняем не очень «чистый»
обходной прием с правами, для того чтоб
в CentOS драйвер получил доступ к Docker:
[root@os2 ~]# systemctl start docker
[root@os2 ~]# systemctl enable docker
[root@os2 ~]# chmod 660 /var/run/docker.sock
Нам необходимо в соответствии
с инструкцией на Github настроить драйвер.
Создаем файл с инструкциями по настройки
сети для Docker:
[root@os2 ~]# mkdir /etc/nova/rootwrap.d
[root@os2 ~]# vi /etc/nova/rootwrap.d/docker.filters
и в файл docker.filters копируем
следующие содержимое:
#nova-rootwrap command filters for setting up network in the docker driver
# This file should be owned by (and only-writeable by) the root user
[Filters]
# nova/virt/docker/driver.py: 'ln', '-sf', '/var/run/netns/.*'
ln: CommandFilter, /bin/ln, root
Наконец на узле Glance добавляем к форматам
контейнеров docker:
[root@os1 ~]# crudini --set /etc/glance/glance-api.conf DEFAULT container_formats ami,ari,aki,bare,ovf,ova,docker
[root@os1 ~]# systemctl restart openstack-glance-api
А на вычислительном узле os2 в качестве драйвера указываем драйвер Docker. Других изменений производить не надо:
[root@os2 ]# crudini --set /etc/nova/nova.conf DEFAULT compute_driver novadocker.virt.docker.DockerDriver
[root@os2 ]# systemctl restart openstack-nova-compute
Теперь тестируем нашу
конфигурацию. Для начала ограничимся
работоспособностью контейнеров Docker.
Попробуем запустить контейнер с
дистрибутивом Fedora:
[root@os2 ~]# docker run -i -t fedora /bin/bash
Unable to find image 'fedora:latest' locally
Trying to pull repository docker.io/fedora ...
...
Status: Downloaded newer image for docker.io/fedora:latest
bash-4.3# cat /etc/redhat-release
Fedora release 21 (Twenty One)
Как мы видим, из репозитория docker.io был скачен последний образ Fedora и запущен. Если посмотреть на список контейнеров, мы также это уведем:
[root@os2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb7b37a3a1b2 fedora:latest "/bin/bash" 9 minutes ago Up 9 minutes heisenberg
Теперь скачаем образ с
минимальным http-сервером thttpd, который
будем использовать для проверки работы:
[root@os2 ~]# docker pull larsks/thttpd
Trying to pull repository docker.io/larsks/thttpd ...
...
Status: Downloaded newer image for docker.io/larsks/thttpd:latest
После этого загрузим его в Glance:
[root@os2 ~]# source keystonerc_admin
[root@os2 ~]# docker save larsks/thttpd | glance image-create --is-public True --container-format docker --disk-format raw --name larsks/thttpd
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | c98dcd00b284eaf35ba8d10e1bff941c |
| container_format | docker |
| created_at | 2015-05-09T19:42:23 |
| deleted | False |
| deleted_at | None |
| disk_format | raw |
| id | 7133ae58-03aa-4d80-af98-adf5e1c02a5e |
| is_public | True |
| name | larsks/thttpd |
| owner | a5c42139ce154b4d945b4ed806cbee81 |
| protected | False |
| size | 1083392 |
| status | active |
| updated_at | 2015-05-09T19:42:25 |
| virtual_size | None |
+------------------+--------------------------------------+
Проверяем список образов:
[root@os2 ~]# glance image-list
+------+---------------------+-------------+------------------+----------+--------+
| ID | Name | Disk Format | Container Format | Size | Status |
+------+---------------------+-------------+------------------+----------+--------+
| bc.. | cirros-0.3.3-x86_64 | qcow2 | bare | 13200896 | active |
| 71.. | larsks/thttpd | raw | docker | 1083392 | active |
+------+---------------------+-------------+------------------+----------+--------+
И в графическом интерфейсе Horizon:
Наконец, можно попробовать создать экземпляр контейнера:
$ source keystonerc_demo
$ nova boot --image larsks/thttpd --flavor m1.small test1
+--------------------------------------+-------------------------------------+
| Property | Value |
+--------------------------------------+-------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| adminPass | Y6htpjH5xe2X |
| created | 2015-05-09T20:05:08Z |
| flavor | m1.small (2) |
| id | 65de57d0-f033-4818-a522-2c3291dc.. |
| image | larsks/thttpd (7133ae58-03aa-4d8..) |
| metadata | {} |
| name | test1 |
| os-extended-volumes:volumes_attached | [] |
| security_groups | default |
| status | BUILD |
| tenant_id | 9c1c71f2c0f243b7a3b1d0d1880820e9 |
| updated | 2015-05-09T20:05:08Z |
| user_id | f3aabe457c2c4fe5912a0f90e569e04d |
+--------------------------------------+-------------------------------------+
Проверяем, что контейнер запущен:
[root@os2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4680097f2cc0 larsks/thttpd:latest "/thttpd -D -l /dev/ 13 minutes ago Up 13 minutes nova-65de57d0-f033-4818-a522-2c3291dc516bВ графическом интерфейсе это выглядит следующим образом:
Для доступа к http-серверу присвоим экземпляру внешний floating IP:
[root@os1 ~]# nova floating-ip-associate test1 10.100.1.101
Проверяем:
[root@os1 ~]# nova list
+------+-------+--------+------------+-------------+-----------------------+
| ID | Name | Status | Task State | Power State | Networks |
+------+-------+--------+------------+-------------+-----------------------+
| 65.. | test1 | ACTIVE | - | Running | demo-net=172.16.0.14, |
| | | | | | 10.100.1.101 |
+------+-------+--------+------------+-------------+-----------------------+
И из тестовой машины со внешней сети пробуем подключится к серверу:
$ curl http://10.100.1.101
____ _ _
_ _
/ ___|___ _ __ __ _ _ __ __ _| |_ _ _| |
__ _| |_(_) ___ _ __ ___
| | / _ \| '_ \ / _` | '__/ _` | __| | | | |/
_` | __| |/ _ \| '_ \/ __|
| |__| (_) | | | | (_| | | | (_| | |_| |_| | |
(_| | |_| | (_) | | | \__ \
\____\___/|_| |_|\__, |_|
\__,_|\__|\__,_|_|\__,_|\__|_|\___/|_| |_|___/
|___/
Все работает, можно наградить себя
чашечкой кофе.
10 мая 2015
Пара новых статей про OpenStack и СПО
В журнале "Системный администратор" 5/2015 опубликована вторая статья из моего цикла про OpenStack. Полная версия в печатной версии журнала. http://samag.ru/archive/article/2936
Также вышла небольшая заметка в журнале "Бизнес и Информационные технологии" (БИТ). Тема номера - свободное программное обеспечение http://bit.samag.ru/archive/more/151
08 апреля 2015
First article of the series of my articles on OpenStack
First article of the series of my articles on OpenStack was published in Russian magazine "Системный администратор" 4/2015 http://samag.ru/archive/article/2922 . Read the full version in paper. Online later.
01 апреля 2015
Заметки по поиску неисправностей в сервисах Swift
Сервисы Swift пишут сообщения
об ошибках в системный журнал
/var/log/messages. Как правило там могут быть
trace-сообщения Python.
Проверьте что все сервисы
запущенны при помощи команды lsof -i и что
они работают на правильных портах. Если
вы не нашли в списке одну из служб, вы
можете попытаться запустить ее вручную,
указав исполнимому файлу ваш
конфигурационный файл. Например:
[root@sw3 ~]# swift-object-server /etc/swift/object-server.conf
Traceback (most recent call last):
File "/usr/bin/swift-object-server", line 27, in
...
LookupError: No loader given in section 'filter:recon'
Сервис не запускается и из
вывода видно, что в данном случае имеется
ошибка конфигурационного файла в секции
recon.
В случае возникновения ошибок
типа 503 Service Unavailable в первую очередь
проверьте конфигурационные ошибки на
опечатки, затем корректность имени и
пароля в Keystone, а также корректность
заведения URI точик входа в API сервиса.
В принципе, недоступность
любого сервиса (Keystone, RabbitMQ или бэкенда
Ceph или GlusterFS) может вызвать ошибку 503
Service Unavailable. Проверьте соответствующие
сервисы.
Ошибки в создании кольца
нельзя исправить выполнением еще одной
команды swift-ring-builder add. Предварительно
необходимо отдать команду swift-ring-builder
remove.
21 марта 2015
OpenStackClient — новый официальный проект OpenStack
Недавно список официальных проектов OpenStack пополнился еще одним проектом — OpenStackClient
Утилита командной строки openstack представляет собой единый унифицированный клиент для доступа к OpenStack API. В целом, OpenStackClient позволяет делать тоже самое, что и утилиты каждого сервиса (nova, neutron, keystone-manage и др.), но при помощи единой команды и унифицированного формата.
Добавление утилиты в RDO сводится к установке пакета:
[root@os1 ~]# yum -y install python-openstackclient
Для аутентификации клиент использует ту же схему, что и другие утилиты, за исключением замены устаревших «тенантов» (OS_TENANT_NAME) на «проекты». Пример моего keystonerc тестовой среды:
unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URL SERVICE_TOKEN SERVICE_ENDPOINT
export OS_AUTH_URL=http://os1.test.local:35357/v2.0/
export OS_USERNAME=admin
export OS_PROJECT_NAME=admin
export OS_PASSWORD=openstack
И можно пользоваться:
[root@os1 ~]# openstack project create demo2
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | None |
| enabled | True |
| id | 4f33784c2a7a487fa8e7b5b8a2c0af87 |
| name | demo2 |
+-------------+----------------------------------+
[root@os1 ~]# openstack project list
+----------------------------------+---------+
| ID | Name |
+----------------------------------+---------+
| 4b0971bf0f5e4835a87af1d21121def5 | service |
| 4f33784c2a7a487fa8e7b5b8a2c0af87 | demo2 |
| 9c1c71f2c0f243b7a3b1d0d1880820e9 | demo |
| a5c42139ce154b4d945b4ed806cbee81 | admin |
+----------------------------------+---------+
Команда openstack help -h выведет подсказку по командам или можно ввести help в интерактивном режиме. Команды строятся по принципу: взять объект1 и произвести над ним действие при помощи объекта2
Ну и наглядный пример, который приводит один из разработчиков:
Замена
Утилита командной строки openstack представляет собой единый унифицированный клиент для доступа к OpenStack API. В целом, OpenStackClient позволяет делать тоже самое, что и утилиты каждого сервиса (nova, neutron, keystone-manage и др.), но при помощи единой команды и унифицированного формата.
Добавление утилиты в RDO сводится к установке пакета:
[root@os1 ~]# yum -y install python-openstackclient
Для аутентификации клиент использует ту же схему, что и другие утилиты, за исключением замены устаревших «тенантов» (OS_TENANT_NAME) на «проекты». Пример моего keystonerc тестовой среды:
unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URL SERVICE_TOKEN SERVICE_ENDPOINT
export OS_AUTH_URL=http://os1.test.local:35357/v2.0/
export OS_USERNAME=admin
export OS_PROJECT_NAME=admin
export OS_PASSWORD=openstack
И можно пользоваться:
[root@os1 ~]# openstack project create demo2
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | None |
| enabled | True |
| id | 4f33784c2a7a487fa8e7b5b8a2c0af87 |
| name | demo2 |
+-------------+----------------------------------+
[root@os1 ~]# openstack project list
+----------------------------------+---------+
| ID | Name |
+----------------------------------+---------+
| 4b0971bf0f5e4835a87af1d21121def5 | service |
| 4f33784c2a7a487fa8e7b5b8a2c0af87 | demo2 |
| 9c1c71f2c0f243b7a3b1d0d1880820e9 | demo |
| a5c42139ce154b4d945b4ed806cbee81 | admin |
+----------------------------------+---------+
Команда openstack help -h выведет подсказку по командам или можно ввести help в интерактивном режиме. Команды строятся по принципу: взять объект1 и произвести над ним действие при помощи объекта2
Ну и наглядный пример, который приводит один из разработчиков:
Замена
$ nova boot --flavor='2G' -- image='Gentoo' # Nova talks to Glance
$ cinder give-me-a-10G-volume
$ nova attach-that-volume-to-my-computer # nova talks to cinder
$ neutron give-me-an-ip
$ nova attach-that-floating-ip-to-my-computer # nova talks to neutron
$ designate call-that-ip 'example.com' --reverse-dns # designate to neutron
всего на одну строку
$ openstack boot gentoo on-a 2G-VM with-a publicIP with-a 10G-volume call-it example.com
Пакет python-openstackclient-doc устанавливает в /usr/share/doc/ документацию на клиент с сайта:
17 марта 2015
Курсы и экзамены по облачным технологиям в ближайшие месяцы
В ближайшие месяцы читаю в Инвенте курсы:
- 27 апреля 2015 - CL210 Администрирование OpenStack
- 5 Мая 2015 - RH403 Администрирование Satellite 6
- 12 Мая 2015 - RH442 Мониторинг и настройка производительности промышленных систем Red Hat (обновленно до RHEL 7)
- 18 Мая 2015 - RH318 Администрирование Red Hat Enterprise Virtualization
- 1 Июня 2015 - RH436 Управление хранением данных на предприятии
- 8 Июня 2015 - RH280 Администрирование PaaS OpenShift Enterprise
Ну и до кучи экзамены:
20 апреля - EX401
21 апреля - EX436
22 мая - EX318
27 мая - EX236
28 мая - EX442
29 мая - EX210
5 июня - EX436
11 июня - EX280
17 июня - EX413
Желающие могут за апрель-май сдать RHCA :) Можно выбрать пять желаемых из восьми. Записывайтесь на сайте Инвенты.
Подписаться на:
Сообщения (Atom)