Špecifikácia utility ha-rum
Autor:
Ondrej Jombík
| Sekcia:
Programovanie
| Dátum: 2011-01-23
Program rum je veľmi šikovná utilita z dielne spoločnosti WebSupport. Je to jednoduchý TCP redirector, ktorý sa vie bindnúť na lokálny port a socket zároveň a presmerováva dátový prenos na cieľový server. Používa sa to najmä v súvislosti s MySQL, ale využitie je samozrejme ľubovoľné podľa potreby.
Najnovšie uvoľnili aj verziu rum2, ktorá dokáže na základe MySQL používateľského mena smerovať dátový prenos na konkrétny cieľový server, podľa záznamov jednoduchej CDB databáze. To je tiež veľmi šikovné, ale v našich prostrediach len málo využiteľné. Preto sa zameriame na vymoženosti (features) z oblasti H/A (High Availability) a pokúsime sa vytvoriť ha-rum s nasledujúcou špecifikáciou:
- bind na ľubovoľný počet lokálnych portov a socketov
- špecifikácia viacerých cieľových serverov rôznych typov, s definovaním defaultného cieľového servera (prípadne implementácia priorít)
- typy cieľových serverov: active a standby (standby servery sa použijú len vtedy, ak je počet active serverov klesne na definovanú hodnotu; default=0, čiže standby servery sa začnú používať, ak sú všetky active servery nedostupné)
- failover alebo loadbalacing mód: failover mód je pripojený len na jeden cieľový server a v prípade jeho nedostupnosti zmení za iný; loadbalancing mód rozhadzuje spojenia metódou R-R alebo podľa priorít medzi všetky active servery
- kompletný parsing príkazového riadku (command line) a konfiguračného suboru /etc/mysql/ha-rum.conf pomocou libcfg+
- nastavenie RLIMIT_NOFILE cez setrlimit() na počet otvorených filedescriptorov
- dynamické zvyšovanie RLIMIT_NOFILE až po konfigurovateľné maximum
- logovanie do konfigurovateľného súboru alebo cez syslog (ehm, potrebujeme logovať cez syslog?)
- každá zmena stavu resp. toku smerovania dát sa zapíše do štruktúry eventov s definovanou veľkosťou (static memory buffer)
- aktívne reakcie na signály:
- SIGTERM
- korektne ukončí aplikáciu (+ zápis do log súboru)
- SIGUSR1
- posunie aktuálne používaný cieľový server o jeden vopred
- SIGUSR2
- posunie aktuálne používaný cieľový server o jeden vzad
- štatistické rozhranie s ľahko parsovateľným výstupom a s grupovaním dát per lokálny port/socket a per vzdialený server
- vypisované údaje:
- aktuálny stav
- posledná zmena stavu (active-since)
- aktuálny počet konekcií
- celkový počet konekcií
- prenesené bajty
- história posledných 10 eventov
- dohľadovač štatistického rozhrania pre Zabbix: externá utilita typu mdadm --monitor, ktorá pravidelným kontrolovaním štatistického rozhrania bude reportovať prípadné potiaže
- rozdelenie zdrojových kódov do viacerých súborov, správa v CVS
|