Klient z finančního sektoru potřeboval cloud — ale z regulatorních důvodů nemohl data umístit mimo vlastní datové centrum. Veřejné cloudy jako AWS nepřicházely v úvahu. Rozhodli jsme se postavit privátní cloud na OpenStacku.
Proč OpenStack?¶
Na trhu privátních cloudů v roce 2014 existovalo několik alternativ: VMware vCloud Suite (drahý, ale prověřený), CloudStack (jednodušší nasazení) a OpenStack (největší komunita, modulární architektura). Klient chtěl vendor-nezávislé řešení bez lock-inu k jednomu dodavateli. OpenStack — podporovaný firmami jako Rackspace, IBM, HP, Red Hat a desítkami dalších — byl logická volba.
V dubnu 2014 vyšla verze Icehouse, která přinesla výrazné zlepšení stability a nové funkce v síťové vrstvě. Na ní jsme stavěli.
Komponenty OpenStacku¶
OpenStack není jeden produkt — je to ekosystém služeb, kde každá řeší jeden aspekt cloudové infrastruktury:
- Keystone — identita a autentizace, centrální správa uživatelů a tenantů
- Nova — compute služba, spravuje životní cyklus virtuálních strojů
- Neutron — síťová služba, virtuální sítě, subnety, routery, firewally
- Cinder — blokové úložiště, persistentní disky pro VM
- Glance — registry obrazů (images) operačních systémů
- Horizon — webový dashboard pro správu
- Swift — objektové úložiště (obdoba S3)
- Heat — orchestrace, Infrastructure as Code šablony
Hardware a topologie¶
Nasadili jsme OpenStack na 12 fyzických serverů v jednom racku: 3 controller nody (HA), 8 compute nodů a 1 storage node s Ceph clusterem. Každý compute node měl dva Xeon E5-2650 v2, 128 GB RAM a 2× SSD pro ephemeral storage. Síť byla 10 GbE s dedikovanými VLANy pro management, tenant traffic a storage.
# Heat šablona — vytvoření VM s floating IP
heat_template_version: 2014-10-16
resources:
web_server:
type: OS::Nova::Server
properties:
image: ubuntu-14.04-lts
flavor: m1.medium
key_name: deploy-key
networks:
- network: { get_resource: internal_net }
floating_ip:
type: OS::Neutron::FloatingIP
properties:
floating_network: external
association:
type: OS::Neutron::FloatingIPAssociation
properties:
floatingip_id: { get_resource: floating_ip }
port_id: { get_attr: [web_server, addresses, internal_net, 0, port] }
Neutron: síťová vrstva jako největší výzva¶
Pokud je Nova srdce OpenStacku, Neutron je jeho nejsložitější orgán. Virtuální sítě, floating IP adresy, security groups, load balancery — to vše řeší Neutron. A v roce 2014 to byla také komponenta s nejvíce bugy.
Zvolili jsme Open vSwitch jako síťový backend s VXLAN tunely mezi compute nody. Každý tenant má izolovanou virtuální síť — nemůže vidět provoz jiného tenanta. Security groups implementují stavový firewall na úrovni portu.
Největší problém: Neutron L3 agent byl single point of failure. Pokud spadl network node, všechny floating IP přestaly fungovat. Řešení — Distributed Virtual Router (DVR) — bylo v Icehouse experimentální. Nasadili jsme HA L3 agenta s VRRP failoverem.
Ceph jako storage backend¶
Pro Cinder (blokové úložiště) a Glance (image registry) jsme jako backend zvolili Ceph — distribuovaný storage systém. Tři OSD nody s celkem 24 disky poskytovaly redundantní úložiště s replikačním faktorem 3.
Výhoda Ceph + OpenStack integrace: copy-on-write klonování. Vytvoření nového VM z image trvá sekundy — Ceph pouze vytvoří thin klon, skutečná data se kopírují až při prvním zápisu.
Automatizace nasazení¶
Ruční instalace 12 serverů by trvala týdny. Použili jsme Puppet s moduly od stackforge (dnes openstack-puppet) pro automatizovanou konfiguraci všech komponent. Celý cluster šlo „smazat a znovu vytvořit” během dvou hodin — klíčové pro testování upgradů.
Provozní zkušenosti¶
Monitoring¶
OpenStack generuje obrovské množství logů. Nasadili jsme ELK stack a Nagios pro monitoring API endpointů. Klíčová metrika: API response time. Pokud Nova API odpovídá déle než 2 sekundy, něco je špatně — typicky přetížený RabbitMQ nebo plný compute node.
Upgrady¶
Upgradovat OpenStack mezi verzemi je notoricky obtížné. Každá komponenta má vlastní databázové migrace, API verze se mění, konfigurace se přejmenovává. Naše strategie: blue-green deployment controller nodů — novou verzi nasadíme na standby nody, přepneme traffic, staré nody jsou fallback.
Výsledky po prvním roce¶
Na clusteru běží přes 200 virtuálních strojů napříč 8 tenanty. Provisioning nového VM trvá pod 30 sekund. Vývojáři si sami vytvářejí prostředí přes Horizon dashboard nebo CLI — bez tiketu na infrastrukturní tým. Dostupnost platformy za první rok: 99,95 %.
OpenStack není pro každého, ale pro ty správné případy je skvělý¶
OpenStack vyžaduje dedikovaný tým — minimálně dva lidi na full-time operations. Není to „nainstaluj a zapomeň”. Ale pro organizace, které potřebují cloud a nemohou nebo nechtějí jít do public cloudu, je to nejlepší open-source alternativa.
Klíčové poučení: začněte s minimální konfigurací (Nova, Neutron, Cinder, Keystone), ověřte v produkci a teprve pak přidávejte další služby.