Introduction à GBase 8a MPP Cluster
GBase 8a MPP Cluster utilise une architecture distribuée fédérée MPP + Shared Nothing, où les nœuds communiquent via un réseau TCP/IP et stockent les données sur des disques locaux. Cette solution prend en charge les déploiements symétriques et asymétriques.
Architecture produit GBase 8a MPP Cluster
Le produit GBase 8a MPP Cluster comprend trois composants essentiels et des fonctionnalités d'assistance :
- GCWare : Composant du cluster de gestion distribuée, fournissant des services de cohérence pour le cluster. Il enregistre et conserve la structure du cluster, l'état des nœuds, l'état des ressources, le contrôle parallèle et les verrous de file d'attente distribuée.
- GCluster : Composant du cluster d'ordonnancement distribué, agissant comme point d'entrée unique pour le cluster. Il accepte les connexions clients, analyse et optimise les requêtes SQL, génère des plans d'exécution distribués, sélectionne les nœuds appropriés pour l'exécution et renvoie les résultats.
- GNode : Composant du cluster de stockage et de calcul distribué, servant comme unité de stockage et de calcul des données. Il stocke les données du cluster, exécute les requêtes SQL envoyées par GCluster et reçoit des données pour le chargement.
- GCMonit : Surveille l'état de fonctionnement des composants GCluster et GNode, redémarre automatiquement les services si nécessaire.
- GCware_Monit : Surveille l'état de fonctionnement du composant GCware, redémarre automatiquement les services si nécessaire.
- GCRecover & GCSyncServer : Assurent la synchronisation des données entre les multiples répliques.
Concepts logiques et virtuels
Les composants peuvent être divisés en concepts logiques et virtuels :
Concepts logiques
- GCluster Cluster : Ensemble de nœuds d'entrée unique pour le cluster d'ordonnancement distribué.
- GCware Cluster : Ensemble de nœuds de gestion de cohérence pour le cluster de gestion distribuée.
- Data Cluster : Ensemble de nœuds de stockage et de calcul de données pour le cluster de données distribué.
Concepts virtuels
- VC (Virtual Cluster) : Regroupement logique des nœuds Data Cluster, permettant une isolation physique des différentes charges de travail.
- RC (Root Cluster) : Ensemble de tous les nœuds GCluster, GCware et Data, ne fournissant pas de services directs aux utilisateurs.
Recommandations de déploiement
Pour les petites et moyennes tailles de cluster, un déploiement symétrique est recommandé : GCWare, GCluster et GNode sont déployés sur le même nœud, créant ainsi des nœuds Coordinateurs qui sont à la fois des nœuds de coordination et de données.
Préparation de l'environnement
Exigences système
- Système d'exploitation : Redhat 7.x ou CentOS 7.x, avec les outils de développement installés
- Version du système : Tous les nœuds au sein du même VC doivent utiliser la même version du système d'exploitation
- Configuration matérielle recommandée : Processeur 2.0 GHz+, mémoire 4G+, espace disque libre 20G+, adresse IP statique
- Réseau : Tous les nœuds doivent être sur le même réseau et pouvoir communiquer entre eux; SSH doit être activé; pare-feu et SELinux désactivés
- Format de partition : EXT4 pour RHEL 6.X, XFS pour RHEL 7.X et SUSE
- Partition Swap : Pour les machines avec moins de 64G de RAM, Swap égal à la RAM; pour plus de 64G, Swap égal à la moitié de la RAM ou 64G
- Nom d'hôte : Doit être inférieur à 46 caractères
Vérification des ports
Vérifiez que les ports par défaut ne sont pas utilisés sur les nœuds :
lsof -i:port_number
Les ports requis :
- Tous les ports GCluster doivent être cohérents entre les nœuds
- Tous les ports Data doivent être cohérents entre les nœuds
- Tous les ports gcware doivent être cohérents entre les nœuds
Pré-installation
Configuration du système
Exécutez les étapes suivantes en tant qu'utilisateur root :
Désactivation du pare-feu
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
Désactivation de SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sestatus
Création de l'utilisateur de base de données
useradd gbase
echo "gbase:gbase" | chpasswd
Création des répertoires d'installation
mkdir -p /opt/gbase
chown -R gbase:gbase /opt
chown gbase:gbase /tmp
Configuration des paramètres système
Utilisez le script Python SetSysEnv.py pour configurer automatiquement les paramètres système :
python /opt/SetSysEnv.py --dbaUser=gbase --installPrefix=/opt/gbase --cgroup
Installation des dépendances
Installez les packages nécessaires :
yum install -y libcgroup psmisc ncurses-libs libdb glibc keyutils-libs libidn libgpg-error libgomp libstdc++ libgcc python-libs libgcrypt nss-softokn-freebl
Configuration des limites de processus
sed -i 's/#DefaultTasksMax=/DefaultTasksMax=infinity/g' /etc/systemd/system.conf
systemctl daemon-reexec
Configuration des pages transparentes et du planificateur I/O
sed -i 's/quiet/quiet transparent_hugepage=never elevator=deadline/' /etc/default/grub
Déterminez le type de démarrage et régénrez la configuration GRUB :
# Pour le démarrage BIOS
grub2-mkconfig -o /boot/grub2/grub.cfg
# Pour le démarrage UEFI
grub2-mkconfig -o /boot/efi/EFI/<distro_name>/grub.cfg
Redémarrez le système pour appliquer les modifications.
Installation de GBase 8a MPP Cluster
Configuration des paramètres d'installation
Modifiez le fichier demo.options dans le répertoire d'installation :
installPrefix= /opt/gbase
coordinateHost = 192.168.6.72,192.168.6.73,192.168.6.74
coordinateHostNodeID = 72,73,74
dataHost = 192.168.6.72,192.168.6.73,192.168.6.74
gcwareHost = 192.168.6.72,192.168.6.73,192.168.6.74
gcwareHostNodeID = 72,73,74
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbase'
rootPwd = 'gbase8a'
Installatino du logiciel
Exécutez le script d'installation en tant qu'utilisateur gbase :
./gcinstall.py --silent=demo.options
Vérification de l'état du cluster
Après l'installation, vérifiez l'état du cluster :
gcadmin
Création du mode de distribution des données
Configurez le fichier gcChangeInfo.xml pour définir la distribution des données :
<?xml version="1.0" encoding="utf-8"?>
<servers>
<rack>
<node ip="192.168.6.72"/>
<node ip="192.168.6.73"/>
<node ip="192.168.6.74"/>
</rack>
</servers>
Créez la distribution avec la commande :
gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 1
Initialisation du cluster
Initialisez le cluster avant d'exécuter des commandes SQL :
gccli -uroot
initnodedatamap;
Création de bases de données et de tables
Testez le déploiement en créant une base de données et une table :
create database test_db;
use test_db;
create table test_table(id int, name varchar(20));
insert into test_table values(1,'test');
select * from test_table;
Post-installation
Désinstallation du cluster
Arrêtez tous les services sur tous les nœuds :
gcluster_services all stop
gcware_services all stop
Exécutez le script de désinstallation sur le nœud principal :
cd /opt/gcinstall
./unInstall.py --silent=demo.options
Configuration du démarrage automatique
Configurez le démarrage automatique du cluster au démarrage du système :
cat<<-EOF>>/etc/rc.local
su - gbase <<-SG
gcware_services all start
gcluster_services all start
SG
EOF
chmod +x /etc/rc.local
Vérifiez que le cluster démarre correctement après le redémarrage du système :
gcadmin