För två maskiner i ett kluster för att samarbeta och tillhandahålla en mycket tillgänglig tjänst krävs flera viktiga komponenter och mekanismer:
1. Delad lagring eller datareplikation:
* delad lagring: Båda maskinerna behöver åtkomst till samma lagringsplats (t.ex. SAN, NAS, delat filsystem). Detta gör att tjänsten kan sömlöst misslyckas med den andra maskinen utan dataförlust eftersom uppgifterna är lättillgängliga.
* Data Replication: Om delad lagring inte är möjlig eller önskvärd, garanterar en datamekanism (t.ex. DRBD, CEPH, distribuerade databaser med replikering) datakonsistens mellan de två maskinerna. En maskin fungerar som den primära, medan den andra håller en synkroniserad kopia.
2. Klusterprogramvara/ramverk:
* Denna programvara hanterar failover -processen, övervakar båda maskinernas hälsa och säkerställer att endast en maskin serverar tjänsten vid en viss tidpunkt. Exempel inkluderar:
* pacemaker/corosync: En populär öppen källklusterlösning.
* Keepalived: Används ofta för virtuell IP (VIP) hantering.
* Heartbeat: En annan öppen källkodslösning för hög tillgänglighet.
* PROPRIETARY SOLUTIONS: Många leverantörer erbjuder sin egen klusterprogramvara anpassad till sina hårdvaru- och operativsystem.
3. Virtuell IP -adress (VIP):
* En enda IP -adress tilldelas tjänsten, hanteras av klusterprogramvaran. Denna IP -adress "flyter" mellan de två maskinerna. När den primära maskinen misslyckas, flyttar klusterprogramvaran VIP till den sekundära maskinen, vilket gör tjänsten omedelbart tillgänglig igen.
4. Hälsoövervakning:
* Klusterprogramvaran övervakar kontinuerligt hälsan hos båda maskinerna (CPU -användning, minne, nätverksanslutning, servicestatus). Om den primära maskinen misslyckas med hälsokontrollen initieras failover -processen.
5. Failover -mekanism:
* Klusterprogramvaran definierar och kör failover -processen. Detta inkluderar:
* Upptäcka ett fel på den primära maskinen.
* Stäng graciöst av tjänsten på den misslyckade maskinen (om möjligt).
* Starta tjänsten på den sekundära maskinen.
* Växla VIP till den sekundära maskinen.
6. Nätverkskonfiguration:
* Båda maskinerna måste ha tillförlitlig nätverksanslutning. En redundant nätverksinställning (t.ex. flera nätverksgränssnitt, bundna gränssnitt) ökar systemets robusthet.
7. Konsekvent konfiguration:
* Båda maskinerna bör ha en identisk konfiguration för tjänsten, inklusive programvaruversioner, konfigurationsfiler och eventuella nödvändiga beroenden. Konfigurationshanteringsverktyg (t.ex. Ansible, Puppet, Chef) kan hjälpa till att upprätthålla konsistens.
8. Applikationsmedvetenhet:
* Själva applikationen bör helst vara medveten om klustermiljön och kunna hantera failover graciöst. Detta involverar ofta funktioner som sessionens uthållighet eller distribuerade låsmekanismer.
I huvudsak förlitar sig mycket tillgänglig kluster på redundans på flera nivåer - data, nätverk och själva tjänsten - som hanteras av intelligent programvara som säkerställer sömlös failover och minimal driftstopp.