PostgreSQL è uno dei database che può essere distribuito tramite ClusterControl, insieme a MySQL, MariaDB e MongoDB. ClusterControl non solo semplifica la distribuzione del cluster di database, ma ha una funzione per la scalabilità nel caso in cui l'applicazione cresca e richieda tale funzionalità.
Graficando il database, l'applicazione funzionerà in modo molto più fluido e migliore nel caso in cui il carico dell'applicazione o il traffico aumentino. In questo post del blog, esamineremo i passaggi su come eseguire la distribuzione e lo scale-up di PostgreSQL v13 con ClusterControl 1.8.2.
Distribuzione dell'interfaccia utente (UI)
Esistono due modalità di implementazione in ClusterControl, l'interfaccia utente Web (UI) e l'interfaccia a riga di comando (CLI). L'utente ha la libertà di scegliere una qualsiasi delle opzioni di distribuzione in base alle proprie preferenze e necessità. Entrambe le opzioni sono facili da seguire e ben documentate nella nostra documentazione. In questa sezione, analizzeremo il processo di distribuzione utilizzando la prima opzione:interfaccia utente web.
Il primo passo è accedere a ClusterControl e fare clic su Distribuisci:
Ti verrà presentato lo screenshot seguente per il passaggio successivo della distribuzione , scegli la scheda PostgreSQL per continuare:
Prima di procedere oltre, vorrei ricordarvi che il collegamento tra il nodo ClusterControl ei nodi database devono essere privi di password. Prima della distribuzione, tutto ciò che dobbiamo fare è generare ssh-keygen dal nodo ClusterControl e quindi copiarlo su tutti i nodi. Compila l'input per l'utente SSH, la password Sudo e il nome del cluster in base alle tue esigenze e fai clic su Continua.
Nello screenshot qui sopra, dovrai definire la Porta del Server (in caso in cui desideri utilizzarne altri), l'utente che desideri nonché la password e assicurati di scegliere la versione 13 che desideri installare.
Autore fotoDescrizione fotoQui dobbiamo definire i server usando il nome host o l'indirizzo IP, come in questo caso 1 master e 2 slave. Il passaggio finale è scegliere la modalità di replica per il nostro cluster.
Dopo aver fatto clic su Distribuisci, il processo di distribuzione verrà avviato e possiamo monitorare il progressi nella scheda Attività.
La distribuzione richiede normalmente un paio di minuti, le prestazioni dipendono principalmente dal rete e le specifiche del server.
Ora che PostgreSQL v13 è installato utilizzando la GUI ClusterControl, il che è piuttosto semplice .
Distribuzione CLI (Command Line Interface) PostgreSQL
Da quanto sopra, possiamo vedere che la distribuzione è piuttosto semplice utilizzando l'interfaccia utente web. La nota importante è che tutti i nodi devono avere connessioni SSH senza password prima della distribuzione. In questa sezione, vedremo come eseguire la distribuzione utilizzando ClusterControl CLI o la riga di comando degli strumenti "s9s".
Abbiamo presupposto che ClusterControl sia stato installato prima di questo, iniziamo generando ssh-keygen. Nel nodo ClusterControl, eseguire i seguenti comandi:
$ whoami
root
$ ssh-keygen -t rsa # generate the SSH key for the user
$ ssh-copy-id 10.10.40.11 # pg node1
$ ssh-copy-id 10.10.40.12 # pg node2
$ ssh-copy-id 10.10.40.13 # pg node3
Una volta che tutti i comandi precedenti sono stati eseguiti correttamente, possiamo verificare la connessione senza password utilizzando il seguente comando:
$ ssh 10.10.40.11 "whoami" # make sure can ssh without password
Se il comando precedente viene eseguito correttamente, la distribuzione del cluster può essere avviata dal server ClusterControl utilizzando la seguente riga di comando:
$ s9s cluster --create --cluster-type=postgresql --nodes="10.10.40.11?master;10.10.40.12?slave;10.10.40.13?slave" --provider-version='13' --db-admin="postgres" --db-admin-passwd="[email protected]$$W0rd" --cluster-name=PGCluster --os-user=root --os-key-file=/root/.ssh/id_rsa --log
Subito dopo aver eseguito il comando sopra, vedrai qualcosa del genere che significa che l'attività è iniziata:
Il cluster verrà creato su 3 nodi di dati.
Verifica parametri lavoro.
10.10.40.11: Checking ssh/sudo with credentials ssh_cred_job_6656.
10.10.40.12: Checking ssh/sudo with credentials ssh_cred_job_6656.
10.10.40.13: Checking ssh/sudo with credentials ssh_cred_job_6656.
…
…
This will take a few moments and the following message will be displayed once the cluster is deployed:
…
…
Directory is '/etc/cmon.d'.
Filename is 'cmon_1.cnf'.
Configuration written to 'cmon_1.cnf'.
Sending SIGHUP to the controller process.
Waiting until the initial cluster starts up.
Cluster 1 is running.
Registering the cluster on the web UI.
Waiting until the initial cluster starts up.
Cluster 1 is running.
Generated & set RPC authentication token.
Puoi anche verificarlo accedendo alla console web, utilizzando il nome utente che hai creato. Ora abbiamo un cluster PostgreSQL distribuito utilizzando 3 nodi. Se desideri saperne di più sul comando di distribuzione sopra, ecco il miglior riferimento per te.
Ridimensionamento di PostgreSQL con ClusterControl UI
PostgreSQL è un database relazionale e sappiamo che la scalabilità orizzontale di questo tipo di database non è facile rispetto a un database non relazionale. Al giorno d'oggi, la maggior parte delle applicazioni necessita di scalabilità per fornire prestazioni e velocità migliori. Esistono molti modi per implementarlo a seconda dell'infrastruttura e dell'ambiente.
La scalabilità è una delle funzionalità che può essere facilitata da ClusterControl e può essere realizzata sia nell'interfaccia utente che nella CLI. In questa sezione, vedremo come scalare in orizzontale PostgreSQL utilizzando l'interfaccia utente ClusterControl. Il primo passo è accedere alla tua UI e scegliere il cluster, una volta scelto il cluster puoi fare clic sull'opzione come da screenshot qui sotto:
Dopo aver fatto clic su "Aggiungi slave di replica", verrà visualizzata la pagina seguente . Puoi scegliere "Aggiungi nuovo..." o "Importa..." a seconda della tua situazione. In questo esempio sceglieremo la prima opzione:
Dopo aver fatto clic su di essa verrà visualizzata la seguente schermata:
Autore fotoDescrizione foto-
Nome host slave:il nome host/indirizzo IP del nuovo slave o nodo
-
Slave Port:la porta PostgreSQL dello slave, il default è 5432
-
Nome cluster:il nome del cluster, puoi aggiungerlo o lasciarlo vuoto
-
Usa Package Default per Datadir:puoi selezionare questa opzione deselezionando se vuoi avere una posizione diversa per Datadir
-
Installa il software PostgreSQL:puoi lasciare questa opzione selezionata
-
Replica sincrona:puoi scegliere che tipo di replica desideri in questa
-
Includi nel set LoadBalancer (se esiste):questa opzione deve essere verificata se hai LoadBalancer configurato per il cluster
La nota chiave importante qui è che è necessario configurare il nuovo host slave in modo che sia senza password prima di poter eseguire questa configurazione. Una volta confermato tutto, possiamo fare clic sul pulsante "Fine" per completare l'installazione. In questo esempio, ho aggiunto l'IP "10.10.40.140".
Ora possiamo monitorare l'attività lavorativa e completare l'installazione. Per confermare la configurazione, possiamo andare nella scheda "Topologia" per vedere il nuovo slave:
Ridimensionamento di PostgreSQL con ClusterControl CLI
Per aggiungere i nuovi nodi al cluster esistente è molto semplice usando la CLI. Dal nodo del controller, eseguire il comando seguente. Il primo comando è identificare il cluster a cui vorremmo aggiungere il nuovo nodo:
$ s9s cluster --list --long
ID STATE TYPE OWNER GROUP NAME COMMENT
1 STARTED postgresql_single admin admins PGCluster All nodes are operational.
In questo esempio, possiamo vedere che l'ID del nodo è "1" per il nome del cluster "PGCluster". Vediamo la prima opzione di comando su come aggiungere un nuovo nodo al cluster PostgreSQL esistente:
$ s9s cluster --add-node --cluster-id=1 --nodes="postgresql://10.10.40.141?slave" --log
La scorciatoia "--log" alla fine della riga ci permetterà di vedere qual è l'attività corrente in esecuzione dopo il comando eseguito come di seguito:
Using SSH credentials from cluster.
Cluster ID is 1.
The username is 'root'.
Verifying job parameters.
Found a master candidate: 10.10.40.11:5432, adding 10.10.40.141:5432 as a slave.
Verifying job parameters.
10.10.40.11: Checking ssh/sudo with credentials ssh_cred_cluster_1_6245.
10.10.40.11:5432: Loading configuration file '/var/lib/pgsql/13/data/postgresql.conf'.
10.10.40.11:5432: wal_keep_segments is set to 0, increase this for safer replication.
…
…
Il prossimo comando disponibile che puoi usare è il seguente:
$ s9s cluster --add-node --cluster-id=1 --nodes="postgresql://10.10.40.142?slave" --wait
Aggiungi nodo al cluster
\ Job 9 RUNNING [▋ ] 5% Installing packages
Nota che c'è l'abbreviazione "--wait" nella riga e l'output che vedrai verrà visualizzato come sopra. Una volta completato il processo, possiamo confermare i nuovi nodi nella scheda "Panoramica" del cluster dall'interfaccia utente:
Conclusione
In questo post del blog, abbiamo esaminato due opzioni per ridimensionare PostgreSQL in ClusterControl. Come puoi notare, la scalabilità orizzontale di PostgreSQL è facile con ClusterControl. ClusterControl non solo può eseguire la scalabilità, ma è anche possibile ottenere una configurazione ad alta disponibilità per il cluster di database. Funzionalità come HAProxy, PgBouncer e Keepalived sono disponibili e pronte per essere implementate per il tuo cluster ogni volta che senti la necessità di tali opzioni. Con ClusterControl, il tuo cluster di database è facile da gestire e monitorare allo stesso tempo.
Ci auguriamo che questo post del blog ti aiuti a ridimensionare la tua configurazione di PostgreSQL.