# OpenStack
#### Vers l'infini et au delà
![OVH](data/logo-ovh-meet-up-small.png)
## Qui sommes nous ?
## Pierre LIBEAU
#### Team Leader RUN
## Arnaud MORIN
#### Automatisation
#### Déploiement
#### Intégration
## Que fait-on ?
### Public Cloud
Note:
ARNAUD
### VPS
Note:
PIERRE
# OpenStack
![OpenStack](data/openstack_logo.png)
Scale
Jusqu'à combien ?
Pourquoi ?
Comment ?
## Architecture classique
![ArchiOpenStackClassique](data/openstack-logical-arch.png)
## Architecture classique
![ArchiOpenStackClassique](data/openstack-logical-arch-rabbit-cut.png)
## Architecture classique
![ArchiOpenStackClassique](data/openstack-logical-arch-mysql-cut.png)
## Architecture classique
![ArchiOpenStackClassique](data/openstack-logical-arch-nova-cut.png)
## Architecture classique
![ArchiOpenStackClassique](data/openstack-logical-arch-neutron-cut.png)
## Architecture classique
![ArchiOpenStackClassique](data/openstack-logical-arch-neutron.png)
## RabbitMQ
### Cluster
* minimum 3 noeuds
Note:
* ARNAUD
* Au départ 2 noeuds
* problème déconseillé dans un mode cluster
### Tuning de conf
* pause_minority VS autoheal
* sysctl
Note:
* ARNAUD
* pause_minority c'est mieux pour nous
* augmentation des timeout TCP
* impact d'un split : mauvaise communication dans l'infra openstack
* les service impacté majoritairement impacté nova est neutron
* Le système s'emballe à cause des timeout port en build / nova compute déconnecté
### Context switching
* plus de 150k/s
* sélection de 2 serveurs sur les 3
### Très sensible
* latence
* loss
Note:
* ARNAUD
* Augementation du domaine de panne si noeud pas dans le meme réseau
## MySQL
### Cluster Galera
* minimum 3 noeuds
Note:
* PIERRE
* 2 à 3 noeuds
* héberge les services cinder, nova, neutron, glance
### Pas de HA proxy
* Mauvaise expérience
* Performances ?
* En cas de problème
* mécanisme custom
* désactivation des serveurs connectés
Note:
* PIERRE
* Exemple metadata agent
* controleur répartie sur les noeuds galera
### Deadlocks ?
* Noeud dédié aux ecritures
Note:
* PIERRE
* Keystones
### Long running requests
* Ralentissent les APIs
* Il faut les logger
* Souvent dues à la taille des tables
* Purge de temps en temps
Note:
* PIERRE
*
## Nova
### Nova API
* scale assez facile
* multiplication des backends
### Nova custom scheduler
* stack (versus spread)
* race condition quand on scale
* 1 host = 1 flavor
Note:
* il faut des autant de host que de flavor, on peut pas demarrer petit
### Nova compute
* déconnexion de rabbitmq
* pas toujours de reconnexion auto
* robot
Note:
* probleme avec oslo.messaging, fixe upsteam, pas facile de backport
## Neutron
### Architecture standard
![Neutron Networking](data/networking_no_ovh.png)
### Architecture OVH
![Neutron Networking made in OVH](data/networking_ovh.png)
### Points forts
* pas de SPOF
* tous les hosts font du routage
* pas de neutron l3 agent
* moins complexe
* pas de NAT
### Points faibles
* pas de NAT
* pas de floating IP
* IP Fail Over
* /32 dans la VM (/128 pour IPv6)
## Python
## Python
* multithread
* GIL
* eventlet (debug difficile)
* multiprocess
* tuning workers
* memory leak
Note:
* GIL = Global Interpreter Lock
* eventlet = implementation de green thread pour python
* genial pour les perfs network
* difficile a debug
* tres utilisé dans openstack (neutron)
* multiprocess plus lourd
## Automatisation
Note:
On ne peut pas parler de sclaing sans parler d'automatisation
## Deploy as a Service (DaaS)
Note:
* serveur = matiere premiere
* api pour gerer les serveurs (install, reboot, config raid, postinstall, etc)
* DaaS
* gestion de flotte de serveurs (groupe, cluster)
* scaling automatique des groupes
* gestion cycle de vie d'un serveur auto
## Puppet
Note:
* puppet gere la partie config software, apres DaaS
* 1500 hosts = facile pour puppet (un pm par region)
## Autres
* integration continue
* prodding chaque semaine
## Conclusion