{"id":12709,"date":"2019-08-02T06:00:14","date_gmt":"2019-08-02T04:00:14","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/"},"modified":"2019-08-02T06:00:14","modified_gmt":"2019-08-02T04:00:14","slug":"alfresco-clustering-apache-httpd-as-load-balancer","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/","title":{"rendered":"Alfresco Clustering &#8211; Apache HTTPD as Load Balancer"},"content":{"rendered":"<p>In previous blogs, I talked about some <a href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-basis-architectures\/\" target=\"_blank\" rel=\"noopener noreferrer\">basis and presented some possible architectures for Alfresco<\/a>, I talked about the <a href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-repository\/\" target=\"_blank\" rel=\"noopener noreferrer\">Clustering setup for the Alfresco Repository<\/a>, the <a href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/\" target=\"_blank\" rel=\"noopener noreferrer\">Alfresco Share<\/a> and for <a href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-activemq\/\" target=\"_blank\" rel=\"noopener noreferrer\">ActiveMQ<\/a>. In this one, I will talk about the Front-end layer, but in a very particular setup because it will also act as a Load Balancer. For an Alfresco solution, you can choose the front-end that you prefer and it can just act as a front-end to protect your Alfresco back-end components, to add SSL or whatever. There is no real preferences but you will obviously need to know how to configure it. I posted a blog some years ago for Apache HTTPD as a simple front-end (<a href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-protect-your-installation-with-apache-httpd\/\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>) or you can check the <a href=\"https:\/\/docs.alfresco.com\/6.1\/tasks\/configure-ssl-prod.html\" target=\"_blank\" rel=\"noopener noreferrer\">Alfresco documentation<\/a> which now include a section for that as well but there is no official documentation for a Load Balancer setup.<\/p>\n<p>In an Alfresco architecture that includes HA\/Clustering you will, at some point, need a Load Balancer. From time to time, you will come across companies that do not already have a Load Balancer available and you might therefore have to provide something to fill this gap. Since you will most probably (should?) already have a front-end to protect Alfresco, why not using it as well as a Load Balancer? In this blog, I choose Apache HTTPD because that&#8217;s the front-end I&#8217;m usually using and I know it&#8217;s working fine as a LB as well.<\/p>\n<p>The architectures that I described in the first blog of this series, there always were a front-end installed on each node with Alfresco Share and there were a LB above that. Here, these two boxes are actually together. There are multiple ways to set that up but I didn&#8217;t want to talk about that in my first blog because it&#8217;s not really related to Alfresco, it&#8217;s above that so it would just have multiplied the possible architectures that I wanted to present and my blog would just have been way too long. There were also no communications between the different front-end nodes because technically speaking, we aren&#8217;t going to setup Apache HTTPD as a Cluster, we only need to provide a High Availability solution.<\/p>\n<p>Alright so let&#8217;s say that you don&#8217;t have a Load Balancer available and you want to use Apache HTTPD as a front-end+LB for a two-node Cluster. There are several solutions so here are two possible ways to do that from an inbound communication point of view that will still provide redundancy:<\/p>\n<ul>\n<li>Setup a Round Robin DNS that points to both Apache HTTPD node1 and node2. The DNS will redirect connections to either of the two Apache HTTPD (Active\/Active)<\/li>\n<li>Setup a Failover DNS with a pretty low TimeToLive (TTL) which will point to a single Apache HTTPD node and redirect all traffic there. If this one isn&#8217;t available, it will failover to the second one (Active\/Passive)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>In both cases above, the Apache HTTPD configuration can be exactly the same, it will work. From an outbound communication point of view, Apache HTTPD will talk directly with all the Share nodes behind it. To avoid disconnection and loss of sessions in case an Apache HTTPD is going down, the solution will need to support session stickiness across all Apache HTTPD. With that, all communications coming a single browser will always be redirected to the same backend server which ensures that the sessions are still intact, even if you are losing an Apache HTTPD. I mentioned previously that there won&#8217;t be any communications between the different front-ends so this session stickiness must be based on something present inside the session (header or cookie) or inside the URL.<\/p>\n<p>With Apache HTTPD, you can use the Proxy modules to provide both a front-end configuration as well as a Load Balancer but, in this blog, I will use the JK module. The JK module is provided by Apache for communications between Apache HTTPD and Apache Tomcat. It has been designed and optimized for this purpose and it also provides\/supports a Load Balancer configuration.<\/p>\n<p>&nbsp;<\/p>\n<h3>I. Apache HTTPD setup for a single back-end node<\/h3>\n<p>For this example, I will use the package provided by Ubuntu for a simple installation. You can obviously build it from source to customize it, add your best practices, aso&#8230; This has nothing to do with the Clustering setup, it&#8217;s a simple front-end configuration for any installation. So let&#8217;s install a basic Apache HTTPD:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[alfresco@httpd_n1 ~]$ sudo apt-get install apache2 libapache2-mod-jk\n[alfresco@httpd_n1 ~]$ sudo systemctl enable apache2.service\n[alfresco@httpd_n1 ~]$ sudo systemctl daemon-reload\n[alfresco@httpd_n1 ~]$ sudo a2enmod rewrite\n[alfresco@httpd_n1 ~]$ sudo a2enmod ssl<\/pre>\n<p>&nbsp;<\/p>\n<p>Then to configure it for a single back-end Alfresco node (I&#8217;m just showing a minimal configuration again, there is much more to do add security &amp; restrictions around Alfresco and mod_jk):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [21,26,27,28,29,30]\">[alfresco@httpd_n1 ~]$ cat \/etc\/apache2\/sites-available\/alfresco-ssl.conf\n...\n&lt;VirtualHost *:80&gt;\n    RewriteRule ^\/?(.*) https:\/\/%{HTTP_HOST}\/$1 [R,L]\n&lt;\/VirtualHost&gt;\n\n&lt;VirtualHost *:443&gt;\n    ServerName            dns.domain\n    ServerAlias           dns.domain dns\n    ServerAdmin           email@domain\n    SSLEngine             on\n    SSLProtocol           -all +TLSv1.2\n    SSLCipherSuite        EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:AES2\n    SSLHonorCipherOrder   on\n    SSLVerifyClient       none\n    SSLCertificateFile    \/etc\/pki\/tls\/certs\/dns.domain.crt\n    SSLCertificateKeyFile \/etc\/pki\/tls\/private\/dns.domain.key\n\n    RewriteRule ^\/$ https:\/\/%{HTTP_HOST}\/share [R,L]\n\n    JkMount \/* alfworker\n&lt;\/VirtualHost&gt;\n...\n[alfresco@httpd_n1 ~]$\n[alfresco@httpd_n1 ~]$ cat \/etc\/libapache2-mod-jk\/workers.properties\nworker.list=alfworker\nworker.alfworker.type=ajp13\nworker.alfworker.port=8009\nworker.alfworker.host=share_n1.domain\nworker.alfworker.lbfactor=1\n[alfresco@httpd_n1 ~]$\n[alfresco@httpd_n1 ~]$ sudo a2ensite alfresco-ssl\n[alfresco@httpd_n1 ~]$ sudo a2dissite 000-default\n[alfresco@httpd_n1 ~]$ sudo rm \/etc\/apache2\/sites-enabled\/000-default.conf\n[alfresco@httpd_n1 ~]$\n[alfresco@httpd_n1 ~]$ sudo service apache2 restart<\/pre>\n<p>&nbsp;<\/p>\n<p>That should do it for a single back-end Alfresco node. Again, this was just an example, I wouldn&#8217;t recommend using the configuration as is (inside the alfresco-ssl.conf file), there is much more to do for security reasons.<\/p>\n<p>&nbsp;<\/p>\n<h3>II. Adaptation for a Load Balancer configuration<\/h3>\n<p>If you want to configure your Apache HTTPD as a Load Balancer, then on top of the standard setup shown above, you just have to modify two things:<\/p>\n<ul>\n<li>Modify the JK module configuration to use a Load Balancer<\/li>\n<li>Modify the Apache Tomcat configuration to add an identifier for Apache HTTPD to be able to redirect the communication to the correct back-end node (session stickiness). This ID put in the Apache Tomcat configuration will extend the Session&#8217;s ID like that: &lt;session_id&gt;.&lt;tomcat_id&gt;<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>So on all the nodes hosting the Apache HTTPD, you should put the exact same configuration:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [2,4,5,6,7,11,16]\">[alfresco@httpd_n1 ~]$ cat \/etc\/libapache2-mod-jk\/workers.properties\nworker.list=alfworker\n\nworker.alfworker.type=lb\nworker.alfworker.balance_workers=node1,node2\nworker.alfworker.sticky_session=true\nworker.alfworker.method=B\n\nworker.node1.type=ajp13\nworker.node1.port=8009\nworker.node1.host=share_n1.domain\nworker.node1.lbfactor=1\n\nworker.node2.type=ajp13\nworker.node2.port=8009\nworker.node2.host=share_n2.domain\nworker.node2.lbfactor=1\n[alfresco@httpd_n1 ~]$\n[alfresco@httpd_n1 ~]$ sudo service apache2 reload<\/pre>\n<p>&nbsp;<\/p>\n<p>With the above configuration, we keep the same JK Worker (alfworker) but instead of using a <em>ajp13<\/em> type, we use a <em>lb<\/em> type (line 4) which is an encapsulation. The alfworker will use 2 sub-workers named <em>node1<\/em> and <em>node2<\/em> (line 5), that&#8217;s just a generic name. The alfworker will also enable <em>stickiness<\/em> and use the <em>method B<\/em> (Busyness), which means that for new sessions, Apache HTTPD to choose to use the worker with the less requests being served, divided by the <em>lbfactor<\/em> value.<\/p>\n<p>Each sub-worker (<em>node1<\/em> and <em>node2<\/em>) define their type which is <em>ajp13<\/em> this time, the <em>port<\/em> and <em>host<\/em> it should target (where the Share nodes are located) and the <em>lbfactor<\/em>. As mentioned above, increasing the <em>lbfactor<\/em> means that more requests are going to be sent to this worker:<\/p>\n<ul>\n<li>For the node2 to serve 100% more requests than the node1 (x2), then set <em>worker.node1.lbfactor=1<\/em> and <em>worker.node2.lbfactor=2<\/em><\/li>\n<li>For the node2 to serve 50% more requests than the node1 (x1.5), then set <em>worker.node1.lbfactor=2<\/em> and <em>worker.node2.lbfactor=3<\/em><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>The second thing to do is to modify the Apache Tomcat configuration to add a specific ID. On the Share node1:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[alfresco@share_n1 ~]$ grep \"&lt;Engine\" $CATALINA_HOME\/conf\/server.xml\n    &lt;Engine name=\"Catalina\" defaultHost=\"localhost\" jvmRoute=\"share_n1\"&gt;\n[alfresco@share_n1 ~]$<\/pre>\n<p>&nbsp;<\/p>\n<p>On the Share node2:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[alfresco@share_n2 ~]$ grep \"&lt;Engine\" $CATALINA_HOME\/conf\/server.xml\n    &lt;Engine name=\"Catalina\" defaultHost=\"localhost\" jvmRoute=\"share_n2\"&gt;\n[alfresco@share_n2 ~]$<\/pre>\n<p>&nbsp;<\/p>\n<p>The value to be put in the <em>jvmRoute<\/em> parameter is just a string so it can be anything but it must be unique across all Share nodes so that the Apache HTTPD JK module can find the correct back-end node that it should transfer the requests to.<\/p>\n<p>It&#8217;s that simple to configure Apache HTTPD as a Load Balancer in front of Alfresco&#8230; To check which back-end server you are currently using, you can use the browser&#8217;s utilities and in particular the network recording which will display, in the headers\/cookies section, the Session ID which will therefore display the value that you put in the <em>jvmRoute<\/em>.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Other posts of this series on Alfresco HA\/Clustering:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-basis-architectures\/\" target=\"_blank\" rel=\"noopener noreferrer\">Basis &amp; Architectures<\/a><\/li>\n<li><a href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-activemq\/\" target=\"_blank\" rel=\"noopener noreferrer\">ActiveMQ<\/a><\/li>\n<li>Apache HTTPD as Load Balancer<\/li>\n<li><a href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/\" target=\"_blank\" rel=\"noopener noreferrer\">Share<\/a><\/li>\n<li><a href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-solr6\/\" target=\"_blank\" rel=\"noopener noreferrer\">Solr6<\/a><\/li>\n<li><a href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-repository\/\" target=\"_blank\" rel=\"noopener noreferrer\">Repository<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In previous blogs, I talked about some basis and presented some possible architectures for Alfresco, I talked about the Clustering setup for the Alfresco Repository, the Alfresco Share and for ActiveMQ. In this one, I will talk about the Front-end layer, but in a very particular setup because it will also act as a Load [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197,525],"tags":[3169,839,704,38,84,1166,1024],"type_dbi":[],"class_list":["post-12709","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","category-enterprise-content-management","tag-alfresco","tag-apache","tag-architecture","tag-cluster","tag-high-availability","tag-httpd","tag-load-balancer"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Alfresco Clustering - Apache HTTPD as Load Balancer - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Alfresco Clustering - Apache HTTPD as Load Balancer\" \/>\n<meta property=\"og:description\" content=\"In previous blogs, I talked about some basis and presented some possible architectures for Alfresco, I talked about the Clustering setup for the Alfresco Repository, the Alfresco Share and for ActiveMQ. In this one, I will talk about the Front-end layer, but in a very particular setup because it will also act as a Load [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-02T04:00:14+00:00\" \/>\n<meta name=\"author\" content=\"Morgan Patou\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MorganPatou\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Morgan Patou\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/\"},\"author\":{\"name\":\"Morgan Patou\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"headline\":\"Alfresco Clustering &#8211; Apache HTTPD as Load Balancer\",\"datePublished\":\"2019-08-02T04:00:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/\"},\"wordCount\":1275,\"commentCount\":0,\"keywords\":[\"Alfresco\",\"Apache\",\"architecture\",\"Cluster\",\"High availability\",\"HTTPD\",\"load balancer\"],\"articleSection\":[\"Application integration &amp; Middleware\",\"Enterprise content management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/\",\"name\":\"Alfresco Clustering - Apache HTTPD as Load Balancer - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2019-08-02T04:00:14+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Alfresco Clustering &#8211; Apache HTTPD as Load Balancer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8\",\"name\":\"Morgan Patou\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"caption\":\"Morgan Patou\"},\"description\":\"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\/Banking, and the Pharmaceutical industry.\",\"sameAs\":[\"https:\/\/blog.dbi-services.com\/author\/morgan-patou\/\",\"https:\/\/x.com\/MorganPatou\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Alfresco Clustering - Apache HTTPD as Load Balancer - dbi Blog","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":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/","og_locale":"en_US","og_type":"article","og_title":"Alfresco Clustering - Apache HTTPD as Load Balancer","og_description":"In previous blogs, I talked about some basis and presented some possible architectures for Alfresco, I talked about the Clustering setup for the Alfresco Repository, the Alfresco Share and for ActiveMQ. In this one, I will talk about the Front-end layer, but in a very particular setup because it will also act as a Load [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/","og_site_name":"dbi Blog","article_published_time":"2019-08-02T04:00:14+00:00","author":"Morgan Patou","twitter_card":"summary_large_image","twitter_creator":"@MorganPatou","twitter_misc":{"Written by":"Morgan Patou","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/"},"author":{"name":"Morgan Patou","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"headline":"Alfresco Clustering &#8211; Apache HTTPD as Load Balancer","datePublished":"2019-08-02T04:00:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/"},"wordCount":1275,"commentCount":0,"keywords":["Alfresco","Apache","architecture","Cluster","High availability","HTTPD","load balancer"],"articleSection":["Application integration &amp; Middleware","Enterprise content management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/","url":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/","name":"Alfresco Clustering - Apache HTTPD as Load Balancer - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2019-08-02T04:00:14+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Alfresco Clustering &#8211; Apache HTTPD as Load Balancer"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8","name":"Morgan Patou","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","caption":"Morgan Patou"},"description":"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\/Banking, and the Pharmaceutical industry.","sameAs":["https:\/\/blog.dbi-services.com\/author\/morgan-patou\/","https:\/\/x.com\/MorganPatou"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=12709"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12709\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=12709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=12709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=12709"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=12709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}