Možnosti riešenia failover php+ mysq webserveru

Možnosti riešenia failover php+ mysq webserveru
« kdy: 17. 12. 2019, 14:29:46 »
Potreboval by som poradiť z riešením failover php + mysql webserveru
Mám custom php aplikáciu + mysql databáza na webservery s pleskom umiestnenú na virtuálnom servery v serverhostingu. Zálohovanie robím s backuppc + skript na mysql databázy.
Chcel by som zlepšiť/zrýchliť disaster recovery - v prípade výpadku alebo poškodenia webserveru aby som vedel rýchlo obnoviť prevádzku aplikácie.
Kedže aplikácia je nasadená na virtuálnom servery v webhostingu neviem to riešiť snapshotmi na úrovni virtualizačného serveru.
Napadli ma zatial tieto riešenia:
a. Master-slave cluster - dva webservery - súbory synchronizované rsyncom + databázový server mysql master-slave
V prípade výpadku master serveru bude možné rýchlo nahodiť založný slave server.
b. cloud riešenie - Kubernetes - neviem ale či je to vhodné riešenie na daný problém.

Pokial by sa jednalo len o failover pre súbory tak som našiel viacero riešení. Ale pre mysql databázu, mysql server vie len master-slave s tým že zapisovanie sa vždy vykonáva na na master databázu.

Riešili ste to niekto ? A ak áno akým spôsobom ?

PS: Vopred ďakujem za každý návrh riešenia.


RDa

  • *****
  • 1 463
    • Zobrazit profil
    • E-mail
Re:Možnosti riešenia failover php+ mysq webserveru
« Odpověď #1 kdy: 17. 12. 2019, 15:08:41 »
Mám custom php aplikáciu

Zprovozni si dve ci vic instanci tech VM, a ta aktivni bude zapisovat jak do lokalniho tak i vzdaleneho/vzdalenych SQL.
(vse co je insert/update/delete)

V pripade vypadku se jen prohodi IP nebo forward :80 na obsluhujici web server.

alfi

  • ****
  • 290
    • Zobrazit profil
    • E-mail
Re:Možnosti riešenia failover php+ mysq webserveru
« Odpověď #2 kdy: 17. 12. 2019, 15:11:01 »
Dva servery, ideálně v různých serverovnách, soubory rsync (záleží, jak často se mění), DNS s krátkou platností, slave monitoruje master, a když se nedoptá, změní DNS na sebe - to funguje i automaticky. Mysql umí i master-master = obě mají nastavenou slave jako tu druhou, zapisovat se potom dá kamkoliv, po výpadku by se to mělo samo sesynchronizovat. Totéž je potom potřeba i pro sessions, aby byly dostupné z obou serverů (nejlíp taky do mysql). Nejspíš to pak může běžet i jako active-active, ale my jsme to vždycky provozovali jen jako active-standby s výpadkem max. 5 minut, než se propíše ta změna v DNS :-)

Re:Možnosti riešenia failover php+ mysq webserveru
« Odpověď #3 kdy: 17. 12. 2019, 15:28:20 »
Určitě bych se snažil držet mysql tak, aby se zapisovalo vždy jen na jednu stranu. Replikace může být nakonfigurovaná oboustranně, abys to pak nemusel po přehození řešit. Máme to tak, že po bootu jsou všechny mysql read-only (tedy pouze přijímají replikační transakce) a master se nejdříve musí přehodit do zápisového režimu, aby se minimalizovala šance oboustranných zápisů. Sice by se nemuselo nic stát, ale také by třeba mohly nastávat kolize při replikaci a to se pak musí řešit ručně.

Máme třetí instanci, která je slave pro oba mastery a ta řeší zálohování apod. Je jedno, který z masterů do ní replikuje.