Aller au contenu principal

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