Top Banner
OpenStack изнутри Евгений Потапов
39

Евгений Потапов (Сумма Айти)

May 15, 2015

Download

Internet

Ontico
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Евгений Потапов (Сумма Айти)

OpenStack изнутри

Евгений Потапов

Page 2: Евгений Потапов (Сумма Айти)

Евгений Потапов

10 лет опыта веб-разработки

5 лет опыта использования облачных технологий

генеральный директор компании «Сумма АйТи»

Page 3: Евгений Потапов (Сумма Айти)

Стартовали в 2008 году в Иркутске

Поддержка высоконагруженных веб-сайтов

140 миллионов посетителей в сутки

1000+ серверов на поддержке

40 специалистов

Page 4: Евгений Потапов (Сумма Айти)
Page 5: Евгений Потапов (Сумма Айти)

внутренние задачи

Page 6: Евгений Потапов (Сумма Айти)

внутренние задачитестирование failover-планов(быстро переключились на резервную архитектуру)

развертывание бэкапов(накатили свежий бэкап и убедились что он работает)

тестирование новых версий ПО(выкатили новую версию и убедились что она не падает)

тестирование новых решений(mongo db is web scale)

разработка внутренних проектов(доработки мониторинга, машины для девелоперов и тд)

Page 7: Евгений Потапов (Сумма Айти)

удобно и просто(не залезая в консоль можно сделать виртуалку, использовать и удалить)

о парке хост-машин думать не надо(не нужно думать о том что на хост-машине может полететь рейд-массив)

что используем за то и платим(платим только за то, что используем)

+

Page 8: Евгений Потапов (Сумма Айти)

на самом деленужно следить за AWS постоянно

закончил таск – выключи инстанс(AWS – дорогая штука при оплате за месяц)

работа на паузе – останови инстанс(не дай бог что-то было в ephemeral)

надо что-то запустить – дважды подумай(может не стоит запускать эту фигню на две недели на m1.xlarge?)

-

Page 9: Евгений Потапов (Сумма Айти)

а может ? о нем много говорят(большое комьюнити, будет нормальная поддержка)

навсегда забыть об остановках инстансов ради экономии при этом также удобно как AWS(пусть себе работает до тех пор пока не потребуются ресурсы)

вообще в целом - дешевле(на hetzner Xeon E5-1650 64GB RAM стоит 99 евро)

да и просто интересно(тренды нужно знать)

Page 10: Евгений Потапов (Сумма Айти)
Page 11: Евгений Потапов (Сумма Айти)

Не специализируемся на OpenStack

Личный опыт (+опыт друзей и коллег)

Доклад на стыке системного администрирования и менеджмента, но есть хардкор

Page 12: Евгений Потапов (Сумма Айти)

OpenStack - структура

http://www.openstack.org/software/

Page 13: Евгений Потапов (Сумма Айти)

“The diagram below, illustrates the most common architecture of an OpenStack-based cloud”

http://www.solinea.com/blog/openstack-grizzly-architecture-revisited

Page 14: Евгений Потапов (Сумма Айти)

OpenStack - структураNova – контроллер виртуализацииNeutron (Quantum) – управление сетевой инфраструктуройCinder – управление дисковой инфраструктуройGlance – управление образамиKeystone – служба идентификацииHorizon – Dashboard

Page 15: Евгений Потапов (Сумма Айти)

OpenStack - структура

http://ilearnstack.com/tag/openstack/

Page 16: Евгений Потапов (Сумма Айти)

OpenStack NovaNova – контроллер виртуализации

Службы Nova:API – интерфейс к NovaAMPQ – служба очередейCompute – взаимодействие с гипервизоромConductor – интерфейс взаимодействия с БД для ComputeScheduler – выбор узла для выполнения запроса из очереди

Page 17: Евгений Потапов (Сумма Айти)

OpenStack Nova

Page 18: Евгений Потапов (Сумма Айти)

OpenStack Nova1. Запрос на создание инстанса приходит в Nova API 2. Nova API записывает в очередь запрос к Nova Scheduler о том, что надо выполнить такой запрос3. Nova Scheduler получает запрос из очереди, выбирает узел на котором надо выполнить запрос.4. Nova Scheduler шлет запрос в очередь для Nova Compute о том, что надо запустить инстанс

Page 19: Евгений Потапов (Сумма Айти)

OpenStack Nova

Page 20: Евгений Потапов (Сумма Айти)

OpenStack Nova5. Nova Compute получает из очереди запрос о том что надо получить инстанс.6. …но Nova Compute не знает о том, какие у инстанса параметры – так как с параметрами в базе общается Nova Conductor7. Nova Compute отправляет запрос в очередь к Nova Conductor о том что надо получить параметры инстанса

Page 21: Евгений Потапов (Сумма Айти)

OpenStack Nova

Page 22: Евгений Потапов (Сумма Айти)

OpenStack Nova8. Nova Conductor делает запрос в БД о свойствах инстанса и отдает в очередь ответ с информацией о свойствах запускаемого инстанса9.Nova Compute запускает инстанс с заданными свойствами.

Page 23: Евгений Потапов (Сумма Айти)

OpenStack Nova

Page 24: Евгений Потапов (Сумма Айти)

OpenStack NovaБД – MySQLОчередь – QIPD или RabbitMQ7 демонов

те или иные ошибки возникают регулярно

Page 25: Евгений Потапов (Сумма Айти)

OpenStack Nova«Race condition возникает в момент запуска и одновременного с этим удаления инстанса, если на инстансы назначена одна и та же security group»https://bugs.launchpad.net/nova/+bug/1202449

Page 26: Евгений Потапов (Сумма Айти)

OpenStack Nova«Невозможно запустить инстанс, если существуют несколько security group с одним и тем же именем (например, в других проектах), и эта security group назначена на этот инстанс»https://bugs.launchpad.net/nova/+bug/1203413

Page 27: Евгений Потапов (Сумма Айти)

OpenStack Nova«Инстансы в состоянии suspend нельзя вывести из этого состояния после перезагрузки host-машины»

- “My lessons learned are: NEVER PUT YOUR INSTANCE IN SUSPEND STATE!!!”

https://bugs.launchpad.net/nova/+bug/1052696

Page 28: Евгений Потапов (Сумма Айти)

https://twitter.com/lusis/status/436697765679468544

Page 29: Евгений Потапов (Сумма Айти)

Neutron«Neutron это система для управления сетями и IP адресами».«Neutron позволяет вам быть уверенным в том, что сеть – не будет узким местом или лимитирующим фактором в вашей облачной среде»

http://en.wikipedia.org/wiki/OpenStack

Page 30: Евгений Потапов (Сумма Айти)

Neutron

http://openstack.redhat.com/Networking_in_too_much_detail

Page 31: Евгений Потапов (Сумма Айти)

Neutron1. Виртуальная машина получает информацию об IP-адресе своего интерфейса по DHCP (об этом позже)

[itsumma@cloud ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=dhcpONBOOT=yes

пусть, назначен адрес 10.0.0.12

Page 32: Евгений Потапов (Сумма Айти)

Neutron2. Сетевой интерфейс виртуальной машины соединяется с TAP-устройством хост-машины

Page 33: Евгений Потапов (Сумма Айти)

Neutron3. На TAP-девайс, связанный с данной виртуальной машиной, навешаны iptables чейны, в которых прописаны правила назначенной на машину секьюрити-группы

Page 34: Евгений Потапов (Сумма Айти)

Neutron4. TAP-девайс соединен с интерфейсом br-int, реализованном через Open vSwitch.

«Open vSwitch – программный многоуровневый коммутатор с открытым исходным кодом, предназначенный для работы в гипервизорах и на компьютерах с виртуальными машинами»

http://openvswitch.org/

Page 35: Евгений Потапов (Сумма Айти)

Neutron5. Интерфейс br-int соединяется с интерфейсом br-ext, который уже доступен хост-машине, но это не все

Page 36: Евгений Потапов (Сумма Айти)

Neutron6. DHCP на виртуальные машины раздается через приложение dnsmasq, работающее внутри network namespace – службы linux, которая позволяет запустить собственный сетевой стэк для группы процессов

Page 37: Евгений Потапов (Сумма Айти)

Neutron[root@openstack itsumma]# ip netns exec qrouter-89f090d0-aa1e-4189-bfd8-b8381de2cc97 iptables -t nat -S-A neutron-l3-agent-OUTPUT -d x.x.x.126/32 -j DNAT --to-destination 10.0.0.16-A neutron-l3-agent-OUTPUT -d x.x.x.123/32 -j DNAT --to-destination 10.0.0.18-A neutron-l3-agent-OUTPUT -d x.x.x.245/32 -j DNAT --to-destination 10.0.0.13-A neutron-l3-agent-OUTPUT -d x.x.x.124/32 -j DNAT --to-destination 10.0.0.19-A neutron-l3-agent-OUTPUT -d x.x.x.244/32 -j DNAT --to-destination 10.0.0.9-A neutron-l3-agent-OUTPUT -d x.x.x.125/32 -j DNAT --to-destination 10.0.0.20-A neutron-l3-agent-OUTPUT -d x.x.x.122/32 -j DNAT --to-destination 10.0.0.17

Page 38: Евгений Потапов (Сумма Айти)

Хватит безумия, выводы На развертывание системы с нуля уходит от двух недель до двух месяцевНа хостинге должна быть возможность просто сделать OS Reload – это обязательно потребуется в первое время, несколько разЦелесообразность экономии при использовании одной машины неочевидна – у нас ушло полтора месяца работы одного человекаДля небольших деплойментов – лучше подождать пару лет

Page 39: Евгений Потапов (Сумма Айти)

Евгений Потапов

http://[email protected]://twitter.com/eapotapov

OpenStack изнутри