ClusterControl est indépendant de l'infrastructure - il peut être utilisé dans votre propre centre de données sur des hôtes physiques, ainsi que dans des environnements cloud virtualisés. Tout ce dont vous avez besoin est un accès ssh de l'hôte ClusterControl aux nœuds de la base de données, et vous pouvez ensuite déployer MySQL/MariaDB autonome/répliqué/cluster, MongoDB (ensembles de réplicas ou clusters fragmentés) ou PostgreSQL (réplication en continu). Dans cet article de blog, nous vous guiderons à travers les étapes de déploiement de ClusterControl sur EC2.
Configuration des instances dans EC2
La configuration matérielle requise pour ClusterControl est décrite ici. Ceux-ci sont destinés à créer une plate-forme performante pour le serveur ClusterControl. Cela dit, nous utiliserons une petite instance à des fins de test (t2.micro) - cela devrait nous suffire.
Tout d'abord, nous devons choisir une AMI. ClusterControl prend en charge :
- Redhat/CentOS/Oracle Linux 6 et versions ultérieures
- Ubuntu 12.04/14.04/16.04 LTS
- Debian 7.0 et versions ultérieures
Nous allons utiliser Ubuntu 16.04.
Étape suivante - type d'instance. Nous choisirons t2.micro pour le moment, bien que vous souhaitiez utiliser des instances plus grandes pour les configurations de production. Pour les autres fournisseurs de cloud, choisissez des instances avec au moins 1 Go de mémoire.
Nous allons déployer quatre instances à la fois, une pour ClusterControl et trois pour Percona XtraDB Cluster. Vous devez décider où ces instances doivent être déployées (VPC ou non, quel sous-réseau, etc.). Pour nos besoins de test, nous allons utiliser un VPC et un seul sous-réseau. Bien sûr, le déploiement de nœuds sur les sous-réseaux (zones de disponibilité) rend votre configuration plus susceptible de survivre si l'un des AZ devenait indisponible.
Pour le stockage, nous utiliserons 100 Go de volume SSD à usage général (GP2). Cela devrait être suffisant pour effectuer quelques tests avec un volume de données raisonnable.
Suivant - groupes de sécurité. L'accès SSH est obligatoire. En dehors de cela, vous devez ouvrir les ports requis par la base de données que vous prévoyez de déployer. Vous pouvez trouver plus d'informations sur les ports requis dans notre portail d'assistance.
Enfin, vous devez soit choisir l'une des paires de clés existantes, soit en créer une nouvelle. Après cette étape, vos instances seront lancées.
Une fois que les instances sont opérationnelles, il est temps d'installer ClusterControl. Pour cela, connectez-vous à l'une des instances et téléchargez le script d'installation de ClusterControl, install-cc :
[email protected]:~$ wget http://www.severalnines.com/downloads/cmon/install-cc
--2017-09-06 11:13:10-- http://www.severalnines.com/downloads/cmon/install-cc
Resolving www.severalnines.com (www.severalnines.com)... 107.154.146.155
Connecting to www.severalnines.com (www.severalnines.com)|107.154.146.155|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://www.severalnines.com/downloads/cmon/install-cc [following]
--2017-09-06 11:13:10-- https://www.severalnines.com/downloads/cmon/install-cc
Connecting to www.severalnines.com (www.severalnines.com)|107.154.146.155|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://severalnines.com/downloads/cmon/install-cc [following]
--2017-09-06 11:13:11-- https://severalnines.com/downloads/cmon/install-cc
Resolving severalnines.com (severalnines.com)... 107.154.238.155, 107.154.148.155
Connecting to severalnines.com (severalnines.com)|107.154.238.155|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 56913 (56K) [text/plain]
Saving to: ‘install-cc’
install-cc 100%[=====================================================================================================================>] 55.58K 289KB/s in 0.2s
2017-09-06 11:13:12 (289 KB/s) - ‘install-cc’ saved [56913/56913]
Ensuite, assurez-vous qu'il peut être exécuté avant de l'exécuter :
[email protected]:~$ chmod +x install-cc
[email protected]:~$ sudo ./install-cc
Au début, vous obtiendrez des informations sur les exigences des distributions Linux prises en charge :
!!
Only RHEL/Centos 6.x|7.x, Debian 7.x|8.x, Ubuntu 12.04.x|14.04.x|16.04.x LTS versions are supported
Minimum system requirements: 2GB+ RAM, 2+ CPU cores
Server Memory: 990M total, 622M free
MySQL innodb_buffer_pool_size set to 512M
Severalnines would like your help improving our installation process.
Information such as OS, memory and install success helps us improve how we onboard our users.
None of the collected information identifies you personally.
!!
=> Would you like to help us by sending diagnostics data for the installation? (Y/n):
This script will add Severalnines repository server for deb and rpm packages and
install the ClusterControl Web Applicaiton and Controller.
An Apache and MySQL server will also be installed. An existing MySQL Server on this host can be used.
À un moment donné, vous devrez répondre à quelques questions sur les noms d'hôte, les ports et les mots de passe.
=> The Controller hostname will be set to 172.30.4.20. Do you want to change it? (y/N):
=> Creating temporary staging dir s9s_tmp
=> Setting up the ClusterControl Web Application ...
=> Using web document root /var/www/html
=> No running MySQL server detected
=> Installing the default distro MySQL Server ...
=> Assuming default MySQL port is 3306. Do you want to change it? (y/N):
=> Enter the MySQL root password:
=> Enter the MySQL root password again:
=> Importing the Web Application DB schema and creating the cmon user.
=> Importing /var/www/html/clustercontrol/sql/dc-schema.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
=> Set a password for ClusterControl's MySQL user (cmon) [cmon]
=> Enter a CMON user password:
=> Enter the CMON user password again: => Creating the MySQL cmon user ...
mysql: [Warning] Using a password on the command line interface can be insecure.
=> Creating UI configuration ...
Enfin, vous obtiendrez la confirmation que ClusterControl a été installé. Le script d'installation tentera également de détecter votre adresse IP publique et imprimera un lien qui peut être utilisé dans votre navigateur pour accéder à ClusterControl.
=> ClusterControl installation completed!
Open your web browser to http://172.30.4.20/clustercontrol and
enter an email address and new password for the default Admin User.
Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://34.230.71.40/clustercontrol
Installation successful. If you want to uninstall ClusterControl then run install-cc --uninstall.
Une fois l'installation terminée, il reste encore une chose à faire :l'accès SSH de ClusterControl aux hôtes restants. À moins que vous n'ayez déjà un accès SSH entre les nœuds (et que vous puissiez utiliser ssh-copy-id), ce sera un processus manuel. Tout d'abord, nous devons générer une nouvelle clé ssh :
[email protected]:~# ssh-keygen -C 'galera_cluster' -f id_rsa_galera -t rsa -b 4096
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_galera.
Your public key has been saved in id_rsa_galera.pub.
The key fingerprint is:
SHA256:2tWOGXbrtc0Qh45NhNPzUSVdDzE9ANV1TJ0QBE5QrQY galera_cluster
The key's randomart image is:
+---[RSA 4096]----+
| .o=**X*&|
| Eo + BO|
| ..+ +.o|
| + o +.|
| S = o + o|
| o o * * o |
| . . o + = |
| . . = |
| . . o|
+----[SHA256]-----+
[email protected]:~#
Nous pouvons vérifier qu'il a été créé correctement. Vous voudrez également copier le contenu de la clé publique - nous l'utiliserons pour créer ses copies sur les nœuds restants.
[email protected]:~# cat id_rsa_galera.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDYKil17MzTrNc70GIQlVoK6xLop9acfT3W6kBUGO4ybsvIA5Fss+WvT/DLsYMtukq2Eih93eO4amLRYQIeyWSjJ/bBwIF/LXL4v04GF8+wbDgCyiV/t9dSuXna9qFeawkUVcPjnmWnZqUoaP5QeovXTluxl54xEwbFm1oLT+fgWbaim5w9vVUK4+hAHaZ7wVvTPVsIt1B3nJgWJF0Sz+TJN87vSUg7xdshgzhapUotXlguFGVzmNKWLnEFDCK7RT41oh4y4rkKP7YLc+wFfRHYTnKyMIcf0/0VMyL+2AdwQp8RThbBommf2HGimF1hSyA9/fc+tLi7FVTg1bKKeXj4hwexeFAJZwoy3HyD3wQ/NwadpDVk5Pg7YYzdN2aCZfvo27qp3gdQQ2H+LF6LvDyQEkgRpFN+pHoWQvPjJJasjfIcfdaC9WmDiL4s5fXyCTQz/x0NaTXVkLBS9ibfOUw8AGdd36FvdqnNOFOlMLKLa359JhdpqXnH7ksiThcotQuFmV5Dc8M66vTDz9rvVZhNC0nME478RNBP0Bgj1BM26XdQlzozeaRmHGoZXcSQVJTXBC93+QN4+bRmWmxhhj5G5M7bFiQyal1VtugoUt8ZV4NiiG+KDd6yj5um8+CffD/BASGrv3vffH+AK7xtjchIv5su40+unecfSOtO98TiQw== galera_cluster
Maintenant, sur chaque nœud restant, vous devez ajouter cette clé publique dans le fichier authorized_keys. Pour Ubuntu, vous souhaiterez peut-être d'abord nettoyer son contenu si vous souhaitez utiliser une connexion root. Par défaut, seul l'utilisateur Ubuntu peut être utilisé pour se connecter via SSH. Une telle configuration (utilisateur régulier et sudo) est également possible à utiliser avec ClusterControl mais ici nous allons opter pour un utilisateur root.
[email protected]:~# vim ~/.ssh/authorized_keys
Une fois que les fichiers authorized_keys sur tous les nœuds contiennent notre clé publique, nous copierons notre clé publique dans le répertoire .ssh et apporterons les modifications nécessaires aux droits d'accès :
[email protected]:~# cp id_rsa_galera /root/.ssh/
[email protected]:~# chmod 600 /root/.ssh/id_rsa_galera
Nous pouvons maintenant tester si l'accès SSH fonctionne comme prévu :
[email protected]:~# ssh -i /root/.ssh/id_rsa_galera 172.30.4.46
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-1022-aws x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
0 packages can be updated.
0 updates are security updates.
[email protected]:~# logout
Connection to 172.30.4.46 closed.
Tout va bien. Il est temps de configurer ClusterControl.
Remplissez quelques détails d'inscription.
Une fois connecté, un assistant apparaîtra avec une option pour déployer un nouveau cluster ou en importer un existant.
Nous voulons déployer le cluster Percona XtraDB, nous allons donc opter pour "Déployer le cluster de base de données" et sélectionner l'onglet "MySQL Galera". Ici, nous devons remplir les détails d'accès requis pour la connectivité SSH. Nous définirons l'utilisateur SSH sur root et nous remplirons le chemin d'accès à notre clé SSH.
Ensuite, nous définirons un fournisseur, une version, un mot de passe et des adresses IP pour nos hôtes de base de données. N'oubliez pas que ClusterControl vérifiera la connectivité SSH aux hôtes de la base de données cible. Si tout fonctionne bien, vous verrez des coches vertes. Si vous voyez que l'authentification SSH a échoué, vous devrez enquêter car le serveur ClusterControl n'est pas en mesure d'accéder à vos hôtes de base de données.
Ensuite, cliquez sur Déployer pour lancer le processus de déploiement.
Vous pouvez suivre la progression du déploiement dans le moniteur d'activité.
N'oubliez pas que le déploiement n'est que la première étape. L'exploitation d'une base de données nécessite que vous surveilliez les performances de vos hôtes, instances de base de données, requêtes et gérez les sauvegardes, corrigez les échecs et autres anomalies, gérez les proxies, les mises à niveau, etc. ClusterControl peut gérer tous ces aspects pour vous, alors essayez-le et faites-nous savoir comment vous vous en sortez.