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
http://www.dolphinics.no/ftp/source/DIS_GPL_2_5_0_SEP_10_2004.tar.gz http://www.dolphinics.no/ftp/source/SCI_SOCKET_2_3_0_OKT_01_2004.tar.gz
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.
shell>tar xzf DIS_GPL_2_5_0_SEP_10_2004.tar.gz
shell>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
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>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
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 :
4, 8, 12, ....
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.
4,8, 12, ... , 60 Anneau du premier port 68, 72, .... , 124 Anneau du deuxième port 132, 136, ..., 188 Anneau du troisième port .. 452, 456, ..., 508 Anneau du huitième port
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.
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 :
shell> ./sciconfig -c 1 -a 0 -n 68
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 -gsn
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.
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 :
#host #nodeId alpha 8 beta 12 192.168.10.20 16
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
.
#-key -type -values EnablePortsByDefault yes EnablePort tcp 2200 DisablePort tcp 2201 EnablePortRange tcp 2202 2219 DisablePortRange tcp 2220 2231
Maintenant, nous sommes prêts à installer les pilotes. Nous devons installer d'abord les pilotes bas-niveau, puis les pilotes SCI sockets.
shell>cd DIS/sbin/
shell>./drv-install add PSB66
shell>./scisocket-install add
Si vous voulez, vous pouvez maintenant tester votre installation en appelant le script qui teste tous les noeuds SCI.
shell>cd /opt/DIS/sbin/
shell>./status.sh
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/util
shell>./ksocketconfig -f
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/bin/socket
shell>./latency_bench -server
Pour exécuter le client, utilisez cette commande :
shell>cd /opt/DIS/bin/socket
shell>./latency_bench -client hostname_of_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 Section 16.4.4.9, « Définition d'un transporteur 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.
Voici un exemple pour lancer ndbd
depuis un
bash :
bash-shell> export LD_PRELOAD=/opt/DIS/lib/libkscisock.so bash-shell> ndbd
Depuis un environnement tcsh, la même chose se fait avec les commandes suivantes :
tcsh-shell> setenv LD_PRELOAD=/opt/DIS/lib/libkscisock.so tcsh-shell> ndbd
Notez bien que le cluster MysQL ne peut utiliser que les variantes du noyau des sockets SCI.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.