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

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

  • Upload
    ontico

  • View
    1.097

  • Download
    4

Embed Size (px)

Citation preview

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 изнутри