ProxySQL

Iš Žinynas.
Jump to navigation Jump to search

ProxySQL su PerconaXtraDB Cluster[keisti]

Šis aprašytas LoadBalancing metodas labiausiai tinka aplinkoms kur norima atskirti įrašymo užklausas (INSERT, UPDATE) nuo informacijos išgavimo užklausų (SELECT) taip nukreipiant užklausų tipus į konkrečius MySQL klasterio serverius esančius priskirtoje grupėje(-ėse). Tokių užklausų srautas yra nukreipiamas į reikiamą serverį, o gavus atsakymą gražinamas klientui. Kiekvienas MySQL node'as gali būti konfigūruojamas individualiai arba grupėse t.y jo pasiekiamumo kriterijų nustatymai gali būti konfigūruojami plačiai, pasinaudojus ProxySQL administravimo aplinką per tą patį MySQL klientą, tik skirtingu prievadu (Port). Darysime LoadBalancing su ProxySQL taip jog, pirmasis node (10.0.0.120) veiktų kaip įrašantis (su WRITE režimu) ir visi kiti liktų veikti tiktai nuskaitymo (READ) režime, t.y galėtų atlikti tiktai (SELECT) užklausas. Tam panaudosime scriptą proxysql-admin, kuris jau yra tarp Percona Toolkit įrankių kurie kartu įdiegiami su PerconaXtraDB Cluster programine įranga.

Turime 4 node'us mysql cluster konfigūraciją:

  • 10.0.0.120 app3db1 (WRITE)
  • 10.0.0.102 app3db2 (READ)
  • 10.0.0.7 app3db3 (READ)
  • 10.0.0.6 app3db4 (READ)

ProxySQL galima diegti tame pačiame serveryje kuriame yra aplikacija, kuriai ir reikalingas MySQL servisas, arba galima tai daryti atskirame dedikuotame arba virtualiame serveryje.

 PerconaXtraDB Clusteryje sukuriame vartotoją[keisti]

CREATE USER 'proxysql'@'%' IDENTIFIED BY 'slaptažodis';
GRANT ALL ON *.* TO 'proxysql'@'%';

Paruošiame /etc/proxysql-admin.cnf[keisti]

export PROXYSQL_DATADIR='/var/lib/proxysql'
export PROXYSQL_USERNAME='admin'
export PROXYSQL_PASSWORD='admin'
export PROXYSQL_HOSTNAME='localhost'
export PROXYSQL_PORT='6032'
export CLUSTER_USERNAME='proxysql'
export CLUSTER_PASSWORD='slaptažodis'
export CLUSTER_HOSTNAME='10.0.0.120'
export CLUSTER_PORT='3306'
export MONITOR_USERNAME='monitor'
export MONITOR_PASSWORD='slaptažodis'
export CLUSTER_APP_USERNAME='normal_user'
export CLUSTER_APP_PASSWORD='slaptažodis'
export WRITE_HOSTGROUP_ID='3'
export READ_HOSTGROUP_ID='1'
export MODE="singlewrite"

Viršuje aprašytoje konfigūracijoje pakeičiame "slaptažodis" laukus, PROXYSQL_PASSWORD galime palikti, vistiek jis bus naudojamas tik vidiniams resursams administruoti ir išorę jis nepakliūna. CLUSER_PASSWORD butinai nurodomę teisingą prieš tai sukurto mysql klusteryje vartotojo slaptažodį. Jis bus naudojamas bendravimui su pačiu klasteriu. CLUSTER_APP_USERNAME ir PASSWORD galime drąsiai keisti pagal pageidavimus, šie bus naudojami mūsų vidinėje įmonės aplikacijoje.

Inicijuojame konfigūracijos kūrimą[keisti]

proxysql-admin --config-file=/etc/proxysql-admin.cnf --write-node=10.0.0.120:3306 --enable 

Dabar galime savo aplikacijoje nurodyti CLUSTER_APP_USERNAME ir password bei nestandartinį MySQL portą 6033, būtinai prieš ką nors darydami įsitikinkite ar jūsų aplikacija palaiko tokias nestandartines MySQL aplinkas.

Konfigūracijos keitimas[keisti]

Bet kada galima pakeisti, nustatytą konfigūraciją į kitą, taip pat ir naudoti kitą strategiją. pvz.: Išjungiame seną:

proxysql-admin --config-file=/etc/proxysql-admin.cnf --disable

Įjungiame naują:

proxysql-admin --config-file=/etc/proxysql-admin.cnf --mode=loadbal --enable 

Administravimas[keisti]

Administravimo panelė:

mysql -u admin -padmin -h 127.0.0.1 -P 6032

Serverių būsena:

SELECT * FROM mysql_servers;

Fail?[keisti]

Jeigu kažkas ne taip, visada galima matyti žurnaluose:

tail -f /var/lib/proxysql/proxysql.log