{"id":12682,"date":"2019-07-31T06:00:44","date_gmt":"2019-07-31T04:00:44","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/"},"modified":"2019-07-31T06:00:44","modified_gmt":"2019-07-31T04:00:44","slug":"alfresco-clustering-share","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/","title":{"rendered":"Alfresco Clustering &#8211; Share"},"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> and 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>. In this one, I will work on the Alfresco Share layer. Therefore, if you are using another client like a CMIS\/REST client or an ADF Application, it won&#8217;t work that way, but you might or might not need Clustering at that layer, it depends how the Application is working.<\/p>\n<p>The Alfresco Share Clustering is used only for the caches, so you could technically have multiple Share nodes working with a single Repository or a Repository Cluster without the Share Clustering. For that, you could disable the caches on the Share layer because if you kept it enabled, you would have, eventually, faced issues. Alfresco introduced a Share Clustering which is used to keep the caches in sync, so you don&#8217;t have to disable it anymore. When needed, cache invalidation messages are sent from one Share node to all others, that include runtime application properties changes as well as new\/existing site\/user dashboards changes.<\/p>\n<p>Just like for the Repository part, it&#8217;s really easy to setup the Share Clustering so there is really no reasons not to. It&#8217;s also using Hazelcast but it&#8217;s not based on properties that you need to configure in the alfresco-global.properties (because it&#8217;s a Share configuration), this one must be done in an XML file and there is no possibilities to do that in the Alfresco Admin Console, obviously.<\/p>\n<p>All Share configuration\/customization are put in the &#8220;<em>$CATALINA_HOME\/shared\/classes\/alfresco\/web-extension<\/em>&#8221; folder, this one is no exception. There are two possibilities for the Share Clustering communications:<\/p>\n<ul>\n<li>Multicast<\/li>\n<li>Unicast (TCP-IP in Hazelcast)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>I. Multicast<\/h3>\n<p>If you do not know how many nodes will participate in your Share Cluster or if you want to be able to add more nodes in the future without having to change the previous nodes&#8217; configuration, then you probably want to check and opt for the Multicast option. Just create a new file &#8220;<em>$CATALINA_HOME\/shared\/classes\/alfresco\/web-extension\/custom-slingshot-application-context.xml<\/em>&#8221; and put this content inside it:<\/p>\n<pre class=\"brush: xml; gutter: true; first-line: 1; highlight: [11,14,15,17,22,32]\">[alfresco@share_n1 ~]$ cat $CATALINA_HOME\/shared\/classes\/alfresco\/web-extension\/custom-slingshot-application-context.xml\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;beans \n       xmlns_xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n       xmlns_hz=\"http:\/\/www.hazelcast.com\/schema\/spring\"\n       xsi_schemaLocation=\"http:\/\/www.springframework.org\/schema\/beans\n                           http:\/\/www.springframework.org\/schema\/beans\/spring-beans-2.5.xsd\n                           http:\/\/www.hazelcast.com\/schema\/spring\n                           http:\/\/www.hazelcast.com\/schema\/spring\/hazelcast-spring-2.4.xsd\"&gt;\n\n  &lt;hz:topic id=\"topic\" instance-ref=\"webframework.cluster.slingshot\" name=\"share_hz_test\"\/&gt;\n  &lt;hz:hazelcast id=\"webframework.cluster.slingshot\"&gt;\n    &lt;hz:config&gt;\n      &lt;hz:group name=\"slingshot\" password=\"Sh4r3_hz_Test_pwd\"\/&gt;\n      &lt;hz:network port=\"5801\" port-auto-increment=\"false\"&gt;\n        &lt;hz:join&gt;\n          &lt;hz:multicast enabled=\"true\" multicast-group=\"224.2.2.5\" multicast-port=\"54327\"\/&gt;\n          &lt;hz:tcp-ip enabled=\"false\"&gt;\n            &lt;hz:members&gt;&lt;\/hz:members&gt;\n          &lt;\/hz:tcp-ip&gt;\n        &lt;\/hz:join&gt;\n        &lt;hz:interfaces enabled=\"false\"&gt;\n          &lt;hz:interface&gt;&lt;\/hz:interface&gt;\n        &lt;\/hz:interfaces&gt;\n      &lt;\/hz:network&gt;\n    &lt;\/hz:config&gt;\n  &lt;\/hz:hazelcast&gt;\n\n  &lt;bean id=\"webframework.cluster.clusterservice\" class=\"org.alfresco.web.site.ClusterTopicService\" init-method=\"init\"&gt;\n    &lt;property name=\"hazelcastInstance\" ref=\"webframework.cluster.slingshot\" \/&gt;\n    &lt;property name=\"hazelcastTopicName\"&gt;\n      &lt;value&gt;share_hz_test&lt;\/value&gt;\n    &lt;\/property&gt;\n  &lt;\/bean&gt;\n\n&lt;\/beans&gt;\n[alfresco@share_n1 ~]$<\/pre>\n<p>&nbsp;<\/p>\n<p>In the above configuration, be sure to set a topic name (matching the hazelcastTopicName&#8217;s value) as well as a group password that is specific to this environment, so you don&#8217;t end-up with a single Cluster with members coming from different environments. For the Share layer, it&#8217;s less of an issue than for the Repository layer but still. Be sure also to use a network port that isn&#8217;t in use, it will be the port that Hazelcast will bind itself to in the local host. For Alfresco Clustering, we used 5701 so here it&#8217;s 5801 for example.<\/p>\n<p>Not much more to say about this configuration, we just enabled the multicast with an IP and a port to be used and we disabled the tcp-ip one.<\/p>\n<p>The interfaces is disabled by default but you can enable it, if you want to. If it&#8217;s disabled, Hazelcast will list all local interfaces (127.0.0.1, local_IP1, local_IP2, &#8230;) and it will choose one in this list. If you want to force Hazelcast to use a specific local network interface, then enable this section and add that here. In can use the following nomenclature (IP only!):<\/p>\n<ul>\n<li>10.10.10.10: Hazelcast will try to bind on 10.10.10.10 only. If it&#8217;s not available, then it won&#8217;t start<\/li>\n<li>10.10.10.10-11: Hazelcast will try to bind on any IP within the range 10-11 so in this case 2 IPs: 10.10.10.10 or 10.10.10.11. If you have, let&#8217;s say, 5 IPs assigned to the local host and you don&#8217;t want Hazelcast to use 3 of these, then specify the ones that it can use and it will pick one from the list. This can also be used to have the same content for the custom-slingshot-application-context.xml on different hosts&#8230; One server with IP 10.10.10.10 and a second one with IP 10.10.10.11<\/li>\n<li>10.10.10.* or 10.10.*.*: Hazelcast will try to bind on any IP in this range, this is an extended version of the XX-YY range above<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>For most cases, keeping the interfaces disabled is sufficient since it will just pick one available. You might think that Hazelcast may bind itself to 127.0.0.1, technically it&#8217;s possible since it&#8217;s a local network interface but I have never seen it do so, so I assume that there is some kind of preferred order if another IP is available.<\/p>\n<p>Membership in Hazelcast is based on &#8220;age&#8221;, meaning that the oldest member will be the one to lead. There is no predefined Master or Slave members, they are all equal, but the oldest\/first member is the one that will check if new members are allowed to join (correct config) and if so, it will send the information to all other members that joined already so they are all aligned. If multicast is enabled, a multicast listener is started to listen for new membership requests.<\/p>\n<p>&nbsp;<\/p>\n<h3>II. Unicast<\/h3>\n<p>If you already know how many nodes will participate in your Share Cluster or if you prefer to avoid Multicast messages (there is no real need to overload your network with such things&#8230;), then it&#8217;s preferable to use Unicast messaging. For that purpose, just create the same file as above (&#8220;<em>$CATALINA_HOME\/shared\/classes\/alfresco\/web-extension\/custom-slingshot-application-context.xml<\/em>&#8220;) but instead, use the tcp-ip section:<\/p>\n<pre class=\"brush: xml; gutter: true; first-line: 1; highlight: [18,19,20]\">[alfresco@share_n1 ~]$ cat $CATALINA_HOME\/shared\/classes\/alfresco\/web-extension\/custom-slingshot-application-context.xml\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;beans \n       xmlns_xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n       xmlns_hz=\"http:\/\/www.hazelcast.com\/schema\/spring\"\n       xsi_schemaLocation=\"http:\/\/www.springframework.org\/schema\/beans\n                           http:\/\/www.springframework.org\/schema\/beans\/spring-beans-2.5.xsd\n                           http:\/\/www.hazelcast.com\/schema\/spring\n                           http:\/\/www.hazelcast.com\/schema\/spring\/hazelcast-spring-2.4.xsd\"&gt;\n\n  &lt;hz:topic id=\"topic\" instance-ref=\"webframework.cluster.slingshot\" name=\"share_hz_test\"\/&gt;\n  &lt;hz:hazelcast id=\"webframework.cluster.slingshot\"&gt;\n    &lt;hz:config&gt;\n      &lt;hz:group name=\"slingshot\" password=\"Sh4r3_hz_Test_pwd\"\/&gt;\n      &lt;hz:network port=\"5801\" port-auto-increment=\"false\"&gt;\n        &lt;hz:join&gt;\n          &lt;hz:multicast enabled=\"false\" multicast-group=\"224.2.2.5\" multicast-port=\"54327\"\/&gt;\n          &lt;hz:tcp-ip enabled=\"true\"&gt;\n            &lt;hz:members&gt;share_n1.domain,share_n2.domain&lt;\/hz:members&gt;\n          &lt;\/hz:tcp-ip&gt;\n        &lt;\/hz:join&gt;\n        &lt;hz:interfaces enabled=\"false\"&gt;\n          &lt;hz:interface&gt;&lt;\/hz:interface&gt;\n        &lt;\/hz:interfaces&gt;\n      &lt;\/hz:network&gt;\n    &lt;\/hz:config&gt;\n  &lt;\/hz:hazelcast&gt;\n\n  &lt;bean id=\"webframework.cluster.clusterservice\" class=\"org.alfresco.web.site.ClusterTopicService\" init-method=\"init\"&gt;\n    &lt;property name=\"hazelcastInstance\" ref=\"webframework.cluster.slingshot\" \/&gt;\n    &lt;property name=\"hazelcastTopicName\"&gt;\n      &lt;value&gt;share_hz_test&lt;\/value&gt;\n    &lt;\/property&gt;\n  &lt;\/bean&gt;\n\n&lt;\/beans&gt;\n[alfresco@share_n1 ~]$<\/pre>\n<p>&nbsp;<\/p>\n<p>The description is basically the same as for the Multicast part. The main difference is that the multicast was disabled, the tcp-ip was enabled and there is therefore a list of members that needs to be set. This is a comma separated list of hostname or IPs that the Hazelcast will try to contact when it starts. Membership in case of Unicast is managed in the same way except that the oldest\/first member will listen for new membership requests on the TCP-IP. Therefore, it&#8217;s the same principle, it&#8217;s just done differently.<\/p>\n<p>Starting the first Share node in the Cluster will display the following information on the logs:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1; highlight: [2,4,18,20,22,26,27,28,32]\">Jul 28, 2019 11:45:35 AM com.hazelcast.impl.AddressPicker\nINFO: Resolving domain name 'share_n1.domain' to address(es): [127.0.0.1, 10.10.10.10]\nJul 28, 2019 11:45:35 AM com.hazelcast.impl.AddressPicker\nINFO: Resolving domain name 'share_n2.domain' to address(es): [10.10.10.11]\nJul 28, 2019 11:45:35 AM com.hazelcast.impl.AddressPicker\nINFO: Interfaces is disabled, trying to pick one address from TCP-IP config addresses: [share_n1.domain\/10.10.10.10, share_n2.domain\/10.10.10.11, share_n1.domain\/127.0.0.1]\nJul 28, 2019 11:45:35 AM com.hazelcast.impl.AddressPicker\nINFO: Prefer IPv4 stack is true.\nJul 28, 2019 11:45:35 AM com.hazelcast.impl.AddressPicker\nINFO: Picked Address[share_n1.domain]:5801, using socket ServerSocket[addr=\/0:0:0:0:0:0:0:0,localport=5801], bind any local is true\nJul 28, 2019 11:45:36 AM com.hazelcast.system\nINFO: [share_n1.domain]:5801 [slingshot] Hazelcast Community Edition 2.4 (20121017) starting at Address[share_n1.domain]:5801\nJul 28, 2019 11:45:36 AM com.hazelcast.system\nINFO: [share_n1.domain]:5801 [slingshot] Copyright (C) 2008-2012 Hazelcast.com\nJul 28, 2019 11:45:36 AM com.hazelcast.impl.LifecycleServiceImpl\nINFO: [share_n1.domain]:5801 [slingshot] Address[share_n1.domain]:5801 is STARTING\nJul 28, 2019 11:45:36 AM com.hazelcast.impl.TcpIpJoiner\nINFO: [share_n1.domain]:5801 [slingshot] Connecting to possible member: Address[share_n2.domain]:5801\nJul 28, 2019 11:45:36 AM com.hazelcast.nio.SocketConnector\nINFO: [share_n1.domain]:5801 [slingshot] Could not connect to: share_n2.domain\/10.10.10.11:5801. Reason: ConnectException[Connection refused]\nJul 28, 2019 11:45:37 AM com.hazelcast.nio.SocketConnector\nINFO: [share_n1.domain]:5801 [slingshot] Could not connect to: share_n2.domain\/10.10.10.11:5801. Reason: ConnectException[Connection refused]\nJul 28, 2019 11:45:37 AM com.hazelcast.impl.TcpIpJoiner\nINFO: [share_n1.domain]:5801 [slingshot]\n\nMembers [1] {\n        Member [share_n1.domain]:5801 this\n}\n\nJul 28, 2019 11:45:37 AM com.hazelcast.impl.LifecycleServiceImpl\nINFO: [share_n1.domain]:5801 [slingshot] Address[share_n1.domain]:5801 is STARTED\n2019-07-28 11:45:37,164  INFO  [web.site.ClusterTopicService] [localhost-startStop-1] Init complete for Hazelcast cluster - listening on topic: share_hz_test<\/pre>\n<p>&nbsp;<\/p>\n<p>Then starting a second node of the Share Cluster will display the following (still on the node1 logs):<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1; highlight: [2,4,8,9,10,11]\">Jul 28, 2019 11:48:31 AM com.hazelcast.nio.SocketAcceptor\nINFO: [share_n1.domain]:5801 [slingshot] 5801 is accepting socket connection from \/10.10.10.11:34191\nJul 28, 2019 11:48:31 AM com.hazelcast.nio.ConnectionManager\nINFO: [share_n1.domain]:5801 [slingshot] 5801 accepted socket connection from \/10.10.10.11:34191\nJul 28, 2019 11:48:38 AM com.hazelcast.cluster.ClusterManager\nINFO: [share_n1.domain]:5801 [slingshot]\n\nMembers [2] {\n        Member [share_n1.domain]:5801 this\n        Member [share_n2.domain]:5801\n}<\/pre>\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><a href=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-apache-httpd-as-load-balancer\/\" target=\"_blank\" rel=\"noopener noreferrer\">Apache HTTPD as Load Balancer<\/a><\/li>\n<li>Share<\/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 and I talked about the Clustering setup for the Alfresco Repository. In this one, I will work on the Alfresco Share layer. Therefore, if you are using another client like a CMIS\/REST client or an ADF Application, it won&#8217;t work [&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,704,38,84],"type_dbi":[],"class_list":["post-12682","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","category-enterprise-content-management","tag-alfresco","tag-architecture","tag-cluster","tag-high-availability"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Alfresco Clustering - Share - 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-share\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Alfresco Clustering - Share\" \/>\n<meta property=\"og:description\" content=\"In previous blogs, I talked about some basis and presented some possible architectures for Alfresco and I talked about the Clustering setup for the Alfresco Repository. In this one, I will work on the Alfresco Share layer. Therefore, if you are using another client like a CMIS\/REST client or an ADF Application, it won&#8217;t work [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-31T04:00:44+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=\"9 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-share\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/alfresco-clustering-share\\\/\"},\"author\":{\"name\":\"Morgan Patou\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"headline\":\"Alfresco Clustering &#8211; Share\",\"datePublished\":\"2019-07-31T04:00:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/alfresco-clustering-share\\\/\"},\"wordCount\":1048,\"commentCount\":0,\"keywords\":[\"Alfresco\",\"architecture\",\"Cluster\",\"High availability\"],\"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-share\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/alfresco-clustering-share\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/alfresco-clustering-share\\\/\",\"name\":\"Alfresco Clustering - Share - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2019-07-31T04:00:44+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/alfresco-clustering-share\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/alfresco-clustering-share\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/alfresco-clustering-share\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Alfresco Clustering &#8211; Share\"}]},{\"@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 - Share - 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-share\/","og_locale":"en_US","og_type":"article","og_title":"Alfresco Clustering - Share","og_description":"In previous blogs, I talked about some basis and presented some possible architectures for Alfresco and I talked about the Clustering setup for the Alfresco Repository. In this one, I will work on the Alfresco Share layer. Therefore, if you are using another client like a CMIS\/REST client or an ADF Application, it won&#8217;t work [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/","og_site_name":"dbi Blog","article_published_time":"2019-07-31T04:00:44+00:00","author":"Morgan Patou","twitter_card":"summary_large_image","twitter_creator":"@MorganPatou","twitter_misc":{"Written by":"Morgan Patou","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/"},"author":{"name":"Morgan Patou","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"headline":"Alfresco Clustering &#8211; Share","datePublished":"2019-07-31T04:00:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/"},"wordCount":1048,"commentCount":0,"keywords":["Alfresco","architecture","Cluster","High availability"],"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-share\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/","url":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/","name":"Alfresco Clustering - Share - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2019-07-31T04:00:44+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/alfresco-clustering-share\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Alfresco Clustering &#8211; Share"}]},{"@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\/12682","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=12682"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12682\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=12682"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=12682"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=12682"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=12682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}