rancher

Rancher server & Rancher agent ve vysoké dostupnosti v lokálním prostředí

Touch4IT odpovídá za vývoj, provozování a správu desítek mobilních a webových aplikací. Klientům chceme dát pocit, že ať se stane cokoliv, jejich aplikace budou stále běžet. Provozování takového množství projektů není snadný úkol. Webové aplikace a aplikační backendy používají různé technologie a potřebují různé knihovny i verze těchto knihoven pro bezproblémový chod.

 

Přesně proto všechny tyto aplikace a backendy běží přes Docker. Při tolika aplikacích běžících přes Docker je třeba spouštět nové verze a nové aplikace bez výpadků. Také potřebujeme oddělené prostředí pro vývoj, testování a produkci. Tuto práci usnadňují Docker Orchestrator. K dispozici je větší množství Orchestrator, ale v tomto článku je nebudeme porovnávat, existuje mnoho super článků které rozebírají právě srovnání Docker Orchestrator.

 

Rozhodli jsme se použít Rancher, Docker Orchestrator, který běží na Kubernetes, pro následující důvody:

 

  • jednoduché, ale velmi funkční uživatelské rozhraní
  • fungující dokumentace
  • dostatečná stabilita pro využití v produkčním prostředí
  • snadnost učení a používání
  • podpora ovládání přes příkazový řádek
  • možnost automatizovaného spouštění kontejnerů (Gitlab CI)
  • návrat k předchodzí verzi aplikace při selhání spouštění nové verze
  • funguje na fyzických serverech
  • možnost škálování na více fyzických/virtuálních serverů
  • funguje ve vysoké dostupnosti (High Availability)

 

V tomto článku vám dáváme plně fungující Rancher prostředí běžící ve vysoké dostupnosti. Podívejme se na konfiguraci prostředí na obrázku níže.

 

Rancher HA virtual machine diagram docker

 

Máme 2 virtuální servery kde běží rancher-server, racher-agent a aplikace. Rancher server je Dockerový kontejner s uživatelským rozhraním, API, Orchestrator a spravuje všechny administrativní úkoly. Rancher agent je Dockerový kontejner, který registruje virtuální nebo fyzický server kde běží do prostředí Rancher serveru.

 

Pro potřeby tohoto návodu budou běžet 2 instance Rancher serveru ve vysoké dostupnosti tak, že budeme mít obě instance na samostatných virtuálních serverech, 2 agenty, abychom měli 2 hosty a aplikace mohly běžet redundantně pro případ výpadku jednoho z hostingů. Ve skutečném světě je třeba umístit směrovač zatížení (load balancer) před tyto virtuální servery, aby směřovaly http provoz na porty 80 a 443 na oba hosty, také je třeba kontrolovat zdraví (health check) a přestat směřovat provoz na host, pokud není v provozu.

 

Na virtuálním servery mysql-nginx máme Nginx, který slouží jako směrovač zatížení pro Rancher server, a jeho uživatelské rozhraní (zelené šipky). Také je tam MySQL databáze kde Rancher server ukládá svou konfiguraci a také konfiguraci aplikací (červené šipky). Opět, ve skutečném světě potřebujete nastavit MySQL Cluster nebo jinou formu MySQL replikace a také více směrovačů zatížení, abyste dosáhli vysokou dostupnost. Rancher agent komunikuje s Rancher serverem přes Nginx proxy (fialové šipky).

 

Na lokální spuštění prostředí potřebujete nainstalovat Git, Vagrant, Virtualbox a Rancher compose. Nechceme, abyste trávili čas nastavováním virtuálních serverů, proto jsme je již nastavili pomocí Ansible. Pozrite si náš GitHub epozitář pro více informací o tom jak jsme to dosáhli.

 

Pojďme naklonovat GitHub repozitář, abychom získali zdrojový kód našeho Rancher prostředí:

 

github

 

 

 

Přidejte záznam do souboru /etc /hosts:

 

testing domain name

 

 

 

Spustime všechny 3 virtuální servery, tento krok může trvat do 10 minut.

 

git clone

 

 

 

 

 

 

Po skončení těchto skriptů bude Rancher server potřebovat pár minut na přípravu MySQL databáze a na to, aby se oba Rancher servery vzájemně dohodli na tom, kdo bude master. Po skončení můžete navštívit uživatelské rozhraní Rancher přes prohlížeč na http://rancher.vm.localhost jak je možné vidět na obrázcích níže:

 

Rancher UI, Dashboard, first time opened

 

Rancher UI, Dashboard, first time opened

 

Nyní potřebujeme vytvořit a spustit Rancher agentů na obou virtuálních serverech a napojit je do prostředí Rancher server s názvem "Default". Klikněte na tlačítko "Add a host", nastavte "Host Registration URL" na http://192.168.70.10  - to je IP adresa virtuálního serveru kde běží Nginx proxy. Kliknutím "Save".

 

Rancher UI, setting Host Registration URL

 

Zkopírujte "docker run …" příkaz z bodu 5 znázorněného na obrázku níže:

 

Poznámka: hash na konci příkazu pro spuštění Rancher agenta "docker run" unikátní pro každou instalaci Rancher serveru, proto jsme tento krok nemohli udělat automaticky za vás.

 

Rancher UI, Adding Host

 

Zkopírovaný příkaz "docker run ..." spusťte na obou virtuálních serverech kde běží Rancher server: rancher1 a rancher2

 

rancher1 rancher2

 

 

 

 

 

Jděte na http://rancher.vm.localhost/env/1a5/infra/hosts. Bude to trvat do 10 minut dokud oba hosty budou dostupné a aplikace na nich běžící zelené. Mělo by to vypadat podobně jako na obrázku níže:

 

Rancher UI, Hosts overview

 

Potřebujeme vytvořit "environment API key" a nakonfigurovat Rancher Compose.

Jděte na http://rancher.vm.localhost/env/1a5/api/keys a sledujte instrukce na obrázcích významně nižší pro vytvoření klíče:

 

Poznámka: nezapomeňte si uložit "API key" a "secret", budete je potřebovat v dalším kroku.

 

Rancher UI, Adding Environment API Key

 

Rancher UI, Adding Environment API Key

 

Rancher UI, Adding Environment API Key

 

Rancher UI, Adding Environment API Key

 

Nastavme proměnné prostředí pro Rancher Compose:

Nahraďte <API_KEY> a <API_SECRET> uloženými hodnotami.

 

api key rancher

 

 

 

Spustime testovací Nginx aplikaci:

 

nginx rancher

 

 

 

 

 

Když půjdete na http://rancher.vm.localhost/env/1a5/apps/stacks, měli byste vidět vaši testovací aplikaci:

 

Rancher UI, User Stacks overview

 

Klikněte na název služby "test-nginx" pro úpravy. Zvedněte škálování služby kliknutím na tlačítko plus na levé straně obrazovky. To nám spustí další Nginx kontejner. Takže bude jeden na každém serveru. Budete vidět:

 

Rancher UI, test-nginx Stack Containers overview

 

Můžete naštívit http://192.168.70.11 a http://192.168.70.12, což zobrazí základní uvítací stránku pro Nginx jak můžete vidět na obrázku níže:

 

Testing deployment, Nginx welcome page

 

Gratulujeme! Máte fungující prostředí s Rancher serverem a Rancher agentem ve vysoké dostupnosti. Testujte tak mnoho, jak potřebujete. Pokud se při testování něco pokazí, použijte příkaz 'vagrant destroy' a celý proces opakujte znovu.