{"id":816,"date":"2014-08-27T15:56:29","date_gmt":"2014-08-27T13:56:29","guid":{"rendered":"http:\/\/www.netexpertise.eu\/en\/?p=816"},"modified":"2021-08-20T08:19:30","modified_gmt":"2021-08-20T06:19:30","slug":"cheap-microsoft-exchange-cluster-with-lvs-load-balancer","status":"publish","type":"post","link":"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html","title":{"rendered":"LVS: a Free Load-Balancer for Microsoft Exchange"},"content":{"rendered":"\n<p>Microsoft <a href=\"\/en\/category\/mail\/exchange\">Exchange<\/a> traffic can be load-balanced with Microsoft NLB but it requires to set up 4 Exchange servers for the sake that NLB isn&#8217;t compatible with Exchange cluster. Most Microsoft guys do not recommend it.<br>Among <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/ff625247%28v=exchg.141%29.aspx\">NLB<\/a> downsides, Exchange services are monitored with a basic ping, meaning the service is considered to be active even if Exchange services have been turned off.<br>&nbsp;<br>Hardware-based Exchange load balancers are recommended in most setups but are pretty expensive. Since I am going to virtualize Exchange servers on Hyper-v, a software-based load-balancer make sense naturally.<br>This is what brings me down to Linux Virtual Server (LVS) for no extra cost with very little resources.<br>&nbsp;<br>Linux and Microsoft hardest defenders may not be happy with it but, Linux Redhat is fully supported on Hyper-V and has been optimized with a few <a href=\"https:\/\/access.redhat.com\/site\/documentation\/en-US\/Red_Hat_Enterprise_Linux\/6\/html\/Virtualization_Administration_Guide\/sect-windows-rhel-guests.html \">enhancements<\/a>.<br>&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Network<\/h3>\n\n\n\n<p>Each Exchange virtual machine will be hosted on a different physical server along with a Linux VM for redondancy. The active load-balancer (Master LB1) will distribute packets to the &#8220;real&#8221; servers through a private network. The private network needs to be connected to a physical port so VMs on the 2 machines can see each others.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"\/images\/ExchangeLoadBalancingSmall.png\" alt=\"Exchange Load Balancer Diagram\"\/><\/figure><\/div>\n\n\n\n<p>&nbsp;<br>Create the 2 networks and 4 VMs in Hyper-v giving 1 and 2 NICs to Exchange and LVS servers respectively. Assign IPs accordingly to your network topology.<br>&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Load Balancer Setup<\/h3>\n\n\n\n<p>First edit \/etc\/sysctl.conf to allow ip forwarding:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># Controls IP packet forwarding\nnet.ipv4.ip_forward = 1<\/code><\/pre>\n\n\n\n<p>Then reboot or run<br>sysctl -p \/etc\/sysctl.conf<br>&nbsp;<br>As a main direction, you can follow Redhat <a href=\"https:\/\/access.redhat.com\/site\/documentation\/en-US\/Red_Hat_Enterprise_Linux\/6\/pdf\/Load_Balancer_Administration\/Red_Hat_Enterprise_Linux-6-Load_Balancer_Administration-en-US.pdf\">LVS manual<\/a>.<br>Set a password running piranha-passed on the Linux server that is going to be the master and start pulse and piranha-gui services.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">\/etc\/init.d\/pulse start\n\/etc\/init.d\/piranha-gui start<\/code><\/pre>\n\n\n\n<p>You should be able to reach the conf page on port 3636 with a web browser ie http:\/\/IP:3636. Log in with piranha as username and the password you set above.<br>&nbsp;<br>Once logged on Piranha configuration webpage, fill in &#8220;Global Settings&#8221; and &#8220;Redundancy&#8221; pages. It is pretty straightforward: the virtual gateway for real servers will go on sub- interface eth1:1. I didn&#8217;t tick &#8220;Monitor link&#8221; nor &#8220;Use sync daemon&#8221; since it wouldn&#8217;t work on my setup.<br><br><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"\/images\/LVSGlobalSettings.png\" alt=\"LVS Load Balancer Primary Server\"\/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"\/images\/LVSRedondancy.png\" alt=\"LVS Load Balancer Backup Server\"\/><\/figure><\/div>\n\n\n\n<p>&nbsp;<br>This is where we get to the point. We could create a virtual server for each port to monitor. I decided not to but mark all packets, so we need to monitor one service only. No need to write different monitoring scripts. You can indeed do so if you&#8217;d like to.<br><br><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"\/images\/LVSExchangeVirtualServer.png\" alt=\"LVS Load Balancer Exchange access\"\/><\/figure><\/div>\n\n\n\n<p>&nbsp;<br><br>I monitor port 80 since Exchange listens on HTTP.<br>Set a number in the firewall mark field to group all ports to be redirected: I&#8217;ve set 80 but it could be anything else really, it&#8217;s only a tag. Just remember to set the same number in iptables below.<br>I chose to set the IP address on eth0:3: I&#8217;ll let you know why later on.<br>Add the 2 real servers IP and leave the default monitoring script in the last tab.<br>&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Iptables Rules<\/h3>\n\n\n\n<p>We&#8217;ll now set up iptables to mark packets with number 80. Iptables will filter (1st part below) and mark (2nd part) packets.<br>Here&#8217;s what I have in \/etc\/sysconfig\/iptables:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># Generated by iptables-save v1.4.7\n*filter\n:INPUT ACCEPT [0:0]\n:FORWARD ACCEPT [353:70931]\n:OUTPUT ACCEPT [908:61941]\n-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT\n-A INPUT -p icmp -j ACCEPT\n-A INPUT -i lo -j ACCEPT\n-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT\n-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT\n-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT\n-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT\n-A INPUT -p tcp -m state --state NEW -m tcp --dport 3636 -j ACCEPT\n-A INPUT -p tcp -m state --state NEW -m tcp --dport 2525 -j ACCEPT\n-A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT\n-A INPUT -p tcp -m state --state NEW -m tcp --dport 465 -j ACCEPT\n-A INPUT -p tcp -m state --state NEW -m tcp --dport 717 -j ACCEPT\n-A INPUT -d 192.168.1.36\/32 -j ACCEPT\n-A INPUT -d 192.168.1.37\/32 -j ACCEPT\n-A INPUT -j REJECT --reject-with icmp-host-prohibited\n-A FORWARD -i eth0 -o eth1:1 -m state --state RELATED,ESTABLISHED -j ACCEPT\n-A FORWARD -i eth1:1 -o eth0 -j ACCEPT\nCOMMIT\n# Generated by iptables-save v1.4.7\n*mangle\n:PREROUTING ACCEPT [87155:9160406]\n:INPUT ACCEPT [82925:8666308]\n:FORWARD ACCEPT [3859:469324]\n:OUTPUT ACCEPT [64873:3999893]\n:POSTROUTING ACCEPT [68732:4469217]\n-A PREROUTING -d 192.168.1.35\/32 -p tcp -m tcp --dport 80 -j MARK --set-xmark 0x50\/0xffffffff\n-A PREROUTING -d 192.168.1.35\/32 -p tcp -m tcp --dport 443 -j MARK --set-xmark 0x50\/0xffffffff\n-A PREROUTING -d 192.168.1.35\/32 -p tcp -m tcp --dport 25 -j MARK --set-xmark 0x50\/0xffffffff\n-A PREROUTING -d 192.168.1.35\/32 -p tcp -m tcp --dport 2525 -j MARK --set-xmark 0x50\/0xffffffff\n-A PREROUTING -d 192.168.1.35\/32 -p tcp -m tcp --dport 587 -j MARK --set-xmark 0x50\/0xffffffff\n-A PREROUTING -d 192.168.1.35\/32 -p tcp -m tcp --dport 465 -j MARK --set-xmark 0x50\/0xffffffff\n-A PREROUTING -d 192.168.1.35\/32 -p tcp -m tcp --dport 717 -j MARK --set-xmark 0x50\/0xffffffff\nCOMMIT<\/code><\/pre>\n\n\n\n<p>Note iptables converts mark numbers in hexa, ie 80 becomes 0x50.<br>The main configuration is over. Now remain the 2nd load balancer for Exchange, real servers remote access and NAT. Let&#8217;s check this out.<br>&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exchange Servers Management<\/h3>\n\n\n\n<p>Backend servers Exchange1&amp;2 can be managed from hyper-v but this is far from being handy, you want to connect straight to them.<br>In order to manage the 2 servers, I created 2 extra virtual servers on LVS that always redirect to the same IP, though only one real server.<br><br><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"\/images\/LVSManagementVirtualServer.png\" alt=\"LVS Load Balancer RDP access\"\/><\/figure><\/div>\n\n\n\n<p><br>I used to mark packets with number 1 &amp; 2, respectively for Exchange1 and Exchange2, and added the following lines to iptables.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">-A PREROUTING -d 192.168.15.36\/32 -j MARK --set-xmark 0x1\/0xffffffff\n-A PREROUTING -d 192.168.15.37\/32 -j MARK --set-xmark 0x2\/0xffffffff\n<\/code><\/pre>\n\n\n\n<p>&nbsp;<br>Restart pulse and iptables services and you should get the following interfaces:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">[root@lb1 ~]$ ifconfig\neth0      Link encap:Ethernet  HWaddr 00:15:5D:0F:29:0E\n          inet addr:192.168.1.33  Bcast:192.168.1.255  Mask:255.255.255.0\n          inet6 addr: fe80::215:5dff:fe0f:290e\/64 Scope:Link\n          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\n          RX packets:481004253 errors:0 dropped:73168 overruns:0 frame:0\n          TX packets:305264787 errors:0 dropped:0 overruns:0 carrier:0\n          collisions:0 txqueuelen:1000\n          RX bytes:380465051896 (354.3 GiB)  TX bytes:204324705710 (190.2 GiB)\n          Interrupt:9 Base address:0x6000\n\neth0:1    Link encap:Ethernet  HWaddr 00:15:5D:0F:29:0E\n          inet addr:192.168.1.36  Bcast:192.168.1.255  Mask:255.255.255.0\n          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\n          Interrupt:9 Base address:0x6000\n\neth0:2    Link encap:Ethernet  HWaddr 00:15:5D:0F:29:0E\n          inet addr:192.168.1.37  Bcast:192.168.1.255  Mask:255.255.255.0\n          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\n          Interrupt:9 Base address:0x6000\n\neth0:3    Link encap:Ethernet  HWaddr 00:15:5D:0F:29:0E\n          inet addr:192.168.1.35  Bcast:192.168.1.255  Mask:255.255.255.0\n          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\n          Interrupt:9 Base address:0x6000\n\neth1      Link encap:Ethernet  HWaddr 00:15:5D:0F:29:0F\n          inet addr:10.0.1.33  Bcast:10.0.1.255  Mask:255.255.255.0\n          inet6 addr: fe80::215:5dff:fe0f:290f\/64 Scope:Link\n          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\n          RX packets:320686576 errors:0 dropped:0 overruns:0 frame:0\n          TX packets:425280520 errors:0 dropped:0 overruns:0 carrier:0\n          collisions:0 txqueuelen:1000\n          RX bytes:209496440714 (195.1 GiB)  TX bytes:375879165808 (350.0 GiB)\n\neth1:1    Link encap:Ethernet  HWaddr 00:15:5D:0F:29:0F\n          inet addr:10.0.1.254  Bcast:10.0.1.255  Mask:255.255.255.0\n          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\n<\/code><\/pre>\n\n\n\n<p><br><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"\/images\/LVSVirtualServers.png\" alt=\"LVS Load Balancer Exchange rules\"\/><\/figure><\/div>\n\n\n\n<p><br>You can now reach Exchange1 &amp; 2 on IPs 192.168.1.36 &amp; .37.<br>&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Let Real Servers Connect to the Outside<\/h3>\n\n\n\n<p>A major problem is the real servers cannot connect to the outside world since they&#8217;re on a private network. This can be achieved with a NAT rule on the LVS server. Add this up to iptables:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># Generated by iptables-save v1.4.7\n*nat\n:PREROUTING ACCEPT [433:57174]\n:POSTROUTING ACCEPT [46:2760]\n:OUTPUT ACCEPT [46:2760]\n-A POSTROUTING -o eth0 -j MASQUERADE\nCOMMIT<\/code><\/pre>\n\n\n\n<p>&nbsp;<br>You can find out more about IP Masquerading on this <a href=\"http:\/\/www.tldp.org\/HOWTO\/IP-Masquerade-HOWTO\/firewall-examples.html\">HOWTO<\/a><br>Restart the pulse service once you&#8217;re happy with the LVS conf, and copy it over to the backup server along with the iptables conf file.<br>You can use scp on this purpose:<br>scp \/etc\/sysconfig\/ha\/lvs.cf lb2:\/etc\/sysconfig\/ha\/lvs.cf<br>scp \/etc\/sysconfig\/iptables lb2:\/etc\/sysconfig\/iptables<br>Providing lb2 is registered in your DNS.<br>DO this everytime you make a change either on LVS or iptables.<br>&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RDP Monitoring<\/h3>\n\n\n\n<p>Instead of monitoring port 80 on Exchange1 and Exchange2, it is best to check RDP.<br>Download <a href=\"http:\/\/exchange.nagios.org\/directory\/Plugins\/Remote-Access\/check_x224\/details\">check_x224<\/a> (written for Nagios) to \/usr\/local\/bin for instance<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ cd \/usr\/local\/bin\/\n$ chmod +x check_x224<\/code><\/pre>\n\n\n\n<p>&nbsp;<br>Edit the script and remove the following block:<br><i>if elapsed &gt; critical_sec:<br>print(&#8216;x224 CRITICAL: RDP connection setup time (%f) was longer than (%d) seconds&#8217; % (elapsed,critical_sec))<br>sys.exit(2)<br>if elapsed &gt; warning_sec:<br>print(&#8216;x224 WARNING: RDP connection setup time (%f) was longer than (%d) seconds&#8217; % (elapsed,warning_sec))<br>sys.exit(1)<\/i><br>&nbsp;<br>Edit and replace all<br><i>print(&#8216;x224 OK. Connection setup time: %f sec.|time=%fs;%d;%d;0&#8217; % (elapsed,elapsed,warning_sec,critical_sec))<\/i><br>instances with<br>print(&#8216;OK&#8217;)<br>&nbsp;<br>and type in &#8220;Sending Program&#8221; on Piranha virtual server&#8217;s monitoring script:<br>\/usr\/local\/bin\/check_x224 -H 10.0.1.1<br>for Exchange1; Replace IP for Exchange2.<br><br><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"\/images\/LVSRDPMonitoringScript.png\" alt=\"LVS Load Balancer monitoring script\"\/><\/figure><\/div>\n\n\n\n<p>This will return OK if RDP is up on the Exchange server.<br>&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Persistence and Failover<\/h3>\n\n\n\n<p>You have to set a value in the virtual server persistence setting (600 here) so LVS keeps redirecting packets to the same server for the time being. If you don&#8217;t, packets from a unique client would be load-balanced to multiple servers and connections wouldn&#8217;t be established.<br>If a real server goes down, persistence keep sessions bound to the crashed server making the service unavailable.<br>To avoid this behaviour, add the following lines to \/etc\/sysctl.conf and run sysctl -p to make changes persistent upon reboot:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">net.ipv4.vs.expire_quiescent_template = 1\nnet.ipv4.vs.expire_nodest_conn = 1<\/code><\/pre>\n\n\n\n<p>The first line drops sessions to a real server that&#8217;s become unavailable.<br>The Second does the same when a real server is removed from the conf.<br>All useful information is available on <a href=\"http:\/\/www.austintek.com\/LVS\/LVS-HOWTO\/HOWTO\/LVS-HOWTO.persistent_connection.html\">http:\/\/www.austintek.com<\/a>.<br>&nbsp;<br>If sysctl -p returns an error upon reboot on your Redhat distribution<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">error: \"net.ipv4.vs.expire_quiescent_template\" is an unknown key\nerror: \"net.ipv4.vs.expire_nodest_conn\" is an unknown key<\/code><\/pre>\n\n\n\n<p>You need to load ip_vs module at boot time. Create the following executable file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">echo \"modprobe ip_vs\" &gt;\/etc\/sysconfig\/modules\/lvs.modules\nchmod +x \/etc\/sysconfig\/modules\/lvs.modules<\/code><\/pre>\n\n\n\n<p>&nbsp;<br>It is interesting to check ipvsadm&#8217;s manual as well. It gives the ability to check live sessions for instance:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ ipvsadm -Lcn<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><br>DNS registration in AD<\/h3>\n\n\n\n<p>One last thing: Exchange servers will register in AD with their private IPs.<br>Edit DNS records on your Domain controller with external IPs so name resolution returns the correct values.<br>Make sure to disable the DNS auto registration in the IPv4 settings of your network cards if you don&#8217;t want your DNS settings to be overwritten.<br>It is also best to add your Exchange servers internal IPs in their host file so they communicate straight to each other.<br>&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exchange Server Maintenance<\/h3>\n\n\n\n<p>If you upgrade an Exchange server, you&#8217;re better off disabling it so noone makes a new connection while services go up and down.<br>Run<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ ipvsadm -l<\/code><\/pre>\n\n\n\n<p>to check the current status and<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ ipvsadm -e -f 80 -r exchange_server_ip:80 -w 0 -m<\/code><\/pre>\n\n\n\n<p>to set the weight to 0. Replace with 1 to set it back to 1.<br>Current connections won&#8217;t drop to the other server until services go down but noone will connect until the weight gets back to 1.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Microsoft Exchange traffic can be load-balanced with Microsoft NLB but it requires to set up 4 Exchange servers for the sake that NLB isn&#8217;t compatible with Exchange cluster. Most Microsoft guys do not recommend it.Among NLB downsides, Exchange services are monitored with a basic ping, meaning the service is considered to be active even if [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[11],"tags":[51,401,348,386,371,370,69,76],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.8.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Netexpertise - LVS: a Free Load-Balancer for Microsoft Exchange<\/title>\n<meta name=\"description\" content=\"Set up free LVS load balancer on Linux virtual servers and spread traffic across Microsoft Exchange servers in a cluster\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Netexpertise - LVS: a Free Load-Balancer for Microsoft Exchange\" \/>\n<meta property=\"og:description\" content=\"Set up free LVS load balancer on Linux virtual servers and spread traffic across Microsoft Exchange servers in a cluster\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html\" \/>\n<meta property=\"og:site_name\" content=\"Netexpertise\" \/>\n<meta property=\"article:published_time\" content=\"2014-08-27T13:56:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-20T06:19:30+00:00\" \/>\n<meta name=\"author\" content=\"dave\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@netexpertise\" \/>\n<meta name=\"twitter:site\" content=\"@netexpertise\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html\",\"url\":\"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html\",\"name\":\"Netexpertise - LVS: a Free Load-Balancer for Microsoft Exchange\",\"isPartOf\":{\"@id\":\"https:\/\/www.netexpertise.eu\/en\/#website\"},\"datePublished\":\"2014-08-27T13:56:29+00:00\",\"dateModified\":\"2021-08-20T06:19:30+00:00\",\"author\":{\"@id\":\"https:\/\/www.netexpertise.eu\/en\/#\/schema\/person\/cb4cd666549d22e9070ec1cfc1a496fa\"},\"description\":\"Set up free LVS load balancer on Linux virtual servers and spread traffic across Microsoft Exchange servers in a cluster\",\"breadcrumb\":{\"@id\":\"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.netexpertise.eu\/en\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LVS: a Free Load-Balancer for Microsoft Exchange\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.netexpertise.eu\/en\/#website\",\"url\":\"https:\/\/www.netexpertise.eu\/en\/\",\"name\":\"Netexpertise\",\"description\":\"Systems \/ Networks \/ DevOps\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.netexpertise.eu\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.netexpertise.eu\/en\/#\/schema\/person\/cb4cd666549d22e9070ec1cfc1a496fa\",\"name\":\"dave\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.netexpertise.eu\/en\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"caption\":\"dave\"},\"sameAs\":[\"http:\/\/www.netexpertise.eu\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Netexpertise - LVS: a Free Load-Balancer for Microsoft Exchange","description":"Set up free LVS load balancer on Linux virtual servers and spread traffic across Microsoft Exchange servers in a cluster","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html","og_locale":"en_US","og_type":"article","og_title":"Netexpertise - LVS: a Free Load-Balancer for Microsoft Exchange","og_description":"Set up free LVS load balancer on Linux virtual servers and spread traffic across Microsoft Exchange servers in a cluster","og_url":"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html","og_site_name":"Netexpertise","article_published_time":"2014-08-27T13:56:29+00:00","article_modified_time":"2021-08-20T06:19:30+00:00","author":"dave","twitter_card":"summary_large_image","twitter_creator":"@netexpertise","twitter_site":"@netexpertise","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html","url":"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html","name":"Netexpertise - LVS: a Free Load-Balancer for Microsoft Exchange","isPartOf":{"@id":"https:\/\/www.netexpertise.eu\/en\/#website"},"datePublished":"2014-08-27T13:56:29+00:00","dateModified":"2021-08-20T06:19:30+00:00","author":{"@id":"https:\/\/www.netexpertise.eu\/en\/#\/schema\/person\/cb4cd666549d22e9070ec1cfc1a496fa"},"description":"Set up free LVS load balancer on Linux virtual servers and spread traffic across Microsoft Exchange servers in a cluster","breadcrumb":{"@id":"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.netexpertise.eu\/en\/systems\/linux\/cheap-microsoft-exchange-cluster-with-lvs-load-balancer.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.netexpertise.eu\/en"},{"@type":"ListItem","position":2,"name":"LVS: a Free Load-Balancer for Microsoft Exchange"}]},{"@type":"WebSite","@id":"https:\/\/www.netexpertise.eu\/en\/#website","url":"https:\/\/www.netexpertise.eu\/en\/","name":"Netexpertise","description":"Systems \/ Networks \/ DevOps","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.netexpertise.eu\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.netexpertise.eu\/en\/#\/schema\/person\/cb4cd666549d22e9070ec1cfc1a496fa","name":"dave","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.netexpertise.eu\/en\/#\/schema\/person\/image\/","url":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","contentUrl":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","caption":"dave"},"sameAs":["http:\/\/www.netexpertise.eu"]}]}},"_links":{"self":[{"href":"http:\/\/www.netexpertise.eu\/en\/wp-json\/wp\/v2\/posts\/816"}],"collection":[{"href":"http:\/\/www.netexpertise.eu\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.netexpertise.eu\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/en\/wp-json\/wp\/v2\/comments?post=816"}],"version-history":[{"count":0,"href":"http:\/\/www.netexpertise.eu\/en\/wp-json\/wp\/v2\/posts\/816\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.netexpertise.eu\/en\/wp-json\/wp\/v2\/media?parent=816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/en\/wp-json\/wp\/v2\/categories?post=816"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/en\/wp-json\/wp\/v2\/tags?post=816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}