<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>guzik &#187; load balance</title>
	<atom:link href="http://guzik.net.pl/blog/tag/load-balance/feed/" rel="self" type="application/rss+xml" />
	<link>http://guzik.net.pl/blog</link>
	<description>Mój blog</description>
	<lastBuildDate>Fri, 10 Feb 2012 23:44:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>FortiGate i równoważenie obciążenia</title>
		<link>http://guzik.net.pl/blog/2009/05/fortigate-i-rownowazenie-obciazenia/</link>
		<comments>http://guzik.net.pl/blog/2009/05/fortigate-i-rownowazenie-obciazenia/#comments</comments>
		<pubDate>Thu, 28 May 2009 10:45:27 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[FortiGate]]></category>
		<category><![CDATA[Fortigate]]></category>
		<category><![CDATA[Fortinet]]></category>
		<category><![CDATA[load balance]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=802</guid>
		<description><![CDATA[Równoważenie obciążenia (LB + HA) w FortiGate sprawdzone! Działa. Na razie w środowisku mocno testowym, produkcyjnie na razie nie mam potrzeby używania. Zanim opiszę jak używać, odnośniki do alternatywnych rozwiązań: relayd z OpenBSD (i jakiś port dla FreeBSD), LVS, Heartbeat, mod_jk &#8211; LB dla Apache Tomcat (vide mój projekt pracowniczy w P. I. Kamsoft AD 2005). Produkcyjnie [...]]]></description>
			<content:encoded><![CDATA[<p>Równoważenie obciążenia (<a title="http://pl.wikipedia.org/wiki/R%C3%B3wnowa%C5%BCenie_obci%C4%85%C5%BCenia" href="http://pl.wikipedia.org/wiki/R%C3%B3wnowa%C5%BCenie_obci%C4%85%C5%BCenia">LB</a> + <a title="http://en.wikipedia.org/wiki/High-availability" href="http://en.wikipedia.org/wiki/High-availability">HA</a>) w FortiGate sprawdzone! Działa. Na razie w środowisku mocno testowym, produkcyjnie na razie nie mam potrzeby używania. Zanim opiszę jak używać, odnośniki do alternatywnych rozwiązań:</p>
<ul>
<li><a title="http://guzik.net.pl/blog/tag/relayd/" href="http://guzik.net.pl/blog/tag/relayd/">relayd</a> <a title="http://www.openbsd.org/cgi-bin/man.cgi?query=relayd&amp;sektion=8&amp;format=html" href="http://www.openbsd.org/cgi-bin/man.cgi?query=relayd&amp;sektion=8&amp;format=html">z OpenBSD</a> (i jakiś <a title="http://www.freshports.org/net/relayd/" href="http://www.freshports.org/net/relayd/">port dla FreeBSD</a>),</li>
<li><a title="http://www.linuxvirtualserver.org/" href="http://www.linuxvirtualserver.org/">LVS</a>,</li>
<li><a title="http://www.linux-ha.org/" href="http://www.linux-ha.org/">Heartbeat</a>,</li>
<li><a title="http://tomcat.apache.org/connectors-doc/generic_howto/loadbalancers.html" href="http://tomcat.apache.org/connectors-doc/generic_howto/loadbalancers.html">mod_jk</a> &#8211; LB dla <a title="http://tomcat.apache.org/" href="http://tomcat.apache.org/">Apache Tomcat</a> (vide mój projekt pracowniczy w <a title="http://kamsoft.pl/" href="http://kamsoft.pl/">P. I. Kamsoft</a> AD 2005).</li>
</ul>
<p>Produkcyjnie wykorzystywałem relayd, LVS i mod_jk. Heartbeat testowałem bardzo krótko.<br />
Konfiguracja w FortiGate jest dość prosta (pomijam politykę zapory):</p>
<ol>
<li>Konfigurujemy <em>Virtual Server</em><br />
W CLI konfigurujemy podobnie jak <em>Virtual IP</em>. Jako typ VIP ustawiamy <code>server-load-balance</code>. Rodzaj LB (<code>server-type</code>) możemy ustawić na: <code>HTTP</code>, <code>TCP</code> lub <code>UDP</code> oraz <code>IP</code>. Metod rozkładu obciążenia mamy do wyboru sześć: <code>Static</code>, <code>Round Robin</code>, <code>Weighted</code>, <code>First Alive</code>, <code>Least <a title="http://en.wikipedia.org/wiki/Round-trip_delay_time" href="http://en.wikipedia.org/wiki/Round-trip_delay_time">RTT</a></code> i <code>Least Session</code>. Do konfiguracji sprawdzania obecności (<code>Health Check</code>) trzeba wrócić później.</li>
<li>Definiujemy rzeczywiste serwery<br />
Oprócz nazwy i adresu IP podajemy port usługi, a także wagę i maksymalną liczbę połączeń. Serwery rzeczywiste przypisujemy serwera wirtualnego.</li>
<li>Definiujemy sposób sprawdzania obecności (przypisać go należy do wirtualnego serwera)<br />
Określamy typ (<code>HTTP</code>, <code>TCP</code> lub <code>PING</code>) i interwał oraz liczbę powtórzeń. W przypadku typu <code>TCP</code> podajemy port usługi, dla <code>HTTP</code> &#8211; URL i cią jaki ma być dopasowany do zawartości.</li>
<li>&#8230;no i możemy cieszyć się gotowym rozwiązaniem.</li>
</ol>
<p><a href="http://guzik.net.pl/blog/wp-content/uploads/2009/05/lb1.jpg"><img class="aligncenter size-full wp-image-809" title="lb1" src="http://guzik.net.pl/blog/wp-content/uploads/2009/05/lb1.jpg" alt="lb1" width="1135" height="106" /></a></p>
<p>Przykładowa konfiguracja może wyglądać tak:</p>
<blockquote><p><code>config firewall ldb-monitor<br />
edit "DEV-HCH"<br />
set type tcp<br />
set port 80<br />
next<br />
end<br />
config firewall vip<br />
edit "DEV"<br />
set type server-load-balance<br />
set extip 192.168.1.230<br />
set extintf "wan1"<br />
set server-type tcp<br />
set monitor "DEV-HCH"<br />
set ldb-method first-alive<br />
set extport 80<br />
config realservers<br />
edit 1<br />
set ip 10.1.0.1<br />
set port 80<br />
next<br />
edit 2<br />
set ip 10.1.0.2<br />
set port 80<br />
next<br />
edit 3<br />
set ip 10.1.0.3<br />
set port 80<br />
next<br />
end<br />
next<br />
end</code></p></blockquote>
<p>Jedyny minus jaki dotychczas dostrzegłem, to brak jakiejkolwiek informacji w logach (pamięć, FortiAnalyzer) o tym, że dany serwer nie działa lub zmienił swój stan.</p>
<p>Poniżej wykres z JMeter &#8211; duży skok na początku to wyłączenie pierwszego serwera; metoda rozkładania obciążenia: <code>First Alive</code> i 10 sekund pomiędzy kolejnymi testami.<br />
<a href="http://guzik.net.pl/blog/wp-content/uploads/2009/05/spline-visualizer.png"><img class="aligncenter size-full wp-image-812" title="spline-visualizer" src="http://guzik.net.pl/blog/wp-content/uploads/2009/05/spline-visualizer.png" alt="spline-visualizer" width="785" height="450" /></a><br />
Innych testów nie chciało mi się robić. Środowisko testowe jeszcze trochę będzie stało (planuję m. in. testy <a title="http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster.html" href="http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster.html">MySQL w klastrze</a>), więc jak ktoś chce wyniki testów LB przy konkretnych ustawieniach, proszę o kontakt.</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2009/05/fortigate-i-rownowazenie-obciazenia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

