wiki/ServeurGANDI.md

227 lines
9.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
# Howto GANDI Hosting
Les serveurs proposés par GANDI Hosting sont des machines virtuelles Xen.
Ils permettent notamment l'ajout/suppression de mémoire et core CPU à chaud.
## Spécificités Gandi
Gandi installe une clé publique dans _/root/.ssh/authorized_keys_ :
~~~
from="217.70.181.*" ssh-dss AAAAB3NzaC1kc3MAAACBAK9NzNMvvimq4+k3wf0cQDfiDDNpdtbOo/IpjKzI7MRwvvIuwdEKZ7Xp7J/sJM3uMuSK1vGpJXkJ3bxFL5e0Wk/GJBP7STFMqPVZZrMfL/uep9DT
/HssOYwtvZheP39PT29NMqXEmwUBrW2yojeol9BNCzxvX0D2oh+fMUmDfKxfAAAAFQC8ylRZUIdLgxGMlP4KRRX1rhd0mQAAAIBohLoFIe2zzWglQMobuKSqfhkTDA3KubgAUzkrA5aGZsPeiSChXOF97ilyKocH
PBDTLbMTyyu27JFAFKiLNB021RQOMtWtsDp6vGi3OQiys+MIUH1AcAid1Q7LijCIcSUQy/yaioOryNa0k7St10IRA3W/q/OyeGgiPz/BdoAdUwAAAIBDBij4WU5EcqjcW+JLuYPJ1Al3EkrA4SNktNNFtdTmfd0h
NKycQ8/wN+sNeLIx9uB4q7OQRLbKpNSW/mODA8japElhSySNWwUi35M+W2/9RbTTvzhD/NRrAmMFpLJd7gT26ITgjQ7G9fYi8VrvxT8092kWntQea9GikDNjKQvsHQ== mgt_gandi
~~~
Cela leur permet de prendre la main en _root_ en cas de nécessité. Attention, pour interdire cela par défaut tout (en gardant la possibilité de l'activer),
on a tendance à positionner _PermitRootLogin no_ dans la configuration du serveur SSH... sauf que Gandi force (au boot notamment) _PermitRootLogin without-password_ !!!
À savoir...
Gandi installe cinq paquets spécifiques. À part un, on peut les désinstaller car ils servent uniquement à l'installation du système :
~~~
# aptitude purge gandi-hosting-agent gandi-hosting-agent-plugins-internal-debian gandi-hosting-agent-plugins-internal-unix gandi-hosting-agent-schemes
~~~
Note : il faut lancer la commande deux fois à cause d'un conflit lors de la suppression du paquet _gandi-hosting-agent-plugins-internal-unix_
Source : <http://groups.gandi.net/fr/post/gandi.fr.hebergement.expert/22663>
Le paquet _gandi-hosting-vm_ permet d'automatiser certaines actions demandées à partir du panel Gandi, comme le montage automatiques des disques
attachés au serveur ou l'ajout d'adresses IP supplémentaires.
Pour bénéficier des mises-à-jour de ce paquet, on gardera le dépôt _<http://mirrors.gandi.net/gandi/debian_> comme indiqué plus haut.
## Mise-à-jour du noyau
Il suffit d'aller sur le panel Gandi dans les options avancées de son "disque système" et de choisir la version souhaitée.
Il faut également installer les nouveaux modules via la procédure décrite sur <http://wiki.gandi.net/fr/iaas/references/server/kernel_modules>
On pourra lister exhaustivement les modules disponibles via la commande suivante exécutée sur le serveur :
~~~
$ GET <http://mirrors.gandi.net/kernel/> | grep modules | sed 's/^.*a href="\(.*\)".*/\1/'
~~~
Attention, pour les noyaux >= 2.6.32 il faut activer la sortie standard sur *hvc0* (options avancées du panel Gandi)
et s'assurer d'avoir dans la ligne suivante dans le fichier _/etc/inittab_ du serveur :
~~~
1:2345:respawn:/sbin/getty 38400 hvc0
~~~
Ceci est indispensable pour avoir un mode console utilisable !
Note : il y a parfois des bugs avec les scripts Gandi, notamment dans le montage auto des différents disques :
ils se montent parfois en tant que /srv/NOM.2 et il est nécessaire de nettoyer /srv/NOM...
## Reboot en cas de faille de sécurité sur le noyau
GANDI prévient et il suffit de stop puis start sa VM via l'interface web.
Voir <https://wiki.gandi.net/fr/iaas/references/server/kernel_changelog>
## Accès console de secours
Pour cela il faut l'activer dans l'interface d'admin, puis l'on pourra avoir un accès console via :
~~~
$ ssh <IP>@console.gandi.net
~~~
## IPv6
Depuis début janvier 2011, GANDI active désormais l'IPv6 par défaut : <http://wiki.gandi.net/fr/hosting/gandi-expert/manage-ipv6>
Pour le désactiver, l'une des méthodes est de lancer ces commandes :
~~~
# sysctl -w net.ipv6.conf.all.autoconf=0
# sysctl -w net.ipv6.conf.all.disable_ipv6=1
# ifconfig eth0 del 2001:4b98:..../64
~~~
Pour que cela reste en place, on ajoutera dans le fichier */etc/sysctl.conf* :
~~~
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.all.disable_ipv6 = 1
~~~
Pour l'utiliser sous contrôle, on utilisera des règles _ip6tables_. Cela nécessite d'avoir un noyau Linux >= 2.6.32 (voir plus haut) et d'ajuster ces régles.
Pour ne rien laisser par défaut :
~~~
# /sbin/ip6tables -P INPUT DROP
# /sbin/ip6tables -P OUTPUT DROP
# /sbin/ip6tables -P FORWARD DROP
~~~
## Gestion des disques
### Augmenter la taille d'un volume de données attaché
<http://wiki.gandi.net/en/iaas/references/disk/resize/classic>
#### Volume non système
- Cliquer sur augmenter dans l'interface (cela ne reboot pas la VM)
- Une fois l'opération terminée, faire à chaud (sans démontage de la partition) :
~~~
xvdg: detected capacity change from 5368709120 to 10737418240
# resize2fs /dev/xvdg
[...]
VFS: busy inodes on changed media or resized disk xvdg
~~~
ATTENTION : une fois cette opération réalisée, la nouvelle taille sera bien remontée par le système (df)
MAIS il sera tout de même nécessaire de redémarrer pour ne pas se heurter à des "Aucun espace disponible sur le périphérique"
#### Volume non système (DEPRECATED)
Pour les nouveaux volumes (depuis 2011), il suffit de lancer un redimensionnement à chaud de la partition.
Pour les anciens volumes, suivre la procédure suivante :
1. Modifier la taille du volume... mais ATTENTION, CELA PROVOQUE LE REDÉMARRAGE IMMÉDIAT DE LA MACHINE VIRTUELLE !!
2. Redimensionner votre système de fichiers à froid :
~~~
# umount /srv/foodata && e2fsck -f /dev/xvdb -C0
e2fsck 1.41.3 (12-Oct-2008)
Passe 1 : vérification des i-noeuds, des blocs et des tailles
Passe 2 : vérification de la structure des répertoires
Passe 3 : vérification de la connectivité des répertoires
Passe 4 : vérification des compteurs de référence
Passe 5 : vérification de l'information du sommaire de groupe
foodata : 12/327680 fichiers (0.0% non contigus), 55935/1310720 blocs
# umount /srv/foodata && resize2fs /dev/xvdb
resize2fs 1.41.3 (12-Oct-2008)
Resizing the filesystem on /dev/xvdb to 2621440 (4k) blocks.
Le système de fichiers /dev/xvdb a maintenant une taille de 2621440 blocs.
# mount /dev/xvdb /srv/foodata
~~~
Note : il est important de (re)démonter avant chaque opération, car les volumes peuvent se monter "tout seul" (merci GANDI...)
### Volume système (DEPRECATED??)
Cette opération est dangereuse ! Elle consiste notamment à changer la table de partitions à chaud.
Voir les étapes détaillées sur <http://wiki.gandi.net/en/hosting/manage-disk/resize-disk/expert>
Attention, lors du repartitionnement, on préfera utiliser le mode "cylindre" afin d'éviter un message du type "Partition 1 does not end on cylinder".
### Migrer des volumes d'un serveur vers la nouvelle infra de stockage
Pour diverses raisons (meilleure gestion, support des snapshots, etc.) il est conseillé de migrer vos disques vers la nouvelle infra de stockage Gandi.
Pour cela vous devrez :
* éteindre votre serveur,
* copier tous vos volumes associés à votre serveur (ils passeront donc avec la nouvelle infra),
* détacher les anciens volumes de votre serveur
* rattacher tous les volumes copiés à votre serveur
* marquer le nouveau volume système comme "bootable"
* redémarrer votre serveur
Note 1 : pensez bien à marquer votre volume "système" comme bootable
Note 2 : pensez à supprimer vos anciens volumes peu de temps après car vous les payez ;-)
### Créer un serveur de test à partir de snapshots de volumes
On peut désormais créer des snaphots de volume, on peut donc s'en servir pour créer à chaud un serveur "snapshot".
Pour cela vous devrez :
* créer des snapshots de chaque volume associé à votre serveur
* créer des volumes à partir de chaque snapshot créé
* créer un nouveau serveur avec un système quelconque
* éteindre ce nouveau serveur , puis détacher/supprimer le volume système de ce nouveau serveur
* attacher les volumes créés à partir des snapshots à ce nouveau serveur
* marquer le nouveau volume système comme "bootable"
* démarrer ce nouveau serveur
Note 1 : il pourra être utile d'éteindre les démons "cron" ou Postfix (SMTP) si vous copiez un serveur de production
Note 2 : pensez à supprimer vos anciens volumes peu de temps après car vous les payez ;-)
## Ajouter une adresse IP sur un serveur
*WARNING : on déconseille finalement l'ajout d'une 2ème adresse IP, cela fonctionne très mal => l'IP se déactive en permanence, il faut relancement manuellement un _sysctl -p /etc/sysctl.conf_...*
On peut ajouter une "interface" sur un serveur, elle s'ajoute automatiquement sur le serveur.
Mais la particuliarité est qu'une route par défaut est ajoutée pour chaque interface !
On doit donc gérer des paramètres dans le noyau Linux, Notamment désactiver
_rp_filter_ et _arp_filter_ pour toutes les interfaces, et gérer _arp_announce_.
Voici par exemple le fichier _sysctl.conf_ pour 2 interfaces réseau :
~~~
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.eth1.arp_announce = 0
net.pv4.conf.all.arp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.eth1.arp_filter = 0
~~~
Note : il est conseillé de mettre au moins 1 Mb/s (ou + ??) pour chaque interface.