Sziasztok!
Először is köszöntök mindenkit. Régóta olvasom a HUP-os írásokat, fórumot, nagyon örülök, hogy itt lehetek! \o/ :-)
Szeretném megtanulni, megérteni a redundáns megoldások működését.
Ha nagyon triviális dolgokat írok le, elnézést kérek előre is, csak szeretném, hogy biztosan elsőre értsétek.
Elmondom, hol tartok:
- Régóta használok Linux alapú szervereket különböző dolgokra, főként mint fejlesztő. Utóbbi időben CentOS-t, régebben Debian-t és néha Ubuntu-t. CentOS irányba akarok menni.
- Raktam már össze MySQL Cluster-t sikeresen manuálisan és a Severalnines féle ClusterControl Configurator For MySQL Cluster eszközzel is.
- Állítottam be MySQL alapú Postfix levelezést, spam szűréssel. DNS Failover-ről olvastam, de nem tudom, hogy tudnám megoldani. Van saját domain-em, hozzáférek a DNS szerverhez, bármit be tudok állítani rajta, az egy CPANEL-es gép. De itt tartok.
- Raktam fel Apache-ot és PHP-t MySQL támogatással.
- Használtam HA + DRBD alapú MySQL + Apache + PHP (LAMP) szervert, az jól működött, de ott nem volt MySQL Cluster. De nem én telepítettem, de értem a működését nagyvonalakban azt hiszem.
- Cacti-t és Nagios-t is használtam, Zabbix-ot sokan javasolják, de még nem teszteltem. Egyiket sem telepítettem még. Tetszik elviekben a Zabbix kliens támogatása és hw detektálása.
Olvastam többféle leírást, például:
- Zabbix (Failover Zabbix, MySQL, Apache and Postfix with DRBD-Pacemaker
Ami van:
- sikerült kölcsönbe kapnom sok hónapra 4 magos 6-8 éves Xeon alapú szervereket 8 GB memóriával, ezekkel tudnék "játszani", valamint van még 2-3 kisebb teljesítményű max 2-4 GB memóriás, 1-2 processzoros desktop gép, amivel bármit csinálhatok, össze vannak kötve gigabites switch-en, van több hálózati kártyám, ha kell.
- a gépek nincsenek kint a neten, de ha nagyon kell tudok netet adni nekik, például a telepítés idejére
Cél:
- Redundáns rendszer kiépítése: ha kihúzom az egyik gépet a konnektorból, minden szolgáltatás működjön, adatvesztés nélkül
- 1, esetleg 2 figyelő szerver felépítése, akár ezt is redundánsra, de ez későbbi lépés
- Az már csak extra lenne, ha közben a másik gépet is lehetne bizonyos dolgokra használni. Ami jó lenne, ha a passzív gépen is menne a web szerver, de ha nem bonyolítom túl, akkor azt úgy állítom be, hogy mindig menjen, és nem kell a HA-nak vagy bármi failover alkalmazásnak kapcsolgatnia, és kész.
- az apache+php-nek egész nagy lehet a memóriahasználata (persze a kódtól függ), ha van gyorsabb, kevesebb memóriát használó php-t futtató megoldás, az is jó lehet, nginx
- varnish használat akár, azt sem teszteltem még
- extra: akár másik php változatot is felrakni egy elkülönített részre, más port-ra (más web szerverként), tesztelni, de ez a legutolsó, ami kell, csak ez sem lenne rossz... ennek még nem néztem nagyon utána
- lehetőleg mindent package-ekkel megoldani, hogy minden frissíthető legyen. Például CentOS-re counter-imap-os postfix-et régebben csak manuális fordítással sikerült akkor megoldani, de már van dovecot-os package-es megoldás erre, ami működik (remélem, ezen nem röhögtök... nagyon... :)
Szolgáltatások a célhoz, ami mind a két szerveren folyamatosan menne:
- web szerver (nem ragaszkodok az Apache-hoz, csak a PHP minél gyorsabban fusson) + PHP, tehát a web szerver az mindkettőn mindig menne. Itt a web szerver konfigurációt DRBD-re raknám, hogy ugyanaz legyen mind a kettő helyen. Sőt, a /var/www -t is a DRBD-re, hogy ugyanaz legyen a tartalom. Tehát ha feltölt valaki egy file-t a DRBD alapú helyre, akkor ott legyen a másik szerverről is. NDB-nek köszönhetően az adatbázis bejegyzés is lesz, hogy van feltöltés, tehát elvileg jó lesz. Kihagytam valamit?
- MySQL Cluster. Rakhatom a management node-okat azonos gépre mint a data node-ok, vagy rakjam mindenképpen 1-2 külön gépre? (legutóbb 2 management node volt 2 data szerverhez, amikor próbálkoztam ezzel és jó volt). Jól gondolom, hogy az NDB-nek nyilván nincs szüksége a DRBD-re és semmi hasznosra nem tudom a DRBD-t használni az NDB-nél?
- Ha lenne használva a sima MySQL, hogy oldjam meg? Mi a legjobb, ha 2 irányú adatok jöhetnek, nem 1 irányú? De első körben mindenre NDB-t használnék.
- Galera MariaDB Cluster lesz + arbiter az egyik gépen, nem MySQL Cluster
Szolgáltatások a célhoz, aminek redundánsan mennie kellene: (szerver1 és szerver2)
- Redundáns levelezés megoldása. Postfix irányban indulnék el, az adatbázis NDB-ben Galera Clusterben lenne. MySQL-t használtam eddig postix-szel, gondolom működni fog. Valaki használt már NDB+postfix párost? Itt sok kérdés van, ha nem elérhető az egyik szerver, hogy fog bejönni a levél a másik szerverre? (közös/virtual IP? Ilyet még nem csináltam). Ha átveszi a szerver2 a szerver1 ip-jét a levelezés miatt, akkor mi lesz azzal a felhasználóval, aki a szerver2 ip-jére csatlakozott? Szóval itt homály van még...
- Hogy legyen megoldva, hogy átvegye az IP-jét vagy a domain nevét a passzív szerver az "eltűnt" szervernek? Mit csinálnék, ha ez egy hosting teremben lenne akár, és átvegye a kiesett gépet?
Management szerver (szerver3)
- valamilyen szerver felügyeleti szoftver használata, Zabbix-et gondoltam kipróbálni, de ez mehet erre vagy akár a erre és egy redundáns párjára is, külön, ahova az NDB management node is kerülne.
Még mielőtt félre értitek: nem azt várom, hogy valaki helyettem ezeket megoldja, vagy ilyesmi, csak iránymutatást, véleményt várnék, hogy jó irányban gondolkozom-e.
Új vagyok itt, de ha megoldható, akkor folyamatosan mondanám hol tartok és ha elakadok, azt is leírnám.
Ha van igény rá, le is írom, mi a megoldás erre. Én amiben tudok, segíteni szoktam mindenkinek, de ha ezt tudnám tökéletesen, nem kérdeznék itt... :-)
Ha bármi észrevételed van, szívesen várom.
UPDATE 1:
DRBD (primary-primary) helyett, ha mind a kettő szervert szeretném használni, de szükség lenne, hogy bizonyos fájlokat mind a két gépről lehessen írni, mi lehet a legjobb megoldás?
Tehát ha az egyik gépen felöltenek webről egy állományt, és lementődik a file rendszerre, akkor a másik gépről is olvasható legyen. Ez a cél.
A file kezelés szempontjából primary-primary modell kellene, és akkor mind a 2 gépen működhetne a webszerver.
- DRBD, de a hagyományos üzemmódban (active-passive), ha failover, akkor elindulnak a szolgáltatások a passzív szerveren. Így bukta a 2 gép egyidejű használata. De elvileg a legjobb adatbiztonságú (?). (lenne persze máshova mentés azért, stb)
- GlusterFS? Érdemes ebben az irányban elindulni?
- NFS / GFS2 / OCFS2
Ha DRBD active-passive, akkor milyen file rendszert rakjak rá? Centos 7-ben alapból XFS van. Legyen XFS, vagy EXT4? Vagy más?
UPDATE 2:
A héten fogok konkrétumokat csinálni, nem csak tervezni és agyalni... :)
DRBD + XFS lesz, leírom, mennyire vált be.
Apache helyett Nginx-et fogok felrakni és LXC-be a PHP CGI-ket.