Un nombre considérable d'applications d'entreprise et de systèmes de virtualisation ont leurs propres mécanismes pour créer des solutions tolérantes aux pannes. En particulier, Oracle RAC (Oracle Real Application Cluster) est un cluster de deux serveurs de base de données Oracle ou plus travaillant ensemble pour équilibrer la charge et fournir une tolérance aux pannes au niveau du serveur / de l'application. Pour travailler dans ce mode, un stockage commun est requis, dont le rôle est généralement le stockage.
Comme nous l'avons déjà expliqué dans l'un de nos articles , le système de stockage en lui-même, malgré la présence de composants dupliqués (y compris les contrôleurs), présente encore des points de défaillance - principalement sous la forme d'un ensemble de données unique. Par conséquent, pour construire une solution Oracle avec des exigences de fiabilité accrues, le schéma «N serveurs - un stockage» doit être compliqué.

Tout d'abord, bien sûr, vous devez décider des risques contre lesquels nous essayons de nous assurer. Dans cet article, nous ne considérerons pas la protection contre les menaces telles qu'une météorite est arrivée. La création d'une solution de reprise après sinistre dispersée géographiquement restera donc un sujet pour l'un des articles suivants. Nous examinons ici la solution de récupération après sinistre Cross-Rack, lorsque la protection est construite au niveau des armoires de serveur. Les armoires elles-mêmes peuvent être situées dans la même pièce ou dans des pièces différentes, mais généralement dans le même bâtiment.
Ces armoires doivent contenir tous les équipements et logiciels nécessaires pour assurer le fonctionnement des bases de données Oracle quel que soit l'état du "voisin". En d'autres termes, en utilisant la solution de reprise après sinistre Cross-Rack, nous éliminons les risques d'échec:
- Serveurs d'applications Oracle
- Systèmes de stockage
- Systèmes de commutation
- Panne complète de tous les équipements de l'armoire:
- Panne de courant
- Panne du système de refroidissement
- Facteurs externes (homme, nature, etc.)
La duplication des serveurs Oracle implique le principe même d'Oracle RAC et est implémentée via l'application. La duplication des outils de commutation n'est pas non plus un problème. Mais avec la duplication du système de stockage, tout n'est pas si simple.
L'option la plus simple consiste à répliquer les données du stockage principal vers la sauvegarde. Synchrone ou asynchrone, selon les capacités de stockage. La réplication asynchrone soulève immédiatement la question de la cohérence des données avec Oracle. Mais même s'il existe une intégration logicielle avec l'application, en tout cas, en cas d'accident sur le système de stockage principal, une intervention manuelle des administrateurs sera nécessaire afin de basculer le cluster vers le stockage de sauvegarde.
Une option plus complexe est celle des «virtualiseurs» logiciels et / ou matériels des systèmes de stockage, qui élimineront les problèmes de cohérence et d'intervention manuelle. Mais la complexité du déploiement et de l'administration ultérieure, ainsi que le coût très indécent de telles solutions, en effrayent beaucoup.
Pour les scénarios tels que la reprise après sinistre sur plusieurs racks, la baie All Flash AccelStor NeoSapphire ™ H710 utilisant l'architecture Shared-Nothing est parfaite . Ce modèle est un système de stockage à deux unités utilisant sa propre technologie FlexiRemap® pour travailler avec des lecteurs flash. Grâce au FlexiRemap® NeoSapphire ™ H710, il peut fournir jusqu'à 600K IOPS @ 4K en écriture aléatoire et 1M + IOPS @ 4K en lecture aléatoire, ce qui est impossible avec un stockage RAID classique.
Mais la principale caractéristique du NeoSapphire ™ H710 est l'exécution de deux nœuds en tant que boîtiers séparés, chacun ayant sa propre copie des données. La synchronisation des nœuds s'effectue via l'interface externe InfiniBand. Grâce à cette architecture, les nœuds peuvent être répartis sur différents emplacements sur des distances allant jusqu'à 100 m, fournissant ainsi la solution de reprise après sinistre Cross-Rack. Les deux nœuds fonctionnent complètement en mode synchrone. Du côté de l'hôte, le H710 ressemble à un stockage ordinaire à double contrôleur. Par conséquent, aucune option logicielle et matérielle supplémentaire et des paramètres particulièrement complexes ne doivent être effectués.
Si vous comparez toutes les solutions de reprise après incident Cross-Rack décrites ci-dessus, la version AccelStor se démarque des autres:
| Architecture AccelStor NeoSapphire ™ Shared Nothing | Virtualiseur logiciel ou matériel de stockage | Solution de réplication |
---|
La disponibilité |
Échec du serveur | Aucun temps d'arrêt | Aucun temps d'arrêt | Aucun temps d'arrêt |
Panne de commutateur | Aucun temps d'arrêt | Aucun temps d'arrêt | Aucun temps d'arrêt |
Échec de stockage | Aucun temps d'arrêt | Aucun temps d'arrêt | Temps d'arrêt |
Panne de l'armoire entière | Aucun temps d'arrêt | Aucun temps d'arrêt | Temps d'arrêt |
Coût et complexité |
Coût de la solution | Faible * | Élevé | Élevé |
Difficulté de déploiement | Faible | Élevé | Élevé |
* AccelStor NeoSapphire ™ est toujours une baie All Flash, qui par définition ne coûte pas «3 kopecks», d'autant plus qu'elle dispose d'une réserve de capacité double. Cependant, en comparant le coût total de la solution basée sur celle-ci avec des coûts similaires d'autres fournisseurs, le coût peut être considéré comme faible.
La topologie de connexion des serveurs d'applications et de tous les nœuds de baies Flash ressemblera à ceci:
Lors de la planification de la topologie, il est également fortement recommandé de dupliquer les commutateurs de gestion et les interconnexions de serveurs.
Ci-après, nous parlerons de la connexion via Fibre Channel. Dans le cas de l'utilisation d'iSCSI, tout sera le même, ajusté pour les types de commutateurs utilisés et les paramètres de baie légèrement différents.
Travaux préparatoires sur le réseau
Matériel et logiciels utilisésSpécifications du serveur et du commutateur
Composants | La description |
---|
Serveurs Oracle Database 11g | Deux |
Système d'exploitation serveur | Oracle Linux |
Version de la base de données Oracle | 11g (RAC) |
Processeurs par serveur | Deux processeurs Intel® Xeon® E5-2667 v2 à 16 cœurs à 3,30 GHz |
Mémoire physique par serveur | 128 Go |
Réseau FC | FC 16 Gb / s avec trajets multiples |
FC HBA | Emulex Lpe-16002B |
Ports publics 1 GbE dédiés pour la gestion des clusters | Adaptateur Ethernet Intel RJ45 |
Commutateur FC 16 Gb / s | Brocade 6505 |
Ports privés 10 GbE dédiés pour la synchronisation des données | Intel X520 |
AccelStor NeoSapphhire ™ All Flash Array Specification
Composants | La description |
---|
Système de stockage | Modèle haute disponibilité NeoSapphire ™: H710 |
Version d'image | 4.0.1 |
Nombre total de disques | 48 |
Taille du lecteur | 1,92 To |
Type de lecteur | SSD |
Ports cibles FC | 16 ports 16 Go (8 par nœud) |
Ports de gestion | Le câble Ethernet 1 GbE se connectant aux hôtes via un commutateur Ethernet |
Port Heartbeat | Le câble Ethernet 1 GbE se connectant entre deux nœuds de stockage |
Port de synchronisation des données | Câble InfiniBand 56 Gb / s |
Avant de commencer à utiliser un tableau, vous devez l'initialiser. Par défaut, l'adresse de contrôle des deux nœuds est la même (192.168.1.1). Vous devez vous y connecter un par un et définir de nouvelles adresses de gestion (déjà différentes) et configurer la synchronisation de l'heure, après quoi les ports de gestion peuvent être connectés à un seul réseau. Après cela, les nœuds sont combinés en une paire HA en attribuant des sous-réseaux aux connexions Interlink.
Une fois l'initialisation terminée, vous pouvez contrôler la baie à partir de n'importe quel nœud.
Ensuite, créez les volumes nécessaires et publiez-les pour les serveurs d'applications.
Il est fortement recommandé de créer plusieurs volumes pour Oracle ASM, car cela augmentera le nombre de cibles pour les serveurs, ce qui améliorera finalement les performances globales (plus d'informations sur les files d'attente dans un autre article ).
Configuration de testNom du volume de stockage | Taille du volume |
---|
Data01 | 200 Go |
Data02 | 200 Go |
Data03 | 200 Go |
Data04 | 200 Go |
Data05 | 200 Go |
Data06 | 200 Go |
Data07 | 200 Go |
Data08 | 200 Go |
Data09 | 200 Go |
Données10 | 200 Go |
Grid01 | 1 Go |
Grid02 | 1 Go |
Grid03 | 1 Go |
Grid04 | 1 Go |
Grid05 | 1 Go |
Grid06 | 1 Go |
Redo01 | 100 Go |
Redo02 | 100 Go |
Redo03 | 100 Go |
Redo04 | 100 Go |
Redo05 | 100 Go |
Redo06 | 100 Go |
Redo07 | 100 Go |
Redo08 | 100 Go |
Redo09 | 100 Go |
Redo10 | 100 Go |
Quelques explications sur les modes de fonctionnement de la baie et les processus qui se produisent dans les situations d'urgence
Chaque jeu de données de noeud a un paramètre «numéro de version». Après l'initialisation initiale, il est identique et égal à 1. Si, pour une raison quelconque, le numéro de version est différent, il y a toujours une synchronisation des données de l'ancienne version vers la plus jeune, après quoi le numéro est aligné pour la version la plus jeune, c'est-à-dire cela signifie que les copies sont identiques. Raisons pour lesquelles les versions peuvent varier:
- Redémarrage planifié de l'un des nœuds
- Un accident sur l'un des nœuds dû à un arrêt brutal (alimentation, surchauffe, etc.).
- Connexion InfiniBand rompue avec incapacité de synchronisation
- Plantage sur l'un des nœuds en raison d'une corruption des données. Cela nécessitera déjà la création d'un nouveau groupe HA et une synchronisation complète de l'ensemble de données.
Dans tous les cas, le nœud restant en ligne augmente son numéro de version de un, de sorte qu'après avoir reconnecté la paire, synchronisez son ensemble de données.
Si la connexion est perdue via la liaison Ethernet, Heartbeat bascule temporairement vers InfiniBand et revient dans les 10 secondes après sa restauration.
Configuration d'hôte
Pour garantir la tolérance aux pannes et augmenter les performances, vous devez activer la prise en charge MPIO pour la baie. Pour ce faire, ajoutez des lignes au fichier /etc/multipath.conf, puis rechargez le service multichemin
Texte masquéappareils {
appareil {
fournisseur "AStor"
path_grouping_policy "group_by_prio"
path_selector "file d'attente-longueur 0"
path_checker "tur"
comporte "0"
hardware_handler "0"
prio "const"
restauration immédiate
fast_io_fail_tmo 5
dev_loss_tmo 60
user_friendly_names oui
detect_prio oui
rr_min_io_rq 1
no_path_retry 0
}
}
De plus, pour qu'ASM fonctionne avec MPIO via ASMLib, vous devez modifier le fichier / etc / sysconfig / oracleasm, puis exécuter /etc/init.d/oracleasm scandisks
Texte masqué# ORACLEASM_SCANORDER: modèles de correspondance pour commander l'analyse du disque
ORACLEASM_SCANORDER = "dm"
# ORACLEASM_SCANEXCLUDE: modèles de correspondance pour exclure les disques de l'analyse
ORACLEASM_SCANEXCLUDE = "sd"
Remarque
Si vous ne souhaitez pas utiliser ASMLib, vous pouvez utiliser les règles UDEV, qui constituent la base d'ASMLib.
À partir de la version 12.1.0.2 Oracle Database, l'option est disponible pour l'installation dans le cadre du logiciel ASMFD.
Assurez-vous que les disques créés pour Oracle ASM sont alignés avec la taille du bloc avec lequel la baie travaille physiquement (4K). Sinon, des problèmes de performances peuvent survenir. Par conséquent, vous devez créer des volumes avec les paramètres appropriés:
parted / dev / mapper / device-name mklabel gpt mkpart primary 2048s 100% align-check optimal 1
Distribution de bases de données sur les volumes créés pour notre configuration de test
Nom du volume de stockage | Taille du volume | Mappage des LUN de volume | Détails du périphérique de volume ASM | Taille de l'unité d'allocation |
---|
Data01 | 200 Go | Mappez tous les volumes de stockage au système de stockage tous les ports de données | Redondance: normale Nom: DGDATA Objectif: Fichiers de données
| 4 Mo |
Data02 | 200 Go |
Data03 | 200 Go |
Data04 | 200 Go |
Data05 | 200 Go |
Data06 | 200 Go |
Data07 | 200 Go |
Data08 | 200 Go |
Data09 | 200 Go |
Données10 | 200 Go |
Grid01 | 1 Go | Redondance: normale Nom: DGGRID1 Objectif: Grille: CRS et vote
| 4 Mo |
Grid02 | 1 Go |
Grid03 | 1 Go |
Grid04 | 1 Go | Redondance: normale Nom: DGGRID2 Objectif: Grille: CRS et vote
| 4 Mo |
Grid05 | 1 Go |
Grid06 | 1 Go |
Redo01 | 100 Go | Redondance: normale Nom: DGREDO1 Objectif: rétablir le journal du thread 1
| 4 Mo |
Redo02 | 100 Go |
Redo03 | 100 Go |
Redo04 | 100 Go |
Redo05 | 100 Go |
Redo06 | 100 Go | Redondance: normale Nom: DGREDO2 Objectif: rétablir le journal du thread 2
| 4 Mo |
Redo07 | 100 Go |
Redo08 | 100 Go |
Redo09 | 100 Go |
Redo10 | 100 Go |
Paramètres de la base de données- Taille du bloc = 8K
- Espace d'échange = 16 Go
- Désactiver AMM (gestion automatique de la mémoire)
- Désactiver les pages immenses transparentes
Autres réglages# vi /etc/sysctl.conf
✓ fs.aio-max-nr = 1048576
✓ fs.file-max = 6815744
✓ kernel.shmmax 103079215104
✓ kernel.shmall 31457280
✓ kernel.shmmn 4096
✓ kernel.sem = 250 32000 100 128
✓ net.ipv4.ip_local_port_range = 9000 65500
✓ net.core.rmem_default = 262144
✓ net.core.rmem_max = 4194304
✓ net.core.wmem_default = 262144
✓ net.core.wmem_max = 1048586
✓ vm.swappiness = 10
✓ vm.min_free_kbytes = 524288 # ne le définissez pas si vous utilisez Linux x86
✓ vm.vfs_cache_pressure = 200
✓ vm.nr_hugepages = 57000
# vi /etc/security/limits.conf
✓ grille soft nproc 2047
✓ grille dure nproc 16384
✓ grille nofile doux 1024
✓ grille nofile dur 65536
✓ soft stack de grille 10240
✓ pile dure de grille 32768
✓ oracle soft nproc 2047
✓ oracle hard nproc 16384
✓ oracle soft nofile 1024
✓ nofile dur oracle 65536
✓ pile souple oracle 10240
✓ disque dur oracle 32768
✓ soft lock 120795954
✓ mémlock dur 120795954
sqlplus «/ as sysdba»
modifier les processus de définition du système = 2000 scope = spfile;
alter system set open_cursors = 2000 scope = spfile;
alter system set session_cached_cursors = 300 scope = spfile;
alter system set db_files = 8192 scope = spfile;
Test de tolérance aux pannes
À des fins de démonstration, HammerDB a été utilisé pour émuler la charge OLTP. Configuration de HammerDB:
Nombre d'entrepôts | 256 |
Total des transactions par utilisateur | 1000000000000 |
Utilisateurs virtuels | 256 |
En conséquence, l'indicateur TPM 2.1M a été obtenu, ce qui est loin de la limite de performance de la baie H710 , mais c'est le «plafond» pour la configuration matérielle actuelle des serveurs (principalement due aux processeurs) et leur nombre. Le but de ce test est toujours de démontrer la tolérance aux pannes de la solution dans son ensemble, et non d'atteindre des performances maximales. Par conséquent, nous allons simplement construire sur cette figure.
Test de défaillance d'un des nœuds
Les hôtes ont perdu certains des chemins d'accès au magasin, continuant à travailler sur les autres avec le deuxième nœud. Les performances ont chuté pendant quelques secondes en raison de la restructuration des chemins, puis sont revenues à la normale. Aucune interruption de service n'est survenue.
Test de défaillance de l'armoire avec tous les équipements
Dans ce cas, la performance a également chuté pendant quelques secondes en raison de la restructuration des chemins, puis est revenue à la moitié de la valeur de l'indicateur d'origine. Le résultat a été divisé par deux par rapport à l'original en raison de l'exclusion du fonctionnement d'un serveur d'applications. Il n'y a pas eu non plus d'interruption de service.
Si vous avez besoin d'implémenter une solution de reprise après sinistre Cross-Rack tolérante aux pannes pour Oracle à un coût raisonnable et avec peu d'efforts de déploiement / administration, alors travailler avec Oracle RAC et l' architecture AccelStor Shared-Nothing serait l'une des meilleures options. Au lieu d'Oracle RAC, il peut y avoir tout autre logiciel qui prévoit la mise en cluster, le même SGBD ou les systèmes de virtualisation, par exemple. Le principe de construction de la solution restera le même. Et le score final est nul pour RTO et RPO.