ClusterControl gör det enkelt att distribuera en databasinstallation - fyll bara i några värden (databasleverantör, databasdatakatalog, lösenord och värdnamn) i distributionsguiden så är du igång. Resten av konfigurationsalternativen kommer att bestämmas (och beräknas) automatiskt baserat på värdspecifikationerna (CPU-kärnor, minne, IP-adress etc) och tillämpas på mallfilen som följer med ClusterControl. I det här blogginlägget ska vi titta på hur ClusterControl använder standardmallfiler och hur användare kan anpassa dem efter sina behov.
Basmallfiler
Alla tjänster som konfigurerats av ClusterControl använder en baskonfigurationsmall tillgänglig under /usr/share/cmon/templates på ClusterControl-noden. Följande är mallfiler som tillhandahålls av ClusterControl v1.4.0:
Filnamn | Beskrivning |
---|---|
config.ini.mc | MySQL-klusterkonfigurationsfil. |
haproxy.cfg | HAProxy-konfigurationsmall för Galera Cluster. |
haproxy_rw_split.cfg | HAProxy-konfigurationsmall för läs-skriv-delning. |
garbd.cnf | Galera arbitrator daemon (garbd) konfigurationsfil. |
keepalived-1.2.7.conf | Äldre keepalived-konfigurationsfil (före 1.2.7). Detta är föråldrat. |
keepalived.conf | Bevarad konfigurationsfil. |
keepalived.init | Bevarat init-skript. |
MaxScale_template.cnf | MaxScale-konfigurationsmall. |
mongodb-2.6.conf.org | MongoDB 2.x-konfigurationsmall. |
mongodb.conf.org | MongoDB 3.x-konfigurationsmall. |
mongodb.conf.percona | MongoDB 3.x-konfigurationsmall för Percona Server för MongoDB. |
mongos.conf.org | Konfigurationsmall för Mongo-router (mongos). |
my.cnf.galera | MySQL-konfigurationsmall för Galera Cluster. |
my57.cnf.galera | MySQL-konfigurationsmall för Galera Cluster på MySQL 5.7. |
my.cnf.grouprepl | MySQL-konfigurationsmall för MySQL-gruppreplikering. |
my.cnf.gtid_replication | MySQL-konfigurationsmall för MySQL-replikering med GTID. |
my.cnf.mysqlcluster | MySQL-konfigurationsmall för MySQL-kluster. |
my.cnf.pxc55 | MySQL-konfigurationsmall för Percona XtraDB Cluster v5.5. |
my.cnf.repl57 | MySQL-konfigurationsmall för MySQL-replikering v5.7. |
my.cnf.replication | MySQL-konfigurationsmall för MySQL/MariaDB utan MySQL:s GTID. |
mysqlchk.galera | Skriptmall för MySQL-hälsokontroll för Galera Cluster. |
mysqlchk.mysql | MySQL-hälsokontrollskriptmall för MySQL-replikering. |
mysqlchk_xinetd | Xinetd-konfigurationsmall för MySQL-hälsokontroll. |
mysqld.service.override | Systemd-enhetsfilmall för MySQL-tjänsten. |
proxysql_template.cnf | ProxySQL-konfigurationsmall. |
Listan ovan beror på funktionsuppsättningen som tillhandahålls av den installerade ClusterControl-versionen. I en äldre version kanske du inte hittar några av dem. Du kan ändra dessa mallfiler direkt, även om vi inte rekommenderar det som förklaras i nästa avsnitt.
Configuration Manager
Beroende på klustertyp kommer ClusterControl sedan importera den nödvändiga basmallfilen till CMON-databasen och tillgänglig via Hantera -> Konfigurationer -> Mallar när distributionen lyckas. Tänk till exempel på följande konfigurationsmall för ett MariaDB Galera-kluster:
ClusterControl kommer att ladda basmallinnehållet för Galera-konfigurationsmallen från /usr/share/cmon/templates/my.cnf.galera till CMON-databasen (inuti tabellen cluster_configuration_templates) efter att implementeringen har lyckats. Du kan sedan anpassa din egen konfigurationsfil direkt i ClusterControl UI. När du trycker på knappen Spara kommer den nya versionen av konfigurationsmallen att lagras i CMON-databasen, utan att skriva över basmallfilen.
När klustret har distribuerats och körs har mallen i användargränssnittet företräde. Basmallfilen används endast under den första klusterdistributionen via ClusterControl -> Deploy -> Deploy Database Cluster. Under distributionsstadiet kommer ClusterControl att använda en tillfällig katalog som finns på /var/tmp/ för att förbereda innehållet, till exempel:
/var/tmp/cmon-003862-6a7775ca76c62486.tmp
Dynamiska variabler
Det finns ett antal konfigurationsvariabler som kan konfigureras dynamiskt av ClusterControl. Dessa variabler representeras med versaler omgivna av tecknet '@', till exempel @[email protected] För fullständig information om variabler som stöds, se den här sidan. Dynamiska variabler konfigureras automatiskt baserat på indata som anges under klusterdistribution, eller så utför ClusterControl automatisk detektering baserat på värdnamn, IP-adress, tillgängligt RAM, antal CPU-kärnor och så vidare. Detta förenklar driftsättningen där du bara behöver ange minimala alternativ under klusterdistributionen
Om den dynamiska variabeln ersätts med ett värde (eller odefinierat), kommer ClusterControl att hoppa över det och använda det konfigurerade värdet istället. Detta är praktiskt för avancerade användare, där de vanligtvis har sin egen uppsättning konfigurationsalternativ som är skräddarsydda för specifika databasarbetsbelastningar.
Exempel på konfigurationsmall före distribution
Istället för att förlita oss på ClusterControls dynamiska variabel på antalet max_connections för våra databasnoder, kan vi ändra följande rad inuti /usr/share/cmon/templates/my57.cnf.galera, från:
[email protected]@sqldat.com
Till:
max_connections=50
Spara textfilen och se till att ClusterControl använder rätt basmall i dialogrutan Distribuera databaskluster:
Klicka på knappen Distribuera för att starta distributionen av databaskluster.
Exempel på konfigurationsmall efter implementering
När distributionen av databasklustret är klar kan du ha finjusterat de körande servrarna innan du bestämmer dig för att skala upp den. När du skalar upp kommer ClusterControl att använda konfigurationsmallen i CMON-databasen (den som fylls i under ClusterControl -> Konfigurationer -> Mallar) för att distribuera de nya noderna. Kom därför ihåg att tillämpa ändringen du gjorde på databasservern på mallfilen.
Innan du lägger till en ny nod är det en god praxis att granska konfigurationsmallen för att säkerställa att den nya noden får vad vi förväntade oss. Gå sedan till ClusterControl -> Lägg till nod och se till att rätt MySQL-mallfil är vald:
Klicka sedan på knappen "Lägg till nod" för att starta implementeringen.
Det är allt. Även om ClusterControl utför olika automatiseringsjobb när det kommer till driftsättning, ger det fortfarande frihet för användarna att anpassa implementeringen därefter. Lycka till med klustringen!