Chapitre 12.1 - Administration Production
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Appliquer les best practices production
- Configurer la maintenance système
- Gérer les mises à jour
- Implémenter la haute disponibilité
- Documenter les procédures
- Créer des runbooks
Best Practices Production
Sécurité
# 1. Utilisateurs et permissions
# - Moindre privilège
# - Pas de root direct
# - sudo configuré
# 2. Pare-feu
# - Règles restrictives
# - Seulement ports nécessaires
# - Monitoring connexions
# 3. Mises à jour
# - Régulières
# - Testées en staging
# - Planifiées
# 4. Monitoring
# - Surveillance continue
# - Alertes configurées
# - Logs centralisés
Performance
# 1. Ressources
# - Monitoring CPU, RAM, disque
# - Alertes seuils
# - Scaling planifié
# 2. Optimisation
# - Services nécessaires seulement
# - Cache configuré
# - Compression activée
# 3. Maintenance
# - Nettoyage régulier
# - Rotation logs
# - Archivage données
Maintenance Système
Planification
# Fenêtre de maintenance
# - Heures creuses
# - Communication équipe
# - Rollback planifié
# Checklist maintenance
# 1. Backup avant
# 2. Tests staging
# 3. Notification utilisateurs
# 4. Exécution maintenance
# 5. Vérification post-maintenance
# 6. Documentation changements
Scripts de Maintenance
#!/bin/bash
# Script maintenance hebdomadaire
LOG="/var/log/maintenance-$(date +%Y%m%d).log"
{
echo "=== Maintenance $(date) ==="
# Mise à jour système
echo "Mise à jour paquets..."
apt update && apt upgrade -y
# Nettoyage
echo "Nettoyage..."
apt autoremove -y
apt autoclean
# Rotation logs
echo "Rotation logs..."
logrotate -f /etc/logrotate.conf
# Nettoyage anciens logs
echo "Nettoyage anciens logs..."
find /var/log -name "*.log" -mtime +30 -delete
# Vérification espace disque
echo "Espace disque:"
df -h
echo "=== Fin maintenance ==="
} | tee "$LOG"
Stratégies de Backup
Types de Backup
# 1. Full (Complet)
# - Toutes les données
# - Long, beaucoup d'espace
# - Restauration rapide
# 2. Incremental (Incrémental)
# - Seulement changements
# - Rapide, peu d'espace
# - Restauration plus lente
# 3. Differential (Différentiel)
# - Depuis dernier full
# - Équilibre temps/espace
Script de Backup
#!/bin/bash
# Backup automatique
BACKUP_DIR="/backup"
SOURCE_DIR="/data"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"
# Créer backup
tar -czf "$BACKUP_FILE" "$SOURCE_DIR"
# Vérifier
if [ $? -eq 0 ]; then
echo "Backup réussi: $BACKUP_FILE"
# Supprimer backups > 7 jours
find "$BACKUP_DIR" -name "backup-*.tar.gz" -mtime +7 -delete
else
echo "ERREUR: Échec backup" | mail -s "Alerte Backup" admin@example.com
exit 1
fi
Backup avec Cron
# Crontab
# Backup quotidien à 2h
0 2 * * * /usr/local/bin/backup.sh
# Backup hebdomadaire complet
0 1 * * 0 /usr/local/bin/backup-full.sh
Haute Disponibilité
Redondance
# 1. Serveurs multiples
# - Load balancing
# - Failover automatique
# - Réplication données
# 2. Monitoring
# - Health checks
# - Détection pannes
# - Basculement automatique
# 3. Backup
# - Multiples copies
# - Sites différents
# - Tests restauration
Health Checks
#!/bin/bash
# Health check serveur
CHECKS_FAILED=0
# Vérifier services
for service in nginx mysql redis; do
if ! systemctl is-active --quiet "$service"; then
echo "ERREUR: $service inactif"
CHECKS_FAILED=$((CHECKS_FAILED + 1))
fi
done
# Vérifier espace disque
DISK=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK" -gt 90 ]; then
echo "ERREUR: Disque à ${DISK}%"
CHECKS_FAILED=$((CHECKS_FAILED + 1))
fi
# Alerte si problème
if [ "$CHECKS_FAILED" -gt 0 ]; then
echo "ALERTE: $CHECKS_FAILED check(s) échoué(s)" | \
mail -s "Alerte Health Check" admin@example.com
exit 1
fi
Documentation
Runbooks
Procédures opérationnelles:
# Runbook: Redémarrage Service
## Objectif
Redémarrer un service en production
## Prérequis
- Accès SSH
- Permissions sudo
## Procédure
1. Vérifier état actuel
systemctl status service-name
2. Notifier équipe
# Slack/Email
3. Redémarrer
sudo systemctl restart service-name
4. Vérifier
systemctl status service-name
journalctl -u service-name -n 50
5. Documenter
# Log incident
Documentation Système
# Fichiers à documenter:
# - Configuration services
# - Procédures maintenance
# - Contacts équipe
# - Passwords (gérés sécuritairement)
# - Architecture système
Automatisation
Scripts d'Automatisation
#!/bin/bash
# Automatisation tâches production
# 1. Monitoring
/usr/local/bin/monitor.sh
# 2. Backup
/usr/local/bin/backup.sh
# 3. Nettoyage
/usr/local/bin/cleanup.sh
# 4. Rapports
/usr/local/bin/report.sh
Cron Production
# /etc/cron.d/production
# Monitoring toutes les 5 minutes
*/5 * * * * root /usr/local/bin/monitor.sh
# Backup quotidien
0 2 * * * root /usr/local/bin/backup.sh
# Nettoyage hebdomadaire
0 3 * * 0 root /usr/local/bin/cleanup.sh
# Rapport quotidien
0 8 * * * root /usr/local/bin/report.sh
Résumé
Dans ce chapitre, vous avez appris:
Best practices: Sécurité, performance, maintenance
Maintenance: Planification, scripts, procédures
Backup: Stratégies, scripts, automatisation
HA: Redondance, health checks, failover
Documentation: Runbooks, procédures
Automatisation: Scripts, cron production
Prochaines Étapes
Chapitre 12.2: Performance Tuning
Chapitre 12.3: Automatisation Complète
Chapitre créé le: Décembre 2024