Installation d'un sharded cluster MongoDB (config servers + shards + mongos)
MongoDBNiveau: AvancéDurée: 2 à 3 heuresLe sharded cluster se met en place quand les données ou la charge en écriture dépassent un seul replica set : un replica set de config servers à trois membres, deux ou trois replica sets de shards et deux routeurs mongos ; authentification interne par keyfile, autorisation, sh.addShard, choix de la shard key, sharding d'une collection, balancer et vérification de la répartition. Vous obtenez un cluster extensible horizontalement, auquel les applications n'accèdent que par les mongos. Si les données tiennent sur un seul serveur, une installation en replica set est plus simple et suffit.
Topologie: 3 config servers + 2×3 membres de shards + 2 mongos (au moins 11 serveurs ; moins pour un test)
Avant de commencer
- Tous les serveurs utilisent le même système d'exploitation, à jour ; l'heure est synchronisée par NTP (chrony). Un décalage d'horloge entre membres provoque des problèmes de sessions et d'oplog.
- RAM et CPU correspondent aux valeurs du formulaire (le cache WiredTiger est calculé à partir de cette valeur). Le swap est configuré mais petit.
- Le répertoire de données (…) est sur un disque/LV séparé, formaté en XFS, monté avec noatime et persistant dans fstab. ext4 avec WiredTiger peut causer des problèmes de performance.
- Chaque nom de serveur se résout depuis tous les serveurs et depuis les serveurs d'application (DNS ou /etc/hosts). La configuration du replica set utilise des noms, pas des IP.
- Les ports …, …, … sont ouverts entre les serveurs ; le réseau applicatif peut atteindre ces ports. Ces ports ne sont utilisés par aucun autre service.
- Les serveurs peuvent accéder en HTTPS à repo.mongodb.org et pgp.mongodb.com, ou un miroir interne est configuré.
- Ni le paquet mongodb du système d'exploitation ni une ancienne installation de MongoDB n'est présent.
- scp fonctionne depuis le premier serveur vers les autres en root (ou avec un utilisateur sudo) (pour copier le keyfile). Sinon, transférez le fichier manuellement par un moyen sûr.
- Vous êtes connecté avec les droits root ou sudo ; la fenêtre de maintenance et le plan de snapshot des serveurs (retour arrière) sont prêts.
- La shard key a été décidée avec l'équipe applicative : champ de filtre des requêtes les plus fréquentes, cardinalité élevée, répartition équilibrée des valeurs. La shard key peut être changée plus tard avec reshardCollection, mais c'est coûteux.
Phases du guide
- Préparation du système d'exploitation (tous les serveurs) — Hostname : … · Hostname : … · Hostname : … · Hostname : … · Hostname : … · Mise à jour du système et outils nécessaires …
- Installation du logiciel MongoDB — Ajouter le dépôt MongoDB … · Ajouter le dépôt MongoDB … · Installer le logiciel serveur MongoDB (config servers et shards) · Installer mongos et mongosh (routeurs) · Préparer le répertoire de données · Politique SELinux, étiquettes et ports …
- Keyfile (authentification interne au cluster) — Créer le keyfile · Copier le keyfile sur tous les serveurs · Permissions du keyfile
- Config server replica set — mongod.conf (config server) : … · Démarrer mongod · rs.initiate (config server)
- Shard A (replica set shardA) — mongod.conf (shard A) : … · Démarrer mongod · rs.initiate (shard A) · Utilisateur d'administration shard-local (shard A)
- Shard B (replica set shardB) — mongod.conf (shard B) : … · Démarrer mongod · rs.initiate (shard B) · Utilisateur d'administration shard-local (shard B)
- Shard C (replica set shardC) — mongod.conf (shard C) : … · Démarrer mongod · rs.initiate (shard C) · Utilisateur d'administration shard-local (shard C)
- mongos (routeur) — mongos.conf : … · Service systemd de mongos · Démarrer mongos · Créer l'administrateur du cluster · Ajouter les shards (sh.addShard) · Créer l'utilisateur applicatif
- Shard key et sharding de la collection — Choix de la shard key (étape de décision) · Sharder la collection · État du balancer · Fenêtre horaire du balancer
- Vérification — État du cluster · Test de répartition · État du replica set des config servers · Chaîne de connexion applicative
- Après l'installation — Rotation des journaux · Stratégie de sauvegarde · Supervision