| 17.6 Utilisation d'interconnexions haute vitesse avec MySQL Cluster
 17 Introduction à MySQL Cluster
 Manuel de Référence MySQL 4.1 : Version Française
 
 ->Configurer le cluster MySQL avec les sockets SCI
 . Mesures de vitesses pour comprendre les impacts sur le cluster
 
 
 | 
  17.6.1 Configurer le cluster MySQL avec les sockets SCI Dans cette section, nous allons vous montrer comment utiliser un cluster 
TCP/IP normal avec les sockets SCI. Les pré-requis pour cela est que les 
machines doivent être capables de communiquer avec des cartes SCI. Cette
documentation est basée sur les sockets SCI version 2.3.0, du 1er octobre 2004.
 
 
Pour utiliser les sockets SCI, vous pouvez utiliser n'importe quelle version
du cluster MySQL. Les tests ont été fait sur la version 4.1.6. Aucune compilation
particulière n'est nécessaire, car il utilise les appels normaux aux sockets,
ce qui est la configuration de MySQL Cluster. Les sockets SCI ne sont
supportées que sur les noyaux Linux 2.4 et 2.6 pour le moment. Les
transporteurs SCI fonctionnent sur d'autres systèmes d'exploitaiton, même
si seul Linux 2.4 a été vérifié.
Il y a essentiellement 4 choses nécessaires pour activer les sockets SCI.
La première est de compiler les bibliothèques de sockets SCI. La seconde
est d'installer les bibliothèques SCI dans le noyau. La troisième est d'installer
les fichiers de configuration. Enfin, la bibliothèque SCI du noyau doit
être activée pour toute la machine, ou pour le shell d'où le cluster MySQL
est lancé. Ce processus doit être répété pour chaque machine du cluster qui
utilisera les sockets SCI pour communiquer. 
Deux paquets doivent être installés pour faire fonctionner les sockets SCI.
Le premier paquet compile les bibliothèques avec lesquelles les bibliothèques
SCI sont compilées. Actuellement, la distribution est uniquement au format
code source.
Les dernières versions de ces paquets sont actuellement disponibles à : | 
http://www.dolphinics.no/support/downloads.html
 | 
 La prochaine étape est de décompresser ces dossiers. Les sockets SCI sont
décompressées sous le code DIS. Puis, le code de base est compilé. L'exemple
ci-dessous montre les commandes utilisées sur Linux/x86 pour ce faire.| 
http://www.dolphinics.no/ftp/source/DIS_GPL_2_5_0_SEP_10_2004.tar.gzhttp://www.dolphinics.no/ftp/source/SCI_SOCKET_2_3_0_OKT_01_2004.tar.gz
 | 
 Si la compilation se passe sur une machine Opteron, et doit utiliser l'exention
64 bits, alors utilisez make_PSB_66_X86_64_release à la place. Si la compilation a lieu
sur Itanium, utilisez make_PSB_66_IA64_release. Les variantes X86-64 devraient
fonctionner pour les architectures Intel EM64T mais aucun test n'est connu pour cela.Après avoir compilé le code de base, il est placé dans une archive compressée.
Il est temps d'installer le paquet au bon endroit. Dans cet exemple, nous allons
placer l'installation dans le dossier /opt/DIS. Ces actions
vous imposerons de vous identifier comme super-utilisateur.| 
shell> tar xzf DIS_GPL_2_5_0_SEP_10_2004.tar.gzshell> cd DIS_GPL_2_5_0_SEP_10_2004/src/
 shell> tar xzf ../../SCI_SOCKET_2_3_0_OKT_01_2004.tar.gz
 shell> cd ../adm/bin/Linux_pkgs
 shell> ./make_PSB_66_release
 | 
 Maintenant que les bibliothèques et les binaires sont en place, nous devons nous
assurer que les cartes SCI recoivent les bons identifiants de noeuds dans 
l'espace SCI. Comme SCI est un élément réseau, nous devons commencer par
décider de la structure du réseau.Il y a trois types de structure de réseau : la première est un simple
anneau unidimensionnel, le second utilise les hub SCI, avec un anneau
par hub, et finalement, il y a des tores 2D et 3D. Chaque type a sa
technique pour attribuer les identifiants.Un anneau simple utilise des identifiant espacés de 4 : 
 
 
La deuxième méthode utilise des hubs. Le hub SCI a 8 ports. Sur chaque port,
il est possible de placer un anneau. Il est nécessaire de s'assurer que
les anneaux des hubs utilisent des espaces d'identifiants différents. Le
premier port utilisera les identifiants inférieurs à 64, et les 64 identifiants
suivants seront attribués au prochain port, etc.| 
shell> cp DIS_Linux_2.4.20-8_181004.tar.gz /opt/shell> cd /opt
 shell> tar xzf DIS_Linux_2.4.20-8_181004.tar.gz
 shell> mv DIS_Linux_2.4.20-8_181004 DIS
 | 
 Les structures de réseaux en tore 2D/3D prennent en compte la position de
chaque noeud dans chaque dimension. La première dimension est incrémentée
de 4, la deuxième de 64 et la troisième de 1024. Regardez dans le dauphin
pour plus d'informations dessus.Durant nos tests, nous avons utilisés des hubs. La majorité des très
gros cluster utilisent des installations à Tore 2D/3D. La fonctionnalité
supplémentaire que permet les hubs est qu'avec des doubles cartes SCI,
nous pouvons facilement construire un réseau redondant, où les erreurs
de réseau sont aussitôt reprises en 100 microsecondes. Cette fonctionnalité
est supportée par le transporteur SCI, et est actuellement en développement
pour les sockets SCI.| 
4,8, 12, ... , 60  Anneau du premier port68, 72, .... , 124 Anneau du deuxième port
 132, 136, ..., 188 Anneau du troisième port
 ..
 452, 456, ..., 508 Anneau du huitième port
 | 
 
La reprise sur échec est aussi possible avec les tores 2D/3D, mais elle
impose l'envoie de nouveaux index de routages à tous les noeuds. Cela 
prend environ 100 milliseconds et sera probablement acceptable pour 
les situations de haute disponibilité.
En agenceant correctement les noeuds NDB dans l'architecture, il est possible 
d'utiliser deux hubs pour monter une architecture de 16 ordinateurs interconnectés,
sans aucun point d'interruption. Avec 32 ordinateurs et 2 hubs, il est possible
de configurer le cluster de telle manière qu'un incident ne perturbera pas
plus de 2 noeuds, et dans ce cas, on saura même quelle paire sera touchée.
Par conséquent, en plaçant ces serveurs dans des groupes NDB séparés, il est possible
de construire un cluster MySQL sécurisé. Nous n'entreront pas dans les
détails de cette architecture, car seuls ceux qui le souhaitent auront
la patience de lire de niveau de détails. 
Pour configurer l'identifiant de noeud sur une carte SCI, utilisez l'une des
commandes disponibles dans le dossier  
/opt/DIS/sbin
 . -c 1 fait référence
à la carte SCI, où 1 est son numéro s'il y a une seule carte sur la machine. 
Dans ce cas, utilisez toujours l'adapteur 0 (avec -a 0). 68 est l'identifiant de noeud
choisi comme exemple : 
 Dans ce cas, nous avons plusieurs cartes SCI dans notre machine, et la seule
solution sécuritaire pour savoir quelle carte est dans quel emplacement, est d'utiliser
la commande suivante :| 
shell> ./sciconfig -c 1 -a 0 -n 68
 | 
 Elle vous retournera le numéro de série de la carte, qui peut être trouvée
sur sont dos. Répétez cette manipulation avec -c 2, etc, en fonction du nombre
de cartes que vous avez sur la machine. Vous pourrez ainsi identifier les cartes
de la machine. Maintenant, nous avons installé les bibliothèques et les exécutables. Nous avons
aussi configuré les identifiants de noeuds. L'étape d'après est d'effectuer le
plan de noms ou d'adresses IP pour les noeuds SCI.| 
shell> ./sciconfig -c 1 -gsn
 | 
 
Le fichier de configuration des sockets SCI doit être placé dans le fichier
 
/etc/sci/scisock.conf
 . Ce fichier contient la carte des noms
d'hôtes et leur correspondance avec les noeuds SCI. L'identifiant de noeud
SCI correspond avec un autre via la carte SCI. Ci-dessous, voici un fichier
de configuration très simple : 
 Il est aussi possible de limiter cette configuration pour qu'elle ne s'applique
qu'à une sous-partie des ports des hôtes. Pour cela, une autre configuration est
utilisée, et placée dans  
/etc/sci/scisock_opt.conf
 .| 
#host           #nodeId alpha           8
 beta            12
 192.168.10.20   16
 | 
 Maintenant, nous sommes prêts à installer les pilotes. Nous devons installer d'abord
les pilotes bas-niveau, puis les pilotes SCI sockets.| 
#-key                        -type        -valuesEnablePortsByDefault                  yes
 EnablePort                  tcp           2200
 DisablePort                 tcp           2201
 EnablePortRange             tcp           2202 2219
 DisablePortRange            tcp           2220 2231
 | 
 Si vous voulez, vous pouvez maintenant tester votre installation
en appelant le script qui teste tous les noeuds SCI.| 
shell> cd DIS/sbin/shell> ./drv-install add PSB66
 shell> ./scisocket-install add
 | 
 Si vous rencontrez une erreur et que vous devez changer les fichiers de configuration
SCI, alors il faudra utiliser le programme ksocketconfig pour adapter les configurations.| 
shell> cd /opt/DIS/sbin/shell> ./status.sh
 | 
 Pour vérifier que les sockets SCI sont fonctionnelles, vous pouvez utiliser
le programme  
latency_bench
  qui a besoin d'un composant serveur et d'un client
qui se connecte au serveur, pour tester les délais : l'activation de
SCI est évidente en lisant les délais de latence. Avant d'utiliser ces programmes,
vous devrez configurer la variable LD_PRELOAD tel que ci-dessous.To set up a server use the command| 
shell> cd /opt/DIS/utilshell> ./ksocketconfig -f
 | 
 Pour exécuter le client, utilisez cette commande :| 
shell> cd /opt/DIS/bin/socketshell> ./latency_bench -server
 | 
 Maintenant, la configuration des sockets SCI est complète. Le cluster
MySQL est prêt à s'exécuter avec les sockets SCI et le transporteur
SCI, documenté dans  Définition des transports SCI dans un cluster .La prochaine étape est de lancer le cluster MysQL. Pour activer l'utilisation
des sockets SCI, il est nécessaire de configurer la variable d'environnement 
LD_PRELOAD avant de lancer  
ndbd
 ,  
mysqld
  et  
ndb_mgmd
 . La
variable LD_PRELOAD doit pointer sur la bibliothèque du noyau qui
supporte les sockets SCI.| 
shell> cd /opt/DIS/bin/socketshell> ./latency_bench -client hostname_of_server
 | 
 
Voici un exemple pour lancer  
ndbd
  depuis un bash : 
 Depuis un environnement tcsh, la même chose se fait avec les 
commandes suivantes :| 
bash-shell> export LD_PRELOAD=/opt/DIS/lib/libkscisock.sobash-shell> ndbd
 | 
 Notez bien que le cluster MysQL ne peut utiliser que les variantes
du noyau des sockets SCI.| 
tcsh-shell> setenv LD_PRELOAD=/opt/DIS/lib/libkscisock.sotcsh-shell> ndbd
 | 
 |