Balancujeme provoz mezi servery
Administrace Exchange serveru - 39. část
Vytvoření hardware load balanceru pomocí linuxového stroje    

Na tento článek jsem se těšil. Pokusíme se jednoduše a zdarma (když nepočítám licence Exchange serveru) vytvořit něco, co se používá v enterprise prostředí. Abych to mohl udělat, tak jsem nainstaloval druhý Exchange server. Exchange 2010 podporuje tři druhy load balancingu - DNS round robin (máte dva servery, uděláte CAS array, do DNS zapíšete A záznam na IP adresy obou serverů.), Windows load balancing - ten můžete použít jen v případě, že nepoužíváte failover cluster, tedy DAG. A já jsem DAG schválně vytvořil, abych mohl ukázat, jak ve virtuálním prostředí udělat HLB - hardware load balancer. Já jsem se v praxi potkal s F5 load balancerem. Pokud se vám někde podaří dohledat ceny, tak pochopíte, že to není úplně vhodné zařízení do domácího labu, pokud se nejmenujete Babiš nebo Kelner. Populární jsou load balancery od Kemp technologies. Ale ani do toho se mi nechce dávat peníze. Použijeme linuxový systém, v tomto případě CentOS 6.4. Pokud vrtíte hlavou, že to není HLB, když je to normální OS, tak pro nás to HLB bude. Každý HLB je vlastně železo a SW. Podstatné je, že ten balancer je mimo Exchange prostředí.

Možná by bylo vhodné říct, co to ten load balancer je. Jméno mluví samo za sebe, ale stejně se to pokusím definovat. Je to zařízení, přes které jdou spojení k Exchange serverům a toto zařízení rozděluje zátěž na dva nebo více serverů. Správný HLB by měl být "service aware", tedy měl by vědět, jestli je služba dostupná a rozdělovat zátěž pouze na ty servery, kde ta služba běží a odpovídá. Hlavní problém Windows load balancingu byl, že byl pouze "server aware / host aware", tedy pokud server žil, ale služba nefungovala, tak se pořád snažil dávat spojení na server, kde neběžela služba. Load balancer může fungovat několik způsoby. Nejsem specialista, takže jen ty, se kterými jsem se setkal: Balancer funguje jako brána do subnetu, kde jsou Exchange servery a routuje. Balancer používá NAT a je ve stejném subnetu jako Exchange servery. Balancer používá DSR - mění pouze MAC adresu cíle. Každá z možností má své plusy a mínusy. Když jsem pracoval v Tietu, tak síťaři měli odladěné použití NATu a cpali to i do balancování Exchange serveru. A my jsme je za to z hloubi duše nesnášeli a vyhrožovali jsme jim fyzickým násilím. Jen si to představte, že máte Exchange organizaci, kde je 27 000 mailboxů. Potřebujete řešit problém jednoho uživatele s receive connectorem, jenomže konfigurace load balanceru zajistí, že všechna spojení jsou díky NATu z jedné zdrojové IP adresy. To by člověk fakt zabíjel. Naproti tomu zprovoznění DSR bude vyžadovat dodatečnou konfiguraci sítě Exchange serverů.

Takže jdeme na to. Co všechno budeme balancovat? Začneme tím nejjednodušším, což je web. Tedy HTTPS - TCP 443. Tím bychom měli zajistit balancování OWA, Active Sync a Outlook anywhere. Ale tam se nezastavíme, pustíme se i do balancování RPC, takže MAPI. A zakončíme to u SMTP. Zarazili jste se doufám u RPC a přemýšlíte, jak to chci asi tak balancovat. Pokud ne, tak byste měli. RPC funguje tak, že klient se připojí na portu TCP 135 a Exchange server mu oznámí vysoký port, na kterém se budou bavit. A ten port je z docela velkého rozsahu. Takže buď bych mohl nastavit celý ten rozsah jako balancovaný a nebo nastavíme na Exchange server tzv. static ports. Tedy vybereme dva porty, které se budou používat. Jeden pro Address Book a druhý pro RPC client access service. Já si nastavím porty 60001 a 60002.

Takže nastavíme static port pro RPC Client Access Service. Já tam nastavím 60001. Můžete tam nastavit něco jiného, ale musí to být z rozsahu: 59531 - 60554 a měli byste to mít stejně na všech serverech ve všech AD SITES. Port se mění v registrech. Takže se proklikáme na:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MSExchangeRPC
V něm vytvoříme nový klíč ParametersSystem
A v něm REG_DWORD s názvem TCP/IP Port.
Hodnotu nastavím decimálně na 60001.

MSExchangeRPC

Teď se pustíme na Address Book Service. Tam je od SP1 změna. Dřív se to měnilo v konfiguračním souboru, teď už je to taky v registrech. Takže se proklikáme na:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MSExchangeAB
Vytvoříme nový klíč Parameters
V něm textovou položku(REG_SZ) s názvem RpcTcpPort
A nastavíme hodnotu na 60002.

MSExchangeAB

Celý ten postup je potřeba udělat na všech serverech, kde máte CAS roli. A aby to všechno fungovalo, tak je potřeba restartovat příslušné služby, to jest Microsoft Exchange Address Book a Microsoft Exchange RPC Client Access. Jinak statické porty jdou nastavit i pro veřejné složky (Public Folders), ale tam nemáme co balancovat, takže to neřešíme.

Na Exchange serverech zůstaneme. Připravíme si síť tak, aby nám všechno fungovalo. Aby DSR fungovalo, tak budeme používat funkci weakhost. Co to je? V běžném provozu na Windows serverech fungují síťové karty v řežimu strong host jak pro příjem tak pro odesílání dat. To znamená, že pro příjem karta přijme pouze data, která mají jako cíl IP adresu přiřazenou této kartě. Pro odeslání zase bude použita zdrojová adresa, která je přiřazena této kartě. V režimu weakhost může karta přijmout i data, která jsou určena pro IP adresu jiné síťové karty a odeslat data se zdrojovou adresou jiné karty. Teď to možná nedává smysl, ale až budeme mít kompletní nastavení, tak to do sebe zapadne.

Budeme potřebovat na naše Exchange servery doinstalovat loopback adapter. Otevřeme Device Manager. Celý následující postup je stejný pro oba servery, takže klidně můžete jet paralelně, ať na něco na druhém serveru nezapomenete.

DevMgr

Klikneme na Action -> Add Legacy Hardware.
DevMgr

Zaškrtneme, že chceme vybrat zařízení ze seznamu.
DevMgr

Potřebujeme síťovou kartu.
DevMgr

Konkrétně Microsoft Loopback Adapter. Takže ho vybereme a dokončíme instalaci. Po instalaci bude potřeba nastavení. Takže půjdeme do nastavení síťových karet (ncpa.cpl). A adaptér si přejmenujeme. Já jej mám jako loopback.
DevMgr

Podíváme se na vlastnosti adaptéru.
DevMgr

Zrušíme zaškrtnutí u všech políček, kromě TCP/IPv4. Pak se podíváme detailně na nastavení TCP/IP
DevMgr

Nastavíme IP adresu a masku sítě ručně. A nastavíme jak IP adresu tak i masku stejnou na obou serverech. A stejnou adresu pak později budeme potřebovat pro konfiguraci load balanceru. Pokud se to někde bude lišit, tak to nebude fungovat. Default gateway a DNS servery musí zůstat prázdné. Pokud máme tak klikneme na Advanced.
DevMgr

Je potřeba vypnout Automatic metric. A do pole Interface metric napíšeme 254. Pak půjdeme na záložku DNS.
DevMgr

Vypneme registrování jména do DNS. To je tady všechno, vrátíme se do obrazovky se síťovými kartami.
DevMgr

Stiskněte ALT a zobrazí se menu. Vybereme Advanced -> Advanced settings.
DevMgr

Musíme mít správně pořadí. Podstatné je to vlastně jen v případě, že používáte DAG. Tam musí být na obou strojích síťovky ve stejném pořadí a ideálně v tom, v jakém to mám já. Pokud máte, můžeme to nastavení pozavírat. Poslední krok, aby to fungovalo, je nastavení weakhost. Tam je důležité vědět, jak máte pojmenované síťové adaptéry. V mém případě je to loopback a production. Replikační sítě se to netýká. Spustíme tyto příkazy:

netsh interface ipv4 set interface "production" weakhostreceive=enabled
netsh interface ipv4 set interface "loopback" weakhostreceive=enabled
netsh interface ipv4 set interface "loopback" weakhostsend=enabled

A tím máme na Exchange serverech prozatím hotovo.

Můžeme se pustit do instalace load balanceru. Nejdřív budeme potřebovat instalační média. Ty můžete najít tady: http://ftp.fi.muni.cz/pub/linux/centos/6.4/isos/x86_64/

Budeme potřebovat DVD ISO 1 a 2. Pustíme stahování a mezi tím si připravíme virtuál. Budeme potřebovat 1GB RAM, ale postačí i 512MB. 20GB IDE HDD. Žádné SCSI a žádnou síťovou kartu. Ano, opravdu potřebujeme virtuál, který nebude mít žádnou síťovou kartu. Má to svůj smysl, který si řekneme později. Budeme potřebovat DVD mechaniku, do které připojíme první DVD ISO. Zapneme stroj a on začne bootovat z DVD. Bohužel jsem si neudělal kopii obrazovky prvního menu. Ale tam budeme chtít hned tu první volbu. Systém začne bootovat z DVD a zobrazí nám první instalační obrazovku. Je možné, že některé nevýznamné obrazovky jsem nesnímal. Pokud něco nebudu mít v postupu, tak jsem tam nejspíš jen kliknul na Next.
DevMgr

Je to textová obrazovka, takže tam nebude fungovat myš. (Samozřejmě mluvím o případě, že to máte jako virtuální server v Hyper-V) Tabelátorem se posunujete po možnostech a Enter je potvrdí. Pokud chcete, můžete si ověřit, že máte v pořádku instalační média. Pokud nechcete, tak zmáčkneme Skip. Spustí se instalátor.

DevMgr

Tady už myš funguje, pokud kliknete do obrazovky, tak se chytne. Ale nic zajímavého tu není, takže Next.

DevMgr

Instalátor necháme v angličtině.

DevMgr

Klávesnici taky.

DevMgr

Je to běžný systém, máme jen IDE disk, žádný fibre channel ani iSCSI, takže Basic Storage Device.

DevMgr

Instalátor nerozpoznal partition na disku (protože tam žádné nejsou), takže se ptá, co dál. Všimněte si, že máme IDE disk a on mluví o SCSI disku. To je v pořádku. Klikněte na Yes, discard any data.

DevMgr

Jak se má stroj jmenovat.

DevMgr

Kde se nachází, resp. v jaké je časové zóně.

DevMgr

Heslo pro uživatele root.

DevMgr

Jaký typ instalace chceme? Všechno místo na disku pro Linux.

DevMgr

Jestli chceme rozdělení disku zapsat. Jasně, že chceme.

DevMgr

Budeme chtít minimální instalaci a možnost upravit, co se tam nainstaluje ihned.

DevMgr

Pro nás bude kritické, abychom měli Development tools.

DevMgr

Můžeme rovnou nainstalovat i load balancer, ale to není tak důležité. Zbytek je nepodstatný, můžeme pustit instalaci. Ta bude chvíli trvat.

DevMgr

A pokud všechno dobře dopadlo, tak můžeme restartnout systém. Mezi tím můžeme na Hyper-V stroji stáhnout Linux Integration Services CD. Najdeme ho tady:
http://www.microsoft.com/en-us/download/details.aspx?id=34603
Po stažení použijeme ISO v mechanice linuxu. Media -> DVD drive -> Insert disk.

DevMgr

Najdeme ISO soubor LinuxICv34.iso. Pak se přihlásíme do systému jako root a spustíme následující příkazy:

mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cp -rp /mnt/cdrom/* /opt/linux_ic/
cd /opt/linux_ic
ls
cd RHEL63
ls
./install.sh

Příkazy ls jsou pouze pro vypsání obsahu adresáře. Žádný jiný význam nemají. Ale ať aspoň víte, co tam je. Po spuštění install.sh byste měli vidět tohle:
DevMgr

Píšou, že máme rebootnout system, tak to uděláme.

shutdown -r now

Po startu se opět přihlásíme jako root. Budeme potřebovat vypnout SELINUX. Konfigurace je uložena v souboru /etc/selinux/config, tak spustíme tyto příkazy:
cd /etc/selinux
vi config
Stiskneme písmeno i, což nám vi přepne do insert módu. Najdeme řádek SELINUX= a změníme hodnotu za rovnítkem na disabled. Pak stiskneme ESC a napíšeme:
:wq!
Tím se soubor uloží. Nyní můžeme přidat síťovou kartu. Takže nejdřív linux vypneme příkazem:
poweroff

Teď půjdeme do nastavení HW pro server v Hyper-V konzoli a přidáme síťovou kartu. Připojíme ji do sítě, ve které máme ostatní Exchange servery.
DevMgr

Teď ještě musíme do advanced features.
DevMgr

A musíme zaškrtnout Enable Mac address spoofing. A můžeme server zase pustit.

Tady je potřeba říct, že nejsem expert na linux. Ani bych se netituloval jako zkušený administrátor. Moje znalosti jsou dost omezené a pocházejí z doby, kdy ještě neexistovala Fedora, ale existoval normální Redhat linux ve verzi 6.x. Takže je dost možné, že to, co budu předvádět jde udělat jednodušeji. Ale já to jinak neumím. Není to můj obor. Po startu máme sice v systému síťovou kartu, ale linux si nevytvořil scripty. Tak je budeme muset udělat ručně:

cd /etc/sysconfig/network-scripts
cp ./ifcfg-lo ./ifcfg-eth0
vi ./ifcfg-eth0

Potřebujeme upravit obsah souboru, aby vypadal nějak takto:
DevMgr

Pozor, IP adresa, kterou tady zadáváme není stejná jako pro balancing. Je to adresa, přes kterou bude probíhat správa systému. HWADDR můžeme získat třeba napsáním příkazu:
ifconfig -a
Opět stiskneme ESC a pak napíšeme:
:wq!
Upřímně si nejsem jistý, jestli je potřeba ještě úprava souboru /etc/resolv.conf, ale určitě by to nemělo uškodit. Obsah by měl vypadat nějak takto (samozřejmě, že budete mít jinou doménu a nameserver):
DevMgr

Teď zkusíme změny načíst příkazem:
ifup eth0
Může to mrčet něco o chybějící konfiguraci IPv6. Můžeme zkusit ještě restart síťových služeb a ujistit se, že budou startovat při startu systému.
service network restart
chkconfig network on

A teď můžeme zkusit jestli síť funguje třeba tím, že si pingneme na nějaký stroj. Já zkouším www.seznam.cz. Pokud to funguje, tak mi jede DNS, síť i routování na internet.

Máme zprovozněnou síť, tak první věc, kterou uděláme, bude aktualizace systému. Něco jako Windows update pro linux. Spustíme příkaz:

yum update

Při prvním spuštění bude chtít nainstalovat certifikát. Zobrazí seznam balíčků, které potřebují aktualizaci a zeptá se, jestli fakt chceme update. Chceme. Yum slouží i pro instalaci SW. Pokud třeba budeme chtít nainstalovat Midnight commander (obdoba total commanderu), tak spustíme příkaz:
yum install mc

MC vám umožní editovat soubory podobným stylem jako ve Windows a nemusíte znát klávesové zkratky jako :wq!. Hned to můžeme použít na soubor /etc/sysctl.conf.
DevMgr

Potřebujeme nastavit na řádku net.ipv4.ip_forward hodnotu 1. Jako na obrázku. Uložíme (F2) a zavřeme (ESC). A můžeme pokračovat dál.

Nejdřív si nainstalujeme sw pro load balancer. Pokud jste to udělali už při instalaci linuxu jako já, tak se nic neděje. Prostě to oznámí, že nemá co dělat, protože je hotovo:

yum install ipvsadm
yum install piranha

Následně uděláme krok, který bych za běžných podmínek rozhodně nedoporučoval. Vypneme firewall. Vzhledem k tomu, že se jedná o laboratorní podmínky a navíc mám ten stroj schovaný za síťovým firewallem, tak bych se toho moc nebál. Takže napíšeme tyto příkazy:
chkconfig iptables off
service iptables stop

Kromě firewallu vypneme ještě smtp server, protože budeme chtít používat jen Exchange. A naopak zapneme web a služby pro balancer. Takže spustíme:
chkconfig postfix off
service postfix stop
chkconfig pulse on
chkconfig piranha-gui on
chkconfig httpd on

Nastavíme heslo pro přístup do konfigurace load balanceru. Spustíme příkaz:
piranha-passwd

Nastavíme heslo, potvrdíme a můžeme nastartovat služby:
service httpd start
service pulse start
service piranha-gui start

Tím máme základ hotový a můžeme pokračovat pomocí webového gui.

Otevřeme na nějakém stroji webový prohlížeč a připojíme se k našemu serveru na portu 3636. V mém případě je to IP 192.168.2.61.
Piranha

Klikneme na login a použijeme uživatelské jméno piranha a heslo, které jsme před chvílí zadávali.
Piranha

Po přihlášení klikneme na GLOBAL SETTINGS.
Piranha

Klikneme na Direct Routing a vyplníme IP adresu serveru. Jedná se o tu adresu, na kterou se připojujeme. Pak můžeme kliknout na ACCEPT. Následně otevřeme Virtual Servers. A tam na tlačítko ADD.
Piranha

Teď klikneme na EDIT.
Piranha

Nejdřív budeme balancovat HTTPS provoz. Vyplníme políčka podle obrázku. Jenom pozor na Virtual IP Address. To je ta adresa, kterou jste dali Loopback adaptérům na obou Exchange serverech. Musí být stejná, jinak to nebude fungovat. Můžeme kliknout na Accept. A potom na REAL SERVER. Tam klikneme na ADD a to hned dvakrát, protože máme dva servery.
Piranha

Klikneme na EDIT a vyplníme údaje o prvním Exchange serveru.
Piranha

Nějak pojmenujeme server a vyplníme IP adresu. Klikneme na ACCEPT. Pak znovu klikneme na REAL SERVER.
Piranha

První server už je OK, tak zaškrtneme druhý řádek a klikneme na EDIT.
Piranha

Vyplníme data o druhém serveru. Pak klikneme na ACCEPT. A pak na MONITORING SCRIPTS.
Piranha

Klikneme na tlačítko BLANK SEND a BLANK EXPECT. Prozatím to nebudeme potřebovat. Potom na tlačítko ACCEPT. Pak půjdeme opět na REAL SERVERS. Postupně vybereme oba servery a kliknemen a (DE)ACTIVATE.
Piranha

Pokud bylo všechno v pořádku, tak je status serverů up. Půjdeme na virtuální server a uděláme totéž. (Klikněte na odkaz, který je vpravo nahoře)
Piranha

Restartneme službu pulse, aby si načetla novou konfiguraci.

service pulse restart

Pokud to máme v pořádku, tak můžeme vyzkoušet přístup k OWA. Do prohlížeče napíšeme adresu: http://192.168.2.62/owa/ a měli bychom se připojit. Můžeme očekávat, že prohlížeč bude ječet, že certifikát není platný. Pokud všechno funguje, tak stejným postupem doděláme nastavení pro TCP porty 135, 60001, 60002, 25. Pokud máme, tak virtual servers budou vypadat asi takto:
Piranha

Pokud kliknete na editaci jakéhokoliv řádku, tak real server budou vždy stejné, musí být UP a v monitoring scripts musí být prázdno. Pokud máte, tak opět restartujeme službu pulse.
service pulse restart

Pokud kliknete na Control/Monitoring, tak uvidíte, že běží služba a že jsou vytvořené routy.
Piranha

Linuxovou část prozatím máme a vrátíme se do Windows. Nejdřív budeme muset změnit DNS záznam pro CAS array. Můj cas array se jmenuje outlook.tnx.cz, takže změním A záznam, aby směřoval na adresu load balanceru, tedy na 192.168.2.62. Potom musím změnit nastavení port forwardingu na firewallu. Prozatím tam byl nastavený destination NAT na IP adresu jednoho z Exchange serverů. Teď tam bude zase adresa balanceru, takže 192.168.2.62. Tím pádem by měl fungovat balancing z internetu. Měl by vám jet Active Sync, OWA, Outlook anywhere. A poslední krok, který udělám, je, že na firewallu nastavím, že poštu pro mé domény má pouštět na IP adresu balanceru. A můžete si zkusit poslat poštu z nějakého internetového serveru. Zjistíte, že vám nedojde. :-) Teda, spíš záleží na konfiguraci vašeho receive connectoru. Ale já ho mám nastavený na jednu IP adresu. Potřebujeme přidat další. A to takhle:
Piranha

V EMC půjdeme do Server configuration, Hub transport, otevřeme connector pro příjem z internetu. Najdeme záložku Network. A přidáme adresu, na které chceme přijímat poštu. Opravdu to patří do horního okna. Asi jste zvyklí, že připojování se povoluje ve spodním okně. Ale tam určujete z jaké adresy přijde požadavek. My potřebujeme nastavit, na jakou adresu přijde požadavek. No a stejné nastavení udělejte pro druhý server. A je to.

Příště si ukážeme, jak nastavit kontrolu, jestli je služba naživu, aby balancer neposílal zátěž na mrtvý server. A zkusíme si udělat druhý balancer a z nich cluster, abychom neměli single point of failure.


Další články o load balanceru:

Poslední aktualizace - Středa, 12. Dubna 2013 18:50
 
 
 
Page 1 of 1
© TNX alias Jan Kovář. Původní design stránky byl určen pro CMS Joomla! a vytvořen společností Siteground web hosting