CINXE.COM
WildFly Managed Domain in Containers: Auto Micro Clustering and Scaling | Virtuozzo
<!DOCTYPE html><html lang="en-US"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>WildFly Managed Domain in Containers: Auto Micro Clustering and Scaling | Virtuozzo</title><meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <script src="https://cookie-cdn.cookiepro.com/consent/d6997970-8f28-46d2-9fe5-77c66428e76c/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="d6997970-8f28-46d2-9fe5-77c66428e76c" defer data-deferred="1"></script> <script type="text/javascript" src="data:text/javascript;base64,ZnVuY3Rpb24gT3B0YW5vbldyYXBwZXIoKXt9" defer></script> <meta name="description" content="Guide how to extend your WildFly from standalone server to cluster in managed domain mode inside containers for running cloud-native microservices or decomposed legacy applications" /><link rel="canonical" href="https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/" /><meta property="og:locale" content="en_US" /><meta property="og:type" content="article" /><meta property="og:title" content="Automatic WildFly Clustering in Managed Domain Mode and Scaling inside Containers" /><meta property="og:description" content="Guide how to extend your WildFly from standalone server to cluster in managed domain mode inside containers for running cloud-native microservices or decomposed legacy applications" /><meta property="og:url" content="https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/" /><meta property="og:site_name" content="Virtuozzo Blog | News & insights for cloud service providers" /><meta property="article:publisher" content="https://www.facebook.com/VirtuozzoInc/" /><meta property="article:published_time" content="2021-05-06T08:00:34+00:00" /><meta property="article:modified_time" content="2022-01-06T12:24:14+00:00" /><meta property="og:image" content="https://www.virtuozzo.com/company/blog/wp-content/uploads/2021/05/wildfly-managed-domain-containers-1.png" /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="628" /><meta property="og:image:type" content="image/png" /><meta name="author" content="Tetiana Fydorenchyk" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:creator" content="@VirtuozzoInc" /><meta name="twitter:site" content="@VirtuozzoInc" /><meta name="twitter:label1" content="Written by" /><meta name="twitter:data1" content="Tetiana Fydorenchyk" /><meta name="twitter:label2" content="Est. reading time" /><meta name="twitter:data2" content="14 minutes" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"Article","@id":"https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/#article","isPartOf":{"@id":"https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/"},"author":{"name":"Tetiana Fydorenchyk","@id":"https://www.virtuozzo.com/company/blog/#/schema/person/a966b8a687beb7ec4f372b5961cc7f81"},"headline":"Automatic WildFly Clustering in Managed Domain Mode and Scaling inside Containers","datePublished":"2021-05-06T08:00:34+00:00","dateModified":"2022-01-06T12:24:14+00:00","mainEntityOfPage":{"@id":"https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/"},"wordCount":2117,"commentCount":0,"publisher":{"@id":"https://www.virtuozzo.com/company/blog/#organization"},"image":{"@id":"https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/#primaryimage"},"thumbnailUrl":"https://www.virtuozzo.com/company/blog/wp-content/uploads/2021/05/wildfly-managed-domain-containers-1.png","keywords":["auto-clustering","auto-scaling","Java EE hosting","Java hosting","micro clustering","wildfly clustering","WildFly hosting","wildfly in domain mode","wildfly managed domain","wildfly scaling"],"articleSection":["All","Containers","DevOps PaaS","Installer","Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/#respond"]}]},{"@type":"WebPage","@id":"https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/","url":"https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/","name":"WildFly Managed Domain in Containers: Auto Micro Clustering and Scaling","isPartOf":{"@id":"https://www.virtuozzo.com/company/blog/#website"},"primaryImageOfPage":{"@id":"https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/#primaryimage"},"image":{"@id":"https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/#primaryimage"},"thumbnailUrl":"https://www.virtuozzo.com/company/blog/wp-content/uploads/2021/05/wildfly-managed-domain-containers-1.png","datePublished":"2021-05-06T08:00:34+00:00","dateModified":"2022-01-06T12:24:14+00:00","description":"Guide how to extend your WildFly from standalone server to cluster in managed domain mode inside containers for running cloud-native microservices or decomposed legacy applications","breadcrumb":{"@id":"https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/#primaryimage","url":"https://www.virtuozzo.com/company/blog/wp-content/uploads/2021/05/wildfly-managed-domain-containers-1.png","contentUrl":"https://www.virtuozzo.com/company/blog/wp-content/uploads/2021/05/wildfly-managed-domain-containers-1.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https://www.virtuozzo.com/company/blog/wildfly-managed-domain-automatic-clustering-scaling/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.virtuozzo.com/company/blog/"},{"@type":"ListItem","position":2,"name":"Automatic WildFly Clustering in Managed Domain Mode and Scaling inside Containers"}]},{"@type":"WebSite","@id":"https://www.virtuozzo.com/company/blog/#website","url":"https://www.virtuozzo.com/company/blog/","name":"Virtuozzo Blog | News & insights for cloud service providers","description":"","publisher":{"@id":"https://www.virtuozzo.com/company/blog/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.virtuozzo.com/company/blog/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://www.virtuozzo.com/company/blog/#organization","name":"Virtuozzo Blog","url":"https://www.virtuozzo.com/company/blog/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.virtuozzo.com/company/blog/#/schema/logo/image/","url":"https://www.virtuozzo.com/company/blog/wp-content/uploads/2023/04/vz-logo.svg","contentUrl":"https://www.virtuozzo.com/company/blog/wp-content/uploads/2023/04/vz-logo.svg","width":61,"height":12,"caption":"Virtuozzo Blog"},"image":{"@id":"https://www.virtuozzo.com/company/blog/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/VirtuozzoInc/","https://x.com/VirtuozzoInc"]},{"@type":"Person","@id":"https://www.virtuozzo.com/company/blog/#/schema/person/a966b8a687beb7ec4f372b5961cc7f81","name":"Tetiana Fydorenchyk","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.virtuozzo.com/company/blog/#/schema/person/image/","url":"https://secure.gravatar.com/avatar/dab6b60fee15de4884d21ed8c9404208?s=96&d=mm&r=g","contentUrl":"https://secure.gravatar.com/avatar/dab6b60fee15de4884d21ed8c9404208?s=96&d=mm&r=g","caption":"Tetiana Fydorenchyk"},"url":"https://www.virtuozzo.com/company/blog/author/tetiana/"}]}</script> <link rel='dns-prefetch' href='//static.addtoany.com' /><link rel='stylesheet' id='wp-block-library-css' href='https://www.virtuozzo.com/company/blog/wp-includes/css/dist/block-library/style.min.css?ver=234b0ae5829e1731154f1aef449b958f' type='text/css' media='all' /><style id='wp-block-library-theme-inline-css' type='text/css'>.wp-block-audio :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio :where(figcaption){color:#ffffffa6}.wp-block-audio{margin:0 0 1em}.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}.wp-block-embed :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed :where(figcaption){color:#ffffffa6}.wp-block-embed{margin:0 0 1em}.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:#ffffffa6}:root :where(.wp-block-image figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme :root :where(.wp-block-image figcaption){color:#ffffffa6}.wp-block-image{margin:0 0 1em}.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote.has-text-align-right{border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote.has-text-align-center{border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote.is-style-plain{border:none}.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}:where(.wp-block-group.has-background){padding:1.25em 2.375em}.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table :where(figcaption){color:#ffffffa6}.wp-block-video :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video :where(figcaption){color:#ffffffa6}.wp-block-video{margin:0 0 1em}:root :where(.wp-block-template-part.has-background){margin-bottom:0;margin-top:0;padding:1.25em 2.375em}</style><style id='safe-svg-svg-icon-style-inline-css' type='text/css'>.safe-svg-cover{text-align:center}.safe-svg-cover .safe-svg-inside{display:inline-block;max-width:100%}.safe-svg-cover svg{height:100%;max-height:100%;max-width:100%;width:100%}</style><style id='classic-theme-styles-inline-css' type='text/css'>/*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}</style><style id='global-styles-inline-css' type='text/css'>:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--jelastic-link: #CB333B;--wp--preset--color--jelastic-green: #37be9b;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}</style><link rel='stylesheet' id='dashicons-css' href='https://www.virtuozzo.com/company/blog/wp-includes/css/dashicons.min.css?ver=234b0ae5829e1731154f1aef449b958f' type='text/css' media='all' /><link rel='stylesheet' id='post-views-counter-frontend-css' href='https://www.virtuozzo.com/company/blog/wp-content/plugins/post-views-counter/css/frontend.min.css?ver=1.4.7' type='text/css' media='all' /><link rel='stylesheet' id='style-css' href='https://www.virtuozzo.com/company/blog/wp-content/themes/salient/css/template-front-page.css?ver=08112024' type='text/css' media='all' /><link rel='stylesheet' id='tablepress-default-css' href='https://www.virtuozzo.com/company/blog/wp-content/plugins/tablepress/css/build/default.css?ver=2.4.4' type='text/css' media='all' /> <script type="text/javascript" id="post-views-counter-frontend-js-before" src="data:text/javascript;base64,dmFyIHB2Y0FyZ3NGcm9udGVuZD17Im1vZGUiOiJqcyIsInBvc3RJRCI6NDE1NzUsInJlcXVlc3RVUkwiOiJodHRwczpcL1wvd3d3LnZpcnR1b3p6by5jb21cL2NvbXBhbnlcL2Jsb2dcL3dwLWFkbWluXC9hZG1pbi1hamF4LnBocCIsIm5vbmNlIjoiZjY5YjM5MjA4ZSIsImRhdGFTdG9yYWdlIjoiY29va2llcyIsIm11bHRpc2l0ZSI6ITEsInBhdGgiOiJcL2NvbXBhbnlcL2Jsb2dcLyIsImRvbWFpbiI6IiJ9" defer></script> <script type="text/javascript" src="https://www.virtuozzo.com/company/blog/wp-content/plugins/post-views-counter/js/frontend.min.js?ver=1.4.7" id="post-views-counter-frontend-js" defer data-deferred="1"></script> <script type="text/javascript" src="https://www.virtuozzo.com/company/blog/assets/js/plugins/jquery.min.js" id="jquery-js"></script> <link rel="icon" href="https://www.virtuozzo.com/company/blog/wp-content/uploads/2022/05/cropped-android-chrome-512x512-1-32x32.png" sizes="32x32" /><link rel="icon" href="https://www.virtuozzo.com/company/blog/wp-content/uploads/2022/05/cropped-android-chrome-512x512-1-192x192.png" sizes="192x192" /><link rel="apple-touch-icon" href="https://www.virtuozzo.com/company/blog/wp-content/uploads/2022/05/cropped-android-chrome-512x512-1-180x180.png" /><meta name="msapplication-TileImage" content="https://www.virtuozzo.com/company/blog/wp-content/uploads/2022/05/cropped-android-chrome-512x512-1-270x270.png" /> <script src="data:text/javascript;base64,KGZ1bmN0aW9uKHcsZCxzLGwsaSl7d1tsXT13W2xdfHxbXTt3W2xdLnB1c2goeydndG0uc3RhcnQnOm5ldyBEYXRlKCkuZ2V0VGltZSgpLGV2ZW50OidndG0uanMnfSk7dmFyIGY9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXSxqPWQuY3JlYXRlRWxlbWVudChzKSxkbD1sIT0nZGF0YUxheWVyJz8nJmw9JytsOicnO2ouYXN5bmM9ITA7ai5zcmM9J2h0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcz9pZD0nK2krZGw7Zi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShqLGYpfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdkYXRhTGF5ZXInLCdHVE0tVzlQU1ZQTCcp" defer></script> </head><body class="home page-template-default page page-id-13389 logged-in admin-bar skin-default sidebar-none full_width tb_animation_on ready-view header-horizontal fixed-header-enabled footer-none footer-off filter-hover-none filter-featured-only sidemenu-active customize-support page-loaded has-builder tb_responsive_mode"> <noscript> <iframe data-lazyloaded="1" src="about:blank" data-src="https://www.googletagmanager.com/ns.html?id=GTM-W9PSVPL" height="0" width="0" style="display:none;visibility:hidden"></iframe><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W9PSVPL" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> </noscript><div class="wrapper"><div class="content"><div id="headerwrap"><link rel="stylesheet" href="../../../../../Downloads/Terms and Conditions _ Virtuozzo_files/themify-2664781409.css"><header id="header" class="tf_box pagewidth tf_clearfix" itemscope="itemscope" itemtype="https://schema.org/WPHeader"><div class="logo"> <a href="/"> <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMzQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAxMzQgMjQiPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9IiNmZmZmZmYiLz48L3N2Zz4=" data-src="/wp-content/themes/virtuozzo-child/assets/img/vz-main-logo.svg" alt="Virtuozzo" width="134" height="24"><noscript><img src="/wp-content/themes/virtuozzo-child/assets/img/vz-main-logo.svg" alt="Virtuozzo" width="134" height="24"></noscript> </a></div><div class="burger-menu"><div class="icon-left"></div><div class="icon-right"></div> <span class="screen-reader-text">Menu</span></div><div class="header-menu"><ul><li> <a href="/"> Products </a><ul class="sub-mega"><li class="sub-column"><ul class="sub-placeholders"><li class="active"><div class="top"><h5>Virtuozzo Hybrid Cloud</h5><p>Managed multi-tenant cloud for MSPs, providing easy access to IaaS and PaaS with lower cost, higher margins & better support than hyperscale public clouds.</p></div> <a href="/hybrid-cloud/registration/"> <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/virtuozzo-hybrid-cloud.png" alt="Virtuozzo Hybrid Cloud Free Trial" width="316" height="93"> </a></li><li><div class="top"><h5>Virtuozzo Hybrid Infrastructure</h5><p>Hyperconverged, multi-tenant cloud platform based on OpenStack: turnkey IaaS tuned for performance, scalability and low TCO, for traditional, cloud-native + ML/AI workloads.</p></div> <a href="/hybrid-infrastructure/#get-started"> <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/virtuozzo-hybrid-cloud.png" alt="Virtuozzo Hybrid Cloud Free Trial" width="316" height="93"> </a></li><li><div class="top"><h5>Virtuozzo Application Platform</h5><p>Elastic PaaS solution with DevOps integration: automates application deployment, scaling and management in private, public or multi-cloud environments.</p></div> <a href="/application-platform/#get-started"> <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/virtuozzo-cloud-platform-for-vmware.png" alt="Virtuozzo Hybrid Cloud Free Trial" width="316" height="93"> </a></li><li><div class="top"><h5>Virtuozzo Hybrid Server</h5><p>A streamlined, ultra-efficient virtualization platform: high density, high performance virtual machines, containers and storage, with user-friendly control panels.</p></div> <a href="/hybrid-server/#get-started"> <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/virtuozzo-cloud-platform-for-vmware.png" alt="Virtuozzo Hybrid Cloud Free Trial" width="316" height="93"> </a></li><li><div class="top"><h5>Virtuozzo Storage</h5><p>Software-Defined Storage with block, file, and object storage designed to deliver unparalleled performance, scalability, and economic efficiency for modern workloads</p></div> <a href="/software-defined-storage/#get-started"> <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/virtuozzo-cloud-platform-for-vmware.png" alt="Virtuozzo Storage" width="316" height="93"> </a></li></ul></li><li class="sub-column"><ul class="sub-show-placeholder"><li class="active"> <a href="/hybrid-cloud/"> <span><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/hybrid-cloud-ico.svg" alt="Hybrid Cloud" width="26" height="24"></span> Hybrid Cloud </a></li><li> <a href="/hybrid-infrastructure/"> <span><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/hybrid-infrastructure-ico.svg" alt="Hybrid Infrastructure" width="17" height="24"></span> Hybrid Infrastructure </a></li><li> <a href="/application-platform/"> <span><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/application-platform-ico.svg" alt="Application Platform" width="22" height="24"></span> Application Platform </a></li><li> <a href="/hybrid-server/"> <span><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/hybrid-server.svg" alt="Hybrid Server" width="20" height="24"></span> Hybrid Server </a></li><li> <a href="/software-defined-storage/"> <span><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/products-storage.svg" alt="Virtuozzo Storage" width="20" height="24"></span> Storage </a></li></ul></li><li class="sub-column grey-bg"><ul class="list-menu"><li> <a href="/documentation/"> Documentation </a></li><li> <a href="/product-updates/"> Product Updates </a></li><li> <a href="/all-supported-products/"> Support </a></li><li> <a id="watch-demos-btn" target="_blank" href="https://play.goconsensus.com/ac69c4585" class="external"> Watch Demos </a></li></ul></li></ul></li><li> <a href="/"> Solutions </a><ul id="solutions" class="sub-mega"><li class="sub-column"><ul><li class="mega-menu-item"> <a href="/vmware-alternative/"> <span class="ico"><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/vmware-management.svg" alt="VMware Alternative" width="25" height="24"></span> <span> VMware Alternative <span>Migrate to a modern, future-proof, high-performance cloud platform with cost-effective licensing</span> </span> </a></li><li class="mega-menu-item"> <a href="/multi-cloud-platform/"> <span class="ico"><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/multi-cloud.svg" alt="Multi-Cloud" width="31" height="24"></span> <span> Multi-Cloud <span>Build, deploy, manage and host apps on any infrastructure anywhere, with DevOps integration</span> </span> </a></li><li class="mega-menu-item"> <a href="/high-performance-storage/"> <span class="ico"><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/storage.svg" alt="Multi-Cloud" width="24" height="24"></span> <span> High-Performance Storage <span>Get fast, scalable, cost-efficient S3 storage with the best price-performance for Data Lakes</span> </span> </a></li><li class="mega-menu-item"> <a href="/paas-cloud-hosting/"> <span class="ico"><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/infrastructure-management.svg" alt="Infrastructure Management" width="24" height="24"></span> <span> Platform as a Service <span>Host, build, deploy, modernize & manage apps in efficient elastic cloud with DevOps integration</span> </span> </a></li><li class="mega-menu-item"> <a href="/database-as-a-service/"> <span class="ico"><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/databases.svg" alt="Databases" width="17" height="24"></span> <span> Database Management <span>Simplify database infrastructure, automate management, move to database as a service</span> </span> </a></li><li class="mega-menu-item"> <a href="/kubernetes-hosting/"> <span class="ico"><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/kubernetes.svg" alt="Kubernetes" width="25" height="24"></span> <span> Kubernetes <span>Simplify Kubernetes with optimized clustering, hosting and management </span> </span> </a></li><li class="mega-menu-item"> <a href="/application-platform-for-wordpress/"> <span class="ico"><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/wordpress-as-a-service.svg" alt="WordPress as a Service" width="24" height="24"></span> <span> WordPress <span>Make WordPress faster, more scalable, more resilient, and integrate with DevOps</span> </span> </a></li><li class="mega-menu-item"> <a href="/application-platform/marketplace/"> <span class="ico"><img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/application-marketplace.svg" alt="Application Marketplace" width="24" height="22"></span> <span> Application Marketplace <span>One-click installable applications, services and add-ons</span> </span> </a></li></ul></li></ul></li><li id="partners-menu"> <a href="/partner-program/"> Partners </a><ul class="sub-mega sub-small"><li class="sub-column"><ul class="mega-default"><li> <a href="/iaas-providers/"> IaaS Providers </a></li><li> <a href="/application-platform-partners/"> PaaS Providers </a></li><li> <a href="/technology-partnerships/"> Technology Partners </a></li><li> <a href="/distributors/"> Distributors </a></li><li> <a href="/resellers/"> Resellers </a></li></ul></li><li class="sub-column grey-bg"><ul class="mega-default"><li class="mega-static"> <a href="/partners/"> <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/partners.png" alt="support portal" width="600" height="400"> </a></li><li class="mega-call-to-action"> <a target="_blank" href="/partners/"> Partner with us <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/arrow.svg" alt="arrow" width="18" height="12"> </a></li></ul></li></ul></li><li id="support-menu"> <a href="/all-supported-products/"> Support </a><ul class="sub-mega sub-small"><li class="sub-column"><ul class="mega-default"><li> <a href="/all-supported-products/"> Product Support </a></li><li> <a href="/documentation/"> Documentation </a></li><li> <a href="/support-plans/"> Support plans </a></li><li> <a href="/professional-services/"> Professional Services </a></li></ul></li><li class="sub-column grey-bg"><ul class="mega-default"><li class="mega-static"> <a href="https://support.virtuozzo.com/" target="_blank"> <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/support.png" alt="support portal" width="600" height="400"> </a></li><li class="mega-call-to-action"> <a href="https://support.virtuozzo.com/" target="_blank"> Get support <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/arrow-external.svg" alt="arrow" width="9" height="9"> </a></li></ul></li></ul></li><li id="resources-menu"> <a href="/resources/"> Resources </a><ul class="sub-mega"><li class="sub-column"><ul class="mega-default"><li> <a href="/company/blog/"> Blog </a></li><li> <a href="/resources/#case-studies"> Case Studies </a></li><li> <a href="/resources/#data-sheets"> Datasheets </a></li><li> <a href="/resources/videos/"> Video </a></li></ul></li><li class="sub-column"><ul class="mega-default"><li> <a href="/documentation/"> Documentation </a></li><li> <a href="/resources/videos/?categories=webinars"> Webinars </a></li><li> <a href="/resources/#branding-materials"> Branding </a></li><li> <a href="/resources/"> All Resources </a></li></ul></li><li class="sub-column grey-bg"><ul><li class="mega-static"> <a href="/resources/#case-studies"> <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/case-studies-bg.svg" alt="support portal" width="300" height="200"> </a></li><li class="mega-call-to-action"> <a href="/resources/#case-studies"> Explore case studies <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/arrow.svg" alt="arrow" width="18" height="12"> </a></li></ul></li></ul></li><li id="company-menu"> <a href="/about/company/"> Company </a><ul class="sub-mega"><li class="sub-column"><ul class="mega-default"><li> <a href="/company/about/"> About </a></li><li> <a href="/company/leadership/"> Leadership </a></li><li> <a href="/news/"> News </a></li><li> <a href="/company/events/"> Events </a></li></ul></li><li class="sub-column"><ul class="mega-default"><li> <a target="_blank" href="https://virtuozzo.bamboohr.com/careers"> Careers </a></li><li> <a href="/company/open-source/"> Open Source </a></li><li> <a href="/company/contact/"> Contact </a></li></ul></li><li class="sub-column grey-bg"><ul><li class="mega-static"> <a href="/news/"> <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/company-bg.png" alt="support portal" width="600" height="400"> </a></li><li class="mega-call-to-action"> <a href="/news/"> Read latest news <img data-no-lazy="1" src="/wp-content/themes/virtuozzo-child/assets/img/header/arrow.svg" alt="arrow" width="18" height="12"> </a></li></ul></li></ul></li><li id="get-in-touch"> <a href="/company/contact/">GET IN TOUCH</a></li><li id="search-btn"> <a data-lazy="1" class="search-button tf_search_icon tf_vmiddle tf_inline_b" href="#"> <svg aria-label="Search" role="img" class="tf_fa tf-fas-search"> <use href="#tf-fas-search"></use> </svg> <span class="screen-reader-text">Search</span> </a></li></ul></div></header><style>div#headerwrap { z-index: 9999; } .tf-fas-search { fill: #A9A8B9; transition: .1s; } .search-button:hover .tf-fas-search { fill: #CB333B ; } .burger-menu { position: absolute; width: 30px; height: 50px; top: 0; right: 0; transition-duration: 0.2s; display: none; cursor: pointer; } .icon-left { transition-duration: 0.2s; position: absolute; height: 3px; width: 10px; top: 25px; right: 9px; background-color: #212121; border-radius: 2px 0 0 2px; } .icon-right { transition-duration: 0.2s; position: absolute; height: 3px; width: 10px; top: 25px; background-color: #212121; right: 0; border-radius: 0 2px 2px 0; } .burger-menu .icon-left:before { border-radius: 2px 0 0 2px; } .burger-menu .icon-left:after { border-radius: 2px 0 0 2px; } .burger-menu .icon-right:before { border-radius: 0 2px 2px 0; } .burger-menu .icon-right:after { border-radius: 0 2px 2px 0; } .burger-menu .icon-right:before, .burger-menu .icon-left:before, .burger-menu .icon-right:after, .burger-menu .icon-left:after { transition-duration: 0.2s; position: absolute; width: 10px; height: 3px; background-color: #212121; content: ""; top: -7px; } .burger-menu .icon-right:after, .burger-menu .icon-left:after { top: 7px; } .burger-menu.open .icon-right, .burger-menu.open .icon-left { transition-duration: 0.5s; background: transparent; } .burger-menu.open .icon-left:before { border-radius: 2px 2px 2px 2px; transform: rotateZ(45deg) scaleX(1.4) translate(2px, 2px); } .burger-menu.open .icon-left:after { border-radius: 2px 2px 2px 2px; transform: rotateZ(-45deg) scaleX(1.4) translate(2px, -2px) } .burger-menu.open .icon-right:before { border-radius: 2px 2px 2px 2px; transform: rotateZ(-45deg) scaleX(1.4) translate(-2px, 2px) } .burger-menu.open .icon-right:after { border-radius: 2px 2px 2px 2px; transform: rotateZ(45deg) scaleX(1.4) translate(-2px, -2px) } div#headerwrap { border-bottom: 1px solid rgba(237, 241, 254, 1); } #header .logo { display: flex; align-items: center; } .logo img { display: block; } #header { display: flex; justify-content: space-between; font-size: 18px; } #header:after { display: none; } #headerwrap { min-height: auto; } .header-menu ul { list-style: none; padding: 0; margin: 0; } .header-menu ul li { display: inline-block; margin: 0; } .header-menu * { box-sizing: border-box; } .header-menu ul li a { padding: 15px 8px; display: block; color: #000; min-width: 90px; text-align: center; } .header-menu ul li a.search-button { width: 38px; padding: 0; height: 38px; min-width: auto; display: inline-flex; align-items: center; justify-content: center; position: relative; top: -2px; pointer-events: all; margin: 0; } .header-menu ul li:hover > a { font-weight: 400; } ul.sub-mega { position: absolute; left: 0; overflow: hidden; top: calc(100% + 1px); width: 100%; border-radius: 0 0 25px 25px; background: #fff; display: flex; min-height: 200px; box-shadow: 0px 15px 25px 0px rgba(0, 0, 0, 0.15); display: none; } ul.sub-mega.sub-small { width: 66.66%; left: auto; right: 0; } ul.sub-mega li.sub-column ul.sub-show-placeholder li.active:before { content: ''; display: block; width: 10px; height: 10px; position: absolute; border: 1px solid #ccd9f7; transform: rotate(45deg); left: -6px; background: #fff; border-left: 0; border-bottom: 0; top: 0; bottom: 0; margin: auto; } .header-menu .sub-mega li { display: block; position: relative; } .header-menu .sub-mega li a { text-align: left; } .header-menu > ul > li:hover > ul { display: flex; } ul.sub-mega li.sub-column { width: 50%; } ul.sub-mega li.sub-column ul { padding: 40px 30px; height: 100%; } ul.sub-mega li.sub-column.grey-bg ul { padding: 30px 35px; } ul.sub-mega li.sub-column.grey-bg ul li.mega-static { margin: 0; } ul.sub-mega li.sub-column ul.sub-show-placeholder { padding-left: 0; padding-right: 0; } ul.sub-mega li.sub-column ul.sub-show-placeholder li { padding-left: 30px; padding-right: 30px; margin-bottom: 10px; } ul.sub-mega li li a { display: flex; align-items: center; padding: 15px; border-radius: 10px; } ul.sub-mega li li.active a, ul.sub-mega li li a:hover { background: #EDF1FE; font-weight: 500; } ul.sub-mega li.sub-column ul.sub-show-placeholder a img { vertical-align: middle; } ul.sub-mega li.sub-column ul.sub-show-placeholder a span { width: 26px; margin-right: 10px; } ul.sub-placeholders { border-right: 1px solid #CCD9F6; font-size: 16px; } .header-menu ul.sub-placeholders a { padding: 0; } .header-menu ul.sub-placeholders a:hover, .header-menu ul.sub-placeholders li.active a { background: none; } .header-menu .sub-placeholders li { display: none; } .header-menu .sub-placeholders li.active { display: flex; } ul.sub-placeholders li { flex-direction: column; height: 100%; justify-content: space-between; } .header-menu .grey-bg { background: #F8F9FF; } .header-menu h5 { text-transform: none; letter-spacing: normal; font-weight: 400; font-size: 18px; margin: 0 0 15px 0; width: 100%; } .header-menu .label { background: #CB333B; color: #fff; font-size: 13px; padding: 4px 10px; border-radius: 10px; text-transform: uppercase; font-weight: 600; margin: 0 5px 0 0; } .header-menu ul.list-menu a { padding: 0; } .header-menu ul.list-menu a:hover { background: none; } .header-menu ul.list-menu li { margin: 10px 15px; } .header-menu ul.list-menu { padding: 5px 0; } .header-menu > ul > li > a { pointer-events: none; } .header-menu a.external { position: relative !important; padding-right: 20px !important; } .header-menu a.external:after { display: block; content: ''; width: 9px; height: 9px; position: absolute; right: 20px; top: 0; bottom: 0; margin: auto; opacity: 0; transition: .3s; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' viewBox='0 0 9 9' fill='none'%3E%3Cpath d='M8.75 1C8.75 0.585786 8.41421 0.25 8 0.25H1.25C0.835786 0.25 0.5 0.585786 0.5 1C0.5 1.41421 0.835786 1.75 1.25 1.75H7.25V7.75C7.25 8.16421 7.58579 8.5 8 8.5C8.41421 8.5 8.75 8.16421 8.75 7.75V1ZM0.46967 7.46967C0.176777 7.76256 0.176777 8.23744 0.46967 8.53033C0.762563 8.82322 1.23744 8.82322 1.53033 8.53033L0.46967 7.46967ZM7.46967 0.46967L0.46967 7.46967L1.53033 8.53033L8.53033 1.53033L7.46967 0.46967Z' fill='%23A80D15'/%3E%3C/svg%3E"); } .header-menu a.external:hover:after { opacity: 1; right: 0; } a#watch-demos-btn { position: relative; padding-left: 34px; margin-top: 30px; font-weight: 500; display: inline-block; } a#watch-demos-btn:hover { color: #A80D15; } a#watch-demos-btn:before { display: block; content: ''; width: 24px; height: 24px; position: absolute; left: 0; top: 0; bottom: 0; margin: auto; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M15.9602 11.5309L10.976 7.90777C10.8864 7.84249 10.7806 7.80325 10.6701 7.7944C10.5597 7.78555 10.4489 7.80742 10.3501 7.85761C10.2513 7.90779 10.1683 7.98433 10.1103 8.07875C10.0523 8.17317 10.0216 8.2818 10.0215 8.39261V15.6365C10.0211 15.7474 10.0516 15.8563 10.1096 15.951C10.1675 16.0457 10.2506 16.1224 10.3496 16.1726C10.4486 16.2228 10.5596 16.2445 10.6702 16.2353C10.7808 16.2261 10.8867 16.1864 10.976 16.1205L15.9602 12.5006C16.0372 12.4453 16.0999 12.3725 16.1432 12.2882C16.1865 12.2039 16.2091 12.1105 16.2091 12.0157C16.2091 11.921 16.1865 11.8275 16.1432 11.7432C16.0999 11.6589 16.0372 11.5861 15.9602 11.5309Z' fill='%2386A2ED'/%3E%3Cpath d='M12.002 0C5.37238 0 0 5.37238 0 12.002C0 18.6292 5.37238 24 12.002 24C18.63 24 24.0032 18.6284 24.0032 12.002C24.004 5.37238 18.63 0 12.002 0ZM12.002 21.9975C6.48105 21.9975 2.00486 17.5237 2.00486 12.002C2.00486 6.48264 6.48105 2.00326 12.002 2.00326C17.5222 2.00326 21.9975 6.48185 21.9975 12.002C21.9983 17.5237 17.5222 21.9975 12.002 21.9975Z' fill='%2386A2ED'/%3E%3C/svg%3E"); } a#watch-demos-btn:hover:before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M15.9602 11.5309L10.976 7.90777C10.8864 7.84249 10.7806 7.80325 10.6701 7.7944C10.5597 7.78555 10.4489 7.80742 10.3501 7.85761C10.2513 7.90779 10.1683 7.98433 10.1103 8.07875C10.0523 8.17317 10.0216 8.2818 10.0215 8.39261V15.6365C10.0211 15.7474 10.0516 15.8563 10.1096 15.951C10.1675 16.0457 10.2506 16.1224 10.3496 16.1726C10.4486 16.2228 10.5596 16.2445 10.6702 16.2353C10.7808 16.2261 10.8867 16.1864 10.976 16.1205L15.9602 12.5006C16.0372 12.4453 16.0999 12.3725 16.1432 12.2882C16.1865 12.2039 16.2091 12.1105 16.2091 12.0157C16.2091 11.921 16.1865 11.8275 16.1432 11.7432C16.0999 11.6589 16.0372 11.5861 15.9602 11.5309Z' fill='%23A80D15'/%3E%3Cpath d='M12.002 0C5.37238 0 0 5.37238 0 12.002C0 18.6292 5.37238 24 12.002 24C18.63 24 24.0032 18.6284 24.0032 12.002C24.004 5.37238 18.63 0 12.002 0ZM12.002 21.9975C6.48105 21.9975 2.00486 17.5237 2.00486 12.002C2.00486 6.48264 6.48105 2.00326 12.002 2.00326C17.5222 2.00326 21.9975 6.48185 21.9975 12.002C21.9983 17.5237 17.5222 21.9975 12.002 21.9975Z' fill='%23A80D15'/%3E%3C/svg%3E"); } #solutions .sub-column { width: 100%; } #solutions .sub-column ul { justify-content: flex-start; } #solutions ul li { width: 33.333456%; } .header-menu ul li.mega-menu-item { width: 48%; margin-bottom: 15px; } .header-menu ul li.mega-menu-item.mega-large { width: 100%; } .header-menu .sub-mega .ico { width: 30px; flex: 0 0 30px; text-align: center; margin-right: 10px; display: flex; align-items: center; justify-content: center; margin-top: 5px; } .header-menu .sub-mega a { align-items: flex-start; padding-top: 9px; padding-bottom: 9px; } /*.header-menu .sub-mega a:hover {*/ /* font-weight: unset;*/ /*}*/ .header-menu .sub-mega a span { font-weight: 400; display: block; } .header-menu .sub-mega a span span { font-weight: 300; font-size: 16px; } ul#solutions ul { display: flex; justify-content: space-between; flex-wrap: wrap; } h5.menu-title { color: #656565; text-transform: uppercase; margin-bottom: 30px; } li#get-in-touch a { padding: 5px 20px; border: 1px solid #ca333b; border-radius: 5px; font-size: 15px; font-weight: 600; color: #ca333b; pointer-events: all; } li#get-in-touch a:hover { background: #ca333b; color: #fff; } li.btn-menu a { background: #ca333b; text-align: center !important; color: #fff !important; } li.btn-menu:hover a { background: #9B2637 !important; } li.mega-static img { width: 100%; margin-bottom: 5px; } li.mega-static a { padding: 0 !important; display: block !important; background: none !important; } li.mega-static { font-size: 15px; } ul.mega-default li { margin-left: -15px; margin-bottom: 10px; } li.mega-call-to-action a { background: none !important; color: #CB333B !important; font-weight: 500 !important; display: inline-flex !important; align-items: center !important; } li.mega-call-to-action a.external:after { right: 0; opacity: 1; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' viewBox='0 0 9 9' fill='none'%3E%3Cpath d='M8.75 1C8.75 0.585786 8.41421 0.25 8 0.25H1.25C0.835786 0.25 0.5 0.585786 0.5 1C0.5 1.41421 0.835786 1.75 1.25 1.75H7.25V7.75C7.25 8.16421 7.58579 8.5 8 8.5C8.41421 8.5 8.75 8.16421 8.75 7.75V1ZM0.46967 7.46967C0.176777 7.76256 0.176777 8.23744 0.46967 8.53033C0.762563 8.82322 1.23744 8.82322 1.53033 8.53033L0.46967 7.46967ZM7.46967 0.46967L0.46967 7.46967L1.53033 8.53033L8.53033 1.53033L7.46967 0.46967Z' fill='%23CB333B'/%3E%3C/svg%3E"); } ul.mega-default li:hover a { font-weight: 500 !important; } li.mega-call-to-action a img { margin: 2px 0 0 10px; transition: .2s; } li.mega-call-to-action a:hover img { margin-left: 5px; } /*#resources-menu .sub-column:first-child {*/ /* border-right: 1px solid #CCD9F6;*/ /*}*/ #resources-menu li.mega-call-to-action a { padding-left: 0; } li#get-in-touch { width: auto; margin-left: 7px; } li#search-btn { margin-left: 5px; width: auto; } .header-menu > ul > li { width: 96px; } li#resources-menu { width: 106px; } li#company-menu { width: 101px; } @media (max-width: 1024px) { .header-menu > ul > li { width: 100% !important; } #headerwrap { background: #F8F9FF; } .header-menu { position: fixed; height: 100vh; background: #fff; right: -320px; width: 320px; overflow: auto; padding-top: 0; transition: .2s; top: 50px; } .admin-bar.fixed-header-enabled #headerwrap .header-menu { top: 82px; } .header-menu.open { right: 0; } .burger-menu { display: block; } .header-menu > ul > li:hover > ul { display: none; } .header-menu > ul { padding-bottom: 140px; } li#get-in-touch { padding: 15px 20px 0; margin-left: 0; } li#get-in-touch a { width: 100%; text-align: center; } li#search-btn { margin-left: 0; padding: 10px 20px; } .header-menu > ul > li { padding: 0; position: relative; } .header-menu > ul > li:after { content: ''; display: block; width: 0; height: 0; padding: 4px; border: 1px solid transparent; border-right-color: #333; border-bottom-color: #333; transform: rotate(45deg); position: absolute; right: 25px; top: 21px; transition: .2s; } .header-menu > ul > li.open:after { transform: rotate(225deg); top: 26px; border-right-color: #000; border-bottom-color: #000; } ul.sub-mega { min-height: auto; } ul.sub-placeholders, ul.sub-mega li.sub-column ul.sub-show-placeholder li.active:before, li.sub-column.grey-bg { display: none; } #get-in-touch:after, #search-btn:after { display: none; } .header-menu > ul > li > a { font-weight: 600 !important; width: 75%; padding-left: 20px; } .header-menu > ul > li.open { background: #EDF1FE; } ul.sub-mega li.sub-column ul { padding: 0 20px; } ul.sub-mega li li.active a, ul.sub-mega li li a:hover { background: none; } ul.sub-mega a, ul.sub-mega span { font-weight: 300 !important; } .header-menu .sub-mega a { padding: 9px 0; } .header-menu ul li { display: block; cursor: pointer; } .header-menu > ul > li.open ul.sub-mega { display: block; } .header-menu ul li a { text-align: left; } #header { height: 50px; } ul.sub-mega { position: static; background: #F9FAFF; border-radius: 0; box-shadow: none; } ul.mega-default li { margin: 25px 0; } .header-menu .sub-mega a { padding: 0; background: none !important; } ul.sub-mega li.sub-column ul.sub-show-placeholder li { padding-left: 20px; padding-right: 20px; margin: 25px 0; } ul.sub-mega li.sub-column ul.sub-show-placeholder li:last-child { margin-bottom: 0 !important; } ul.sub-mega li.sub-column li:last-child, ul.sub-mega.sub-small li.sub-column li:last-child { margin-bottom: 0 !important; } ul.sub-mega li.sub-column:nth-child(2), ul.sub-mega.sub-small li.sub-column:nth-child(1), #solutions .sub-column { padding-bottom: 25px; } ul.sub-mega li.sub-column, ul.sub-mega.sub-small { width: 100%; } #solutions .sub-column ul { display: block; } #solutions ul li { width: 100%; margin: 25px 0; } .header-menu .sub-mega a span span { display: none; } .header-menu .sub-mega .ico { margin-top: 0; } } @media (max-width: 782px) { /*.admin-bar.fixed-header-enabled #headerwrap .header-menu {*/ /* top: 96px;*/ /*}*/ } @media (max-width: 600px) { .admin-bar.fixed-header-enabled #headerwrap .header-menu { top: 50px; } }</style> <script src="data:text/javascript;base64,JChkb2N1bWVudCkub24oJ21vdXNlZW50ZXInLCcuc3ViLXNob3ctcGxhY2Vob2xkZXIgbGknLGZ1bmN0aW9uKCl7JCh0aGlzKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTskKHRoaXMpLmFkZENsYXNzKCdhY3RpdmUnKTt2YXIgaW5kZXg9JCh0aGlzKS5pbmRleCgpOyQoJy5zdWItcGxhY2Vob2xkZXJzIGxpJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOyQoJy5zdWItcGxhY2Vob2xkZXJzJykuZmluZCgnbGknKS5lcShpbmRleCkuYWRkQ2xhc3MoJ2FjdGl2ZScpfSk7JChkb2N1bWVudCkub24oJ2NsaWNrJywnLmJ1cmdlci1tZW51JyxmdW5jdGlvbigpeyQodGhpcykudG9nZ2xlQ2xhc3MoJ29wZW4nKTskKCcuaGVhZGVyLW1lbnUnKS50b2dnbGVDbGFzcygnb3BlbicpfSk7JChkb2N1bWVudCkub24oJ2NsaWNrJywnLmhlYWRlci1tZW51ID4gdWwgPiBsaScsZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50LnRhcmdldCE9dGhpcyl7cmV0dXJufQokKHRoaXMpLnNpYmxpbmdzKCkucmVtb3ZlQ2xhc3MoJ29wZW4nKTskKHRoaXMpLnRvZ2dsZUNsYXNzKCdvcGVuJyl9KQ==" defer></script> </div><div class="main-content container"><div class="row"><div class="col-lg-9"><div class="single--heading"><h1 class="entry-title">Automatic WildFly Clustering in Managed Domain Mode and Scaling inside Containers</h1> <span class="meta-author vcard author"> <span class="fn"><a href="https://www.virtuozzo.com/company/blog/author/tetiana/" title="Posts by Tetiana Fydorenchyk" rel="author">Tetiana Fydorenchyk</a></span> | <span class="meta-date date updated">May 6, 2021</span> | <a href="https://www.virtuozzo.com/company/blog/category/containers/" rel="category tag">Containers</a>, <a href="https://www.virtuozzo.com/company/blog/category/devops-paas/" rel="category tag">DevOps PaaS</a>, <a href="https://www.virtuozzo.com/company/blog/category/installer/" rel="category tag">Installer</a>, <a href="https://www.virtuozzo.com/company/blog/category/java/" rel="category tag">Java</a> | <a href="https://www.virtuozzo.com/company/blog/tag/auto-clustering/" rel="tag">auto-clustering</a>, <a href="https://www.virtuozzo.com/company/blog/tag/auto-scaling/" rel="tag">auto-scaling</a>, <a href="https://www.virtuozzo.com/company/blog/tag/java-ee-hosting/" rel="tag">Java EE hosting</a>, <a href="https://www.virtuozzo.com/company/blog/tag/java-hosting/" rel="tag">Java hosting</a>, <a href="https://www.virtuozzo.com/company/blog/tag/micro-clustering/" rel="tag">micro clustering</a>, <a href="https://www.virtuozzo.com/company/blog/tag/wildfly-clustering/" rel="tag">wildfly clustering</a>, <a href="https://www.virtuozzo.com/company/blog/tag/wildfly-hosting/" rel="tag">WildFly hosting</a>, <a href="https://www.virtuozzo.com/company/blog/tag/wildfly-in-domain-mode/" rel="tag">wildfly in domain mode</a>, <a href="https://www.virtuozzo.com/company/blog/tag/wildfly-managed-domain/" rel="tag">wildfly managed domain</a>, <a href="https://www.virtuozzo.com/company/blog/tag/wildfly-scaling/" rel="tag">wildfly scaling</a> </span></div><div class="page-content"><p style="text-align: justify;">Nowadays it’s easy to get up and running WildFly standalone server in a container. But what if you need to enable clustering in Managed Domain mode which is one of the key features of <a href="https://jakarta.ee/">Jakarta EE</a> in general. That is not so easy task. Some people claim it’s nearly impossible in the cloud-native world, because Jakarta EE clustering was designed before the containers era. The old question at the official <a href="https://developer.jboss.org/thread/249340" target="_blank" rel="noopener noreferrer">developers portal</a> is still not answered with any adequate instruction that just proves the presence of the issue.</p><p style="text-align: justify;">As a result, developers go with standalone nodes as the only available production-ready option in containers integrating clustering and management features from the 3rd party solutions. Or they just keep running applications in VMs facing complexity that makes migration nearly impossible.</p><p style="text-align: justify;">But what developers should do if they are looking for a solution to migrate from VMs to containers already existing and nicely working Jakarta EE clusters in managed domain mode?</p><p style="text-align: justify;">Till this time there were very few examples (e.g. for <a href="https://www.virtuozzo.com/company/blog/glassfish-payara-auto-clustering-cloud-hosting/?utm_source=blog-wildfly-managed-domain" target="_blank" rel="noopener noreferrer">GlassFish</a> and <a href="https://www.virtuozzo.com/company/blog/migration-from-vms-to-containers/?utm_source=blog-wildfly-managed-domain" target="_blank" rel="noopener noreferrer">WebLogic</a>) how to run and scale Java application servers in managed domain mode within containers correctly. In most cases, lack of knowledge or even the absence of a working solution for the domain mode in containers leads to the loss of integrated Jakarta EE clustering features that just become obsolete.</p><p style="text-align: justify;">But managed domain mode is still awesome! A vast portion of mission-critical and large-scale applications such as banking and billing are still running on Jakarta EE in VMs. Integrated <a href="https://jakartablogs.ee/">Jakarta EE</a> clustering provides functionality that people are interested in, including high-availability and automated deployment among distributed Java application servers regardless of underlying infrastructure, and, of course, Admin Panel to manage your cluster using a nice UI. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MzAiIGhlaWdodD0iNTg0IiB2aWV3Qm94PSIwIDAgNzMwIDU4NCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" fetchpriority="high" decoding="async" class="aligncenter wp-image-41419" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/admin-console-hal.png" alt="wildfly admin panel ui" width="730" height="584" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/admin-console-hal.png 845w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/admin-console-hal-300x240.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/admin-console-hal-768x614.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/admin-console-hal-206x165.png 206w" data-sizes="(max-width: 730px) 100vw, 730px" /><noscript><img fetchpriority="high" decoding="async" class="aligncenter wp-image-41419" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/admin-console-hal.png" alt="wildfly admin panel ui" width="730" height="584" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/admin-console-hal.png 845w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/admin-console-hal-300x240.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/admin-console-hal-768x614.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/admin-console-hal-206x165.png 206w" sizes="(max-width: 730px) 100vw, 730px" /></noscript>To get familiar with benefits of natively integrated clustering technology please refer to a good article “<a href="https://www.theserverside.com/news/1364410/Under-the-Hood-of-J2EE-Clustering" target="_blank" rel="noopener noreferrer">Under the Hood of J2EE Clustering</a>”. Merging this rich functionality with ready-to-go containers provides a huge benefit by saving time and efforts of the team, and enables fast iterations as the majority of developers do not deal with containers or VMs if environment setup is fully automated.</p><h2 style="text-align: justify;">When, What and Why Managed Domain Mode?</h2><p style="text-align: justify;">Every WildFly standalone server has its own admin console and is managed independently. At the same time, WildFly multiple instances running in the domain mode share the same management interface called domain controller. So you can issue commands and deploy applications to all running WildFly servers from one place. The official documentation suggests considering the domain mode for:</p><ul style="text-align: justify;"><li style="margin-bottom: 0;">Multi-server production environments with the ability to use centralized management capabilities that a managed domain provides.</li><li style="margin-bottom: 0;">For advanced development scenarios, i.e. those involving interaction between multiple WildFly instances.</li></ul><p style="text-align: justify;">We can easily run one big service or several small interrelated services per cluster running in managed domain mode. Deployment to such cluster is automated so applications running in VMs can be <a href="https://searchcloudcomputing.techtarget.com/definition/cloud-migration" target="_blank" rel="noopener noreferrer">lifted and shifted to containers without re-architecturing</a>. It provides a very convenient way for replicating on-premise applications in the cloud while avoiding costly and time-consuming re-design. As a result, the legacy applications can benefit from cost-efficiency of cloud-native features such as elastic compute and auto-scaling.</p><h2 style="text-align: justify;">Complexity of Managed Domain Topology</h2><p style="text-align: justify;">Let’s have a look at the topology of WildFly cluster in managed domain mode, which is illustrated in the official documentation. The illustration below provides a sense of the complexity of managed domain architecture. This scheme is considered as a classical Jakarta EE topology in VMs, or so-called “legacy dragon” which should be tamed and decomposed properly into containers. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NDUiIGhlaWdodD0iNDEyIiB2aWV3Qm94PSIwIDAgNjQ1IDQxMiI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter size-full wp-image-28855" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/complexity-of-managed-domain-topology.png" alt="complex managed domain topology" width="645" height="412" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/complexity-of-managed-domain-topology.png 645w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/complexity-of-managed-domain-topology-300x192.png 300w" data-sizes="(max-width: 645px) 100vw, 645px" /><noscript><img decoding="async" class="aligncenter size-full wp-image-28855" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/complexity-of-managed-domain-topology.png" alt="complex managed domain topology" width="645" height="412" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/complexity-of-managed-domain-topology.png 645w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/complexity-of-managed-domain-topology-300x192.png 300w" sizes="(max-width: 645px) 100vw, 645px" /></noscript>We adjusted this illustration for a little bit better view of the topology, as well as to show additional “hidden” Java processes inside each VM or bare metal host. This will help us during the further decomposition. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MjciIGhlaWdodD0iMzg5IiB2aWV3Qm94PSIwIDAgNzI3IDM4OSI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter size-full wp-image-28751" style="margin-bottom: 0;" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/java-processes-inside-each-vm-or-bare-metal-host.png" alt="java processes inside VM" width="727" height="389" /><noscript><img decoding="async" class="aligncenter size-full wp-image-28751" style="margin-bottom: 0;" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/java-processes-inside-each-vm-or-bare-metal-host.png" alt="java processes inside VM" width="727" height="389" /></noscript></p><ul style="text-align: justify;"><li style="margin-bottom: 0;"><b>Worker Server</b> is a JVM process where the enterprise Jakarta EE applications are deployed and handle requests.</li><li style="margin-bottom: 0;"><b>Host Controller</b> is a JVM process that is responsible for configuring Worker Servers, and synchronization between the Servers and Domain Controller.</li><li style="margin-bottom: 0;"><b>Process Controller</b> is a JVM process that is responsible for a lifecycle (start/stop/restart) of Worker Servers. It is absent in the original scheme but it is important to take into account while decomposition.</li><li style="margin-bottom: 0;"><b>Domain Controller</b> is a type of Host Controller that is designated to act as master admin server (or orchestrator) at the cluster running in managed domain mode and provides a single pane for managing distributed Worker Servers.</li></ul><h2 style="text-align: justify;">Running Multiple Processes in an Application Container</h2><p style="text-align: justify;">As we can see from the illustration above, the VM1 contains 2 Java processes inside: Process Controller and Domain Controller. And every other VM contains at least 3 Java processes (or more, depending on how many server instances you want to run inside every host): Process Controller, Host Controllers and Worker Server(s).</p><p style="text-align: justify;">That’s not easy to run it in containers. Such topology conflicts with the anti-pattern in the application containers world. The <a href="https://docs.docker.com/config/containers/multi-service_container/" target="_blank" rel="noopener noreferrer">official Docker documentation</a> warns us about running multiple Java processes inside the same container:</p><div style="border: 1px solid rgba(170, 170, 170, 0.431373); border-radius: 4px; padding: 10px; margin: 5px 0px 10px; color: #222222; text-align: justify; background-color: #ffffff;"><p style="text-align: justify;"><i>“It’s ok to have multiple processes, but to get the most benefit out of Docker, avoid one container being responsible for multiple aspects of your overall application.”</i></p></div><p style="text-align: justify; padding-bottom: 0;">So users feel confused when they get the message to perform this “seems-unreliable” action. Previous bad experience led to loss of trust and it is rather reasonable.</p><h2 style="text-align: justify;">Running Multiple Processes in a System Container</h2><p style="text-align: justify;">However, the situation is not so bad. If configured properly, the domain mode works perfectly inside <a href="https://www.excella.com/insights/application-vs-system-containers" target="_blank" rel="noopener noreferrer">system containers</a>. They can handle as many processes as required inside one container. This kind of containers drastically simplifies migration from heavy VMs to a much lightweight virtualization. And there are two well-known options on the market <a href="https://linuxcontainers.org/lxd/" target="_blank" rel="noopener noreferrer">LXD</a> and <a href="https://openvz.org" target="_blank" rel="noopener noreferrer">OpenVZ</a>. Moreover, system containers and application containers are complementary, the combination of both provides <a href="https://linux.softpedia.com/blog/infographic-lxd-machine-containers-from-ubuntu-linux-492602.shtml" target="_blank" rel="noopener noreferrer">VM characteristics for dockerized applications</a>.</p><p style="text-align: justify;">Jelastic PaaS implemented support of system containers at early days of 2011 and can confirm that many customers are happy with running multiple processes inside the same container in production when it’s required.</p><p style="text-align: justify;">Moreover, system containers provide a better resource and security isolation compared to the application containers, so cloud providers can safely host applications of different projects on the same infrastructure reducing the cost of ownership and complexity of management. As a side effect, system containers are starting up a little bit slower compared to the application containers, but they are still much slimmer and faster than VMs.</p><h2 style="text-align: justify;">Decomposition and Building Modified Topology</h2><p style="text-align: justify;">We are ready to start our decomposition journey. The first rule is in the spirit of microservices - it is always better to put only one Worker Server per one container. Also, we create only one server group per domain for all containers inside the cluster. Such simple adjustments will give tremendous and desired flexibility for scaling each Worker Server vertically, gaining <a href="https://www.virtuozzo.com/company/blog/stop-overpaying-for-java-cloud-hosting-resources/?utm_source=blog-wildfly-managed-domain" target="_blank" rel="noopener noreferrer">resource usage efficiency</a>, and scaling the group of containers horizontally by adding new instances on demand. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1OTciIGhlaWdodD0iMzc4IiB2aWV3Qm94PSIwIDAgNTk3IDM3OCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter size-full wp-image-28755" style="margin-bottom: 0;" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/decomposition-and-building-modified-topology.png" alt="resource usage efficiency" width="597" height="378" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/decomposition-and-building-modified-topology.png 597w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/decomposition-and-building-modified-topology-300x190.png 300w" data-sizes="(max-width: 597px) 100vw, 597px" /><noscript><img decoding="async" class="aligncenter size-full wp-image-28755" style="margin-bottom: 0;" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/decomposition-and-building-modified-topology.png" alt="resource usage efficiency" width="597" height="378" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/decomposition-and-building-modified-topology.png 597w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/decomposition-and-building-modified-topology-300x190.png 300w" sizes="(max-width: 597px) 100vw, 597px" /></noscript>Please note that each container for handling incoming requests runs 3 Java processes: Worker Server (WS), Host Controller (HC) and Process Controller (PC). And admin container that manages the cluster runs 2 Java processes: Domain Controller (DC) and Process Controller (PC).</p><h2 style="text-align: justify;">WildFly Managed Domain in Jelastic</h2><p style="text-align: justify;">In order to facilitate the migration of legacy Jakarta EE applications from VMs to containers, we created a special embedded <a href="https://docs.jelastic.com/auto-clustering/">Auto-Clustering</a> mode for WildFly that can be enabled for new instances.</p><p style="text-align: justify;">The main advantage of this solution is an automatic interconnection of multiple application servers upon the environment topology change, which implements the commonly used clustering configuration in managed domain mode.</p><p style="text-align: justify;">Below you’ll see how standalone WildFly transforms into the cluster by means of Auto-Clustering feature and a simple <a href="https://docs.jelastic.com/automatic-horizontal-scaling/?utm_source=blog-wildfly-managed-domain" target="_blank" rel="noopener noreferrer">horizontal scaling</a> with no manual configurations required. Also, we’ll describe infrastructure topology specifics and the way to get the appropriate development and production environments up and running inside Jelastic PaaS.</p><h2 style="text-align: justify;">Create Standalone WildFly</h2><p style="text-align: justify;">With Jelastic, the required topology can be built using a convenient wizard:</p><p>1. Create a new environment <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1NzYiIGhlaWdodD0iNjkiIHZpZXdCb3g9IjAgMCA1NzYgNjkiPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9IiNmZmZmZmYiLz48L3N2Zz4=" decoding="async" class="aligncenter size-full wp-image-28759" style="margin-bottom: 0;" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/create-new-wildfly-environment.png" alt="create new wildfly environment" width="576" height="69" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/create-new-wildfly-environment.png 576w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/create-new-wildfly-environment-300x36.png 300w" data-sizes="(max-width: 576px) 100vw, 576px" /><noscript><img decoding="async" class="aligncenter size-full wp-image-28759" style="margin-bottom: 0;" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/create-new-wildfly-environment.png" alt="create new wildfly environment" width="576" height="69" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/create-new-wildfly-environment.png 576w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/create-new-wildfly-environment-300x36.png 300w" sizes="(max-width: 576px) 100vw, 576px" /></noscript></p><ul style="text-align: justify;"><li style="margin-bottom: 0;">Choose a proper version of WildFly</li><li style="margin-bottom: 0;">Set up vertical scaling limits</li><li style="margin-bottom: 0;">Change the name of environment if needed (e.g. <b>wildfly</b>)</li></ul><p style="text-align: justify;"><img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDc2IiBoZWlnaHQ9IjY2NyIgdmlld0JveD0iMCAwIDEwNzYgNjY3Ij48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmZmZmZmIi8+PC9zdmc+" decoding="async" class="aligncenter wp-image-41423 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env.png" alt="standalone wildfly via wizard" width="1076" height="667" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env.png 1076w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env-300x186.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env-1024x635.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env-768x476.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env-266x165.png 266w" data-sizes="(max-width: 1076px) 100vw, 1076px" /><noscript><img decoding="async" class="aligncenter wp-image-41423 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env.png" alt="standalone wildfly via wizard" width="1076" height="667" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env.png 1076w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env-300x186.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env-1024x635.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env-768x476.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/new-env-266x165.png 266w" sizes="(max-width: 1076px) 100vw, 1076px" /></noscript>You will receive an email confirmation of environment creation with the credentials to the Admin Panel. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NTkiIGhlaWdodD0iNDcwIiB2aWV3Qm94PSIwIDAgNjU5IDQ3MCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter wp-image-41425 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/mail.png" alt="add wildfly node" width="659" height="470" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/mail.png 659w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/mail-300x214.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/mail-231x165.png 231w" data-sizes="(max-width: 659px) 100vw, 659px" /><noscript><img decoding="async" class="aligncenter wp-image-41425 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/mail.png" alt="add wildfly node" width="659" height="470" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/mail.png 659w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/mail-300x214.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/mail-231x165.png 231w" sizes="(max-width: 659px) 100vw, 659px" /></noscript>2. Now, you are ready to deploy the application to the just provisioned standalone server.</p><p style="text-align: justify;">In the Deployment manager, click <b>Deploy to… </b>button. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMTA5IiBoZWlnaHQ9IjIzNyIgdmlld0JveD0iMCAwIDExMDkgMjM3Ij48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmZmZmZmIi8+PC9zdmc+" decoding="async" class="aligncenter size-full wp-image-28739" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deployment-manager-1.png" alt="deploy the application" width="1109" height="237" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deployment-manager-1.png 1109w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deployment-manager-1-300x64.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deployment-manager-1-1024x219.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deployment-manager-1-768x164.png 768w" data-sizes="(max-width: 1109px) 100vw, 1109px" /><noscript><img decoding="async" class="aligncenter size-full wp-image-28739" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deployment-manager-1.png" alt="deploy the application" width="1109" height="237" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deployment-manager-1.png 1109w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deployment-manager-1-300x64.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deployment-manager-1-1024x219.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deployment-manager-1-768x164.png 768w" sizes="(max-width: 1109px) 100vw, 1109px" /></noscript>Specify the <b>Context</b> as required or just leave default ROOT value. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NzciIGhlaWdodD0iMjcwIiB2aWV3Qm94PSIwIDAgNDc3IDI3MCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter wp-image-41427 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deploy.png" alt="deploy java application" width="477" height="270" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deploy.png 477w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deploy-300x170.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deploy-292x165.png 292w" data-sizes="(max-width: 477px) 100vw, 477px" /><noscript><img decoding="async" class="aligncenter wp-image-41427 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deploy.png" alt="deploy java application" width="477" height="270" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deploy.png 477w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deploy-300x170.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/deploy-292x165.png 292w" sizes="(max-width: 477px) 100vw, 477px" /></noscript>Make sure that your application is up and running, pressing <b>Open in browser</b> near the created environment. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MTUiIGhlaWdodD0iMjExIiB2aWV3Qm94PSIwIDAgODE1IDIxMSI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter wp-image-41429 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/oib.png" alt="create wildfly environment" width="815" height="211" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/oib.png 815w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/oib-300x78.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/oib-768x199.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/oib-315x82.png 315w" data-sizes="(max-width: 815px) 100vw, 815px" /><noscript><img decoding="async" class="aligncenter wp-image-41429 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/oib.png" alt="create wildfly environment" width="815" height="211" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/oib.png 815w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/oib-300x78.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/oib-768x199.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/oib-315x82.png 315w" sizes="(max-width: 815px) 100vw, 815px" /></noscript>If you log in to your container via built-in <a href="https://docs.jelastic.com/web-ssh-client/?utm_source=blog-wildfly-managed-domain" target="_blank" rel="noopener noreferrer">Web SSH client</a>, you’ll see only one running process of <b>Standalone</b> server. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4NjMiIGhlaWdodD0iMjEyIiB2aWV3Qm94PSIwIDAgODYzIDIxMiI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter wp-image-41431 size-full" style="margin-bottom: 0;" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/ssh1.png" alt="web ssh client" width="863" height="212" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/ssh1.png 863w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/ssh1-300x74.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/ssh1-768x189.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/ssh1-315x77.png 315w" data-sizes="(max-width: 863px) 100vw, 863px" /><noscript><img decoding="async" class="aligncenter wp-image-41431 size-full" style="margin-bottom: 0;" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/ssh1.png" alt="web ssh client" width="863" height="212" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/ssh1.png 863w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/ssh1-300x74.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/ssh1-768x189.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/ssh1-315x77.png 315w" sizes="(max-width: 863px) 100vw, 863px" /></noscript></p><h2 style="text-align: justify;">Get Clustered WildFly with Managed Domain Mode</h2><p style="text-align: justify;">WildFly clustering with domain mode is configured automatically by means of Auto-Clustering feature. Once it was enabled the servers can be scaled manually or automatically.</p><ul style="text-align: justify;"><li style="margin-bottom: 0;"><b>Manually</b></li></ul><p style="text-align: justify;">Add new servers via wizard while creating the environment or by <a href="https://docs.jelastic.com/dashboard-guide/?utm_source=blog-wildfly-managed-domain" target="_blank" rel="noopener noreferrer">changing its topology</a>. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MTUiIGhlaWdodD0iMjExIiB2aWV3Qm94PSIwIDAgODE1IDIxMSI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter wp-image-41433 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/change-topology.png" alt="change wildfly environment topology" width="815" height="211" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/change-topology.png 815w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/change-topology-300x78.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/change-topology-768x199.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/change-topology-315x82.png 315w" data-sizes="(max-width: 815px) 100vw, 815px" /><noscript><img decoding="async" class="aligncenter wp-image-41433 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/change-topology.png" alt="change wildfly environment topology" width="815" height="211" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/change-topology.png 815w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/change-topology-300x78.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/change-topology-768x199.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/change-topology-315x82.png 315w" sizes="(max-width: 815px) 100vw, 815px" /></noscript>Just refer to the application server layer within the left-side environment panel, enable Auto-Clustering mode and add <b>(+) </b>nodes within the <a href="https://docs.jelastic.com/horizontal-scaling/?utm_source=blog-wildfly-managed-domain" target="_blank" rel="noopener noreferrer">Horizontal Scaling</a> frame. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDc3IiBoZWlnaHQ9IjY2NyIgdmlld0JveD0iMCAwIDEwNzcgNjY3Ij48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmZmZmZmIi8+PC9zdmc+" decoding="async" class="aligncenter wp-image-41459 size-full" style="margin-bottom: 0;" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11.png" alt="wildfly horizontal scaling" width="1077" height="667" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11.png 1077w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11-300x186.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11-1024x634.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11-768x476.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11-266x165.png 266w" data-sizes="(max-width: 1077px) 100vw, 1077px" /><noscript><img decoding="async" class="aligncenter wp-image-41459 size-full" style="margin-bottom: 0;" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11.png" alt="wildfly horizontal scaling" width="1077" height="667" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11.png 1077w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11-300x186.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11-1024x634.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11-768x476.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/autocluster11-266x165.png 266w" sizes="(max-width: 1077px) 100vw, 1077px" /></noscript></p><ul style="text-align: justify;"><li style="margin-bottom: 0;"><b>Automatically</b></li></ul><p>The number of servers can be changed automatically by setting up <a href="https://docs.jelastic.com/automatic-horizontal-scaling/?utm_source=blog-wildfly-managed-domain" target="_blank" rel="noopener noreferrer">scaling triggers</a> based on the resource consumption within <b>Settings > Auto Horizontal Scaling</b>. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjY1IiBoZWlnaHQ9IjU3MyIgdmlld0JveD0iMCAwIDEyNjUgNTczIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmZmZmZmIi8+PC9zdmc+" decoding="async" class="aligncenter wp-image-41437 size-full" style="margin-bottom: 0;" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1.png" alt="wildfly horizontal scaling" width="1265" height="573" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1.png 1265w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1-300x136.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1-1024x464.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1-768x348.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1-315x143.png 315w" data-sizes="(max-width: 1265px) 100vw, 1265px" /><noscript><img decoding="async" class="aligncenter wp-image-41437 size-full" style="margin-bottom: 0;" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1.png" alt="wildfly horizontal scaling" width="1265" height="573" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1.png 1265w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1-300x136.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1-1024x464.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1-768x348.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/triggers1-315x143.png 315w" sizes="(max-width: 1265px) 100vw, 1265px" /></noscript></p><div style="border: 1px solid rgba(229, 246, 253); border-radius: 4px; padding: 10px; margin: 5px 0px 5px; color: #222222; text-align: justify; background-color: #e5f6fd;"><b>Note</b>:</p><ul style="margin-bottom: 0;"><li style="margin-bottom: 0;">during the initial transformation from standalone to domain mode, your application will be down for about 1 minute</li><li style="margin-bottom: 0;">all the further scaling changes happen with no downtime</li><li style="margin-bottom: 0;">if you enable Auto-Clustering and start from 2 instances at once, the domain mode will be created from the beginning, so no downtime will happen during the scaling</li></ul></div><p style="text-align: justify;">Afterwards, as the scaling is completed (manual or automatic), all WildFly instances will join the cluster, working in operation mode of WildFly Managed Domain. Domain Controller and Load Balancer are added automatically as required components of the cluster.</p><p style="text-align: justify;">Upon this scaling, the previously deployed application is also automatically redeployed to the rest of WildFly instances of the cluster. Also, database connection pool configurations and other config customizations, previously made via WildFly admin console, are replicated across the whole application server layer.</p><p style="text-align: justify;">You can check how WildFly topology is changed from standalone mode to managed domain cluster: <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MjEiIGhlaWdodD0iNDQwIiB2aWV3Qm94PSIwIDAgODIxIDQ0MCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter wp-image-41441 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology.png" alt="wildfly environment running" width="821" height="440" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology.png 821w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-300x161.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-768x412.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-308x165.png 308w" data-sizes="(max-width: 821px) 100vw, 821px" /><noscript><img decoding="async" class="aligncenter wp-image-41441 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology.png" alt="wildfly environment running" width="821" height="440" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology.png 821w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-300x161.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-768x412.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-308x165.png 308w" sizes="(max-width: 821px) 100vw, 821px" /></noscript>Worker Nodes run 3 processes instead of one as it was in standalone mode:</p><ul><li>Server:worker</li><li style="margin-bottom: 0;">Process Controller</li><li style="margin-bottom: 0;">Host Controller <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMzM2IiBoZWlnaHQ9IjU5NSIgdmlld0JveD0iMCAwIDEzMzYgNTk1Ij48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmZmZmZmIi8+PC9zdmc+" decoding="async" class="aligncenter wp-image-41443 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes.png" alt="web ssh wildfly node" width="1336" height="595" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes.png 1336w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes-300x134.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes-1024x456.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes-768x342.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes-315x140.png 315w" data-sizes="(max-width: 1336px) 100vw, 1336px" /><noscript><img decoding="async" class="aligncenter wp-image-41443 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes.png" alt="web ssh wildfly node" width="1336" height="595" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes.png 1336w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes-300x134.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes-1024x456.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes-768x342.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/processes-315x140.png 315w" sizes="(max-width: 1336px) 100vw, 1336px" /></noscript></li></ul><p>And Domain Controller node has two processes running:</p><ul><li style="margin-bottom: 0;">Process Controller</li><li style="margin-bottom: 0;">Host Controller <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMzM0IiBoZWlnaHQ9IjM1MSIgdmlld0JveD0iMCAwIDEzMzQgMzUxIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmZmZmZmIi8+PC9zdmc+" decoding="async" class="aligncenter wp-image-41445 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes.png" alt="Domain Controller node" width="1334" height="351" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes.png 1334w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes-300x79.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes-1024x269.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes-768x202.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes-315x83.png 315w" data-sizes="(max-width: 1334px) 100vw, 1334px" /><noscript><img decoding="async" class="aligncenter wp-image-41445 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes.png" alt="Domain Controller node" width="1334" height="351" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes.png 1334w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes-300x79.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes-1024x269.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes-768x202.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/domain-processes-315x83.png 315w" sizes="(max-width: 1334px) 100vw, 1334px" /></noscript></li></ul><p>Also, the topology changes are synchronized and shown within WildFly Admin Panel. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMTY4IiBoZWlnaHQ9IjU5OSIgdmlld0JveD0iMCAwIDExNjggNTk5Ij48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmZmZmZmIi8+PC9zdmc+" decoding="async" class="aligncenter wp-image-41447 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka.png" alt="wildfly admin panel" width="1168" height="599" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka.png 1168w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka-300x154.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka-1024x525.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka-768x394.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka-315x162.png 315w" data-sizes="(max-width: 1168px) 100vw, 1168px" /><noscript><img decoding="async" class="aligncenter wp-image-41447 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka.png" alt="wildfly admin panel" width="1168" height="599" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka.png 1168w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka-300x154.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka-1024x525.png 1024w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka-768x394.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-adminka-315x162.png 315w" sizes="(max-width: 1168px) 100vw, 1168px" /></noscript>In this way you get a ready-to-use WildFly cluster that can be scaled out and in, making hosting of your applications extremely flexible and cost-effective.</p><h2 style="text-align: justify;">Application Availability among Workers</h2><p style="text-align: justify;">The application deployed to the standalone server is redeployed to all server instances during transformation to the cluster. To check this you can click <b>Open in browser</b> at each Worker. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MjEiIGhlaWdodD0iNDQwIiB2aWV3Qm94PSIwIDAgODIxIDQ0MCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter wp-image-41449 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-deployment-app.png" alt="application availability among workers" width="821" height="440" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-deployment-app.png 821w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-deployment-app-300x161.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-deployment-app-768x412.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-deployment-app-308x165.png 308w" data-sizes="(max-width: 821px) 100vw, 821px" /><noscript><img decoding="async" class="aligncenter wp-image-41449 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-deployment-app.png" alt="application availability among workers" width="821" height="440" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-deployment-app.png 821w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-deployment-app-300x161.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-deployment-app-768x412.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-deployment-app-308x165.png 308w" sizes="(max-width: 821px) 100vw, 821px" /></noscript>Also, you can make sure that the cluster provides high availability. For this, press <b>Restart node</b> button for one or even two nodes and try to access your application via <b>Open in browser</b> for the whole cluster. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MjEiIGhlaWdodD0iNDQwIiB2aWV3Qm94PSIwIDAgODIxIDQ0MCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter wp-image-41451 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-restart.png" alt="restart wildfly nodes" width="821" height="440" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-restart.png 821w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-restart-300x161.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-restart-768x412.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-restart-308x165.png 308w" data-sizes="(max-width: 821px) 100vw, 821px" /><noscript><img decoding="async" class="aligncenter wp-image-41451 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-restart.png" alt="restart wildfly nodes" width="821" height="440" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-restart.png 821w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-restart-300x161.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-restart-768x412.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/clsuter-topology-restart-308x165.png 308w" sizes="(max-width: 821px) 100vw, 821px" /></noscript>The application will be up and running without any interruptions.</p><h2 style="text-align: justify;">Cloning Cluster in Domain Mode</h2><p style="text-align: justify;">When releasing new application version or just applying some essential adjustments, it’s a good practice to check how the newly implemented changes could affect the service work. The Jelastic PaaS allows you to accomplish such testing ‘on-fly’ (i.e. without service downtime and implicitly for your customers) with the <b>Clone Environment</b> option. <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzAiIGhlaWdodD0iMTk4IiB2aWV3Qm94PSIwIDAgODMwIDE5OCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter wp-image-41453 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/cloning.png" alt="clone wildfly environment" width="830" height="198" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/cloning.png 830w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/cloning-300x72.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/cloning-768x183.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/cloning-315x75.png 315w" data-sizes="(max-width: 830px) 100vw, 830px" /><noscript><img decoding="async" class="aligncenter wp-image-41453 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/cloning.png" alt="clone wildfly environment" width="830" height="198" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/cloning.png 830w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/cloning-300x72.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/cloning-768x183.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/cloning-315x75.png 315w" sizes="(max-width: 830px) 100vw, 830px" /></noscript>A cloned environment is a ready-to-work cluster copy with all the required modifications already applied. The newly provisioned Domain Controller node operates with the appropriate cloned Workers, which are already listed within its admin panel. And the application from the original environment is deployed to the cloned one. Thus, the only thing that remains is to recheck your application’s code and custom server configurations for the hardcoded IPs/domains and fix them accordingly (if there are any issues). <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NDEiIGhlaWdodD0iNzQxIiB2aWV3Qm94PSIwIDAgOTQxIDc0MSI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" decoding="async" class="aligncenter wp-image-41455 size-full" data-src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/2-env.png" alt="running wildfly environment" width="941" height="741" data-srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/2-env.png 941w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/2-env-300x236.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/2-env-768x605.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/2-env-210x165.png 210w" data-sizes="(max-width: 941px) 100vw, 941px" /><noscript><img decoding="async" class="aligncenter wp-image-41455 size-full" src="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/2-env.png" alt="running wildfly environment" width="941" height="741" srcset="https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/2-env.png 941w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/2-env-300x236.png 300w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/2-env-768x605.png 768w, https://www.virtuozzo.com/company/blog/wp-content/uploads/2018/05/2-env-210x165.png 210w" sizes="(max-width: 941px) 100vw, 941px" /></noscript>This way, you can apply the implied changes to your environment copy without affecting the actual production. To increase the high availability of the system, Jelastic uses <b>several synchronized Load-Balancers</b>, placed at different nodes, for handling requests simultaneously. All of them work with a single data storage, which makes them fully interchangeable in case of any issue occurs at one of the instances.</p><h2 style="text-align: justify;">Summary</h2><p style="text-align: justify;">This instruction proves that there is no need to rebuild the whole application architecture in order to gain the required outcome from both managed domain mode and container technology. Migration of legacy projects from VMs to micro clusters with system containers is not that painful at all. It brings a “rich taste” of flexibility and efficiency for increasing competitive advantage. Just give it a try! Create your own cluster with <a href="https://jelastic.cloud/?utm_source=blog-wildfly-managed-domain" target="_blank" rel="noopener noreferrer">Jelastic PaaS</a> at one of the decentralized service providers worldwide.</p></div></div><div class="sidebar-wrap col-lg-3 col-md-6"><div class="sticky-el"> <a href="/newsletter-subscription/" class="btn">Subscribe</a><form role="search" method="get" class="search-form" action="https://www.virtuozzo.com/company/blog/"> <label for="search-field" class="sr-only">Search</label> <input id="search-field" type="text" class="search-field" placeholder="Search" value="" name="s" title="Search for:"/> <input type="submit" class="search-submit" value="Search"/></form><h2 class="widget-title">Categories</h2><ul><li><a href="/company/blog/category/iaas/">IaaS</a></li><li><a href="/company/blog/category/devops-paas/">DevOps PaaS</a></li><li><a href="/company/blog/category/wordpress/">WordPress</a></li><li><a href="/company/blog/category/kubernetes/">Kubernetes</a></li><li><a href="/company/blog/category/storage/">Storage</a></li><li><a href="/company/blog/category/multi-cloud/">Multi-Cloud</a></li><li><a href="/company/blog/category/video/webinars/">Webinars</a></li><li><a href="/company/blog/category/case-studies/">Case Studies</a></li><li><a href="/company/blog/category/product-updates/">Product Updates</a></li><li><a href="/company/blog/category/news/">News</a></li></ul><div class="a2a_kit a2a_default_style"> <a class="a2a_button_linkedin"> <svg width="32" height="32" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="32" height="32" rx="6" fill="#CCD4EF"/><path d="M23.996 24H24v-5.87c0-2.87-.618-5.082-3.974-5.082-1.613 0-2.696.886-3.138 1.725h-.047v-1.457H13.66V24h3.314v-5.29c0-1.393.264-2.74 1.988-2.74 1.7 0 1.725 1.59 1.725 2.83V24h3.31zM8.264 13.318h3.317V24H8.264V13.318zM9.921 8C8.861 8 8 8.86 8 9.921s.86 1.94 1.921 1.94 1.922-.879 1.922-1.94A1.923 1.923 0 009.92 8z" fill="#fff"/></svg> </a> <a class="a2a_button_x"> <svg width="32" height="32" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="32" height="32" rx="6" fill="#CCD4EF"/><path d="M17.482 14.622L24.04 7h-1.554l-5.693 6.618L12.245 7H7l6.876 10.007L7 25h1.554l6.012-6.989L19.368 25h5.245l-7.131-10.378zm-2.128 2.474l-.697-.997-5.543-7.93H11.5l4.474 6.4.697.996 5.815 8.319h-2.387l-4.745-6.788z" fill="#fff"/></svg> </a> <a class="a2a_button_facebook"> <svg width="32" height="32" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="32" height="32" rx="6" fill="#CCD4EF"/><path d="M14.403 17.031h-1.982c-.32 0-.421-.12-.421-.42v-2.423c0-.32.12-.42.42-.42h1.983v-1.763c0-.801.14-1.562.54-2.263a3.323 3.323 0 011.783-1.482c.5-.18 1.001-.26 1.542-.26h1.962c.28 0 .4.12.4.4v2.283c0 .28-.12.4-.4.4-.54 0-1.081 0-1.622.02-.54 0-.82.261-.82.822-.02.6 0 1.181 0 1.802h2.322c.32 0 .44.12.44.44v2.424c0 .32-.1.42-.44.42h-2.323v6.528c0 .34-.1.461-.46.461h-2.504c-.3 0-.42-.12-.42-.42v-6.55z" fill="#fff"/></svg> </a></div></div></div></div></div><div id="static-footer"><div id="static-footer-top"><div class="static-footer-menu"><h5>Products</h5><ul><li> <a href="https://www.virtuozzo.com/hybrid-cloud/">Hybrid Cloud</a></li><li> <a href="https://www.virtuozzo.com/hybrid-infrastructure/">Hybrid Infrastructure</a></li><li> <a href="https://www.virtuozzo.com/application-platform/">Application Platform</a></li><li> <a href="https://www.virtuozzo.com/hybrid-server/">Hybrid Server</a></li></ul></div><div class="static-footer-menu"><h5>Solutions</h5><ul><li> <a href="https://www.virtuozzo.com/vmware-alternative/">VMware Alternative</a></li><li> <a href="https://www.virtuozzo.com/application-platform/">Platform as a Service</a></li><li> <a href="https://www.virtuozzo.com/kubernetes-hosting/">Kubernetes Orchestration</a></li><li> <a href="https://www.virtuozzo.com/database-as-a-service/">Database Management</a></li><li> <a href="https://www.virtuozzo.com/high-performance-storage/">High-Performance Storage</a></li><li> <a href="https://www.virtuozzo.com/multi-cloud-platform/">Multi-Cloud</a></li></ul></div><div class="static-footer-menu"><h5>Partners</h5><ul><li> <a href="https://www.virtuozzo.com/application-platform-partners/">PaaS Providers</a></li><li> <a href="https://www.virtuozzo.com/iaas-providers/">IaaS Providers</a></li><li> <a href="https://www.virtuozzo.com/technology-partnerships/">Technology Partners</a></li><li> <a href="https://www.virtuozzo.com/resellers/">Resellers</a></li><li> <a href="https://www.virtuozzo.com/distributors/">Distributors</a></li><li> <a href="https://www.virtuozzo.com/partners/">Become a Partner</a></li></ul></div><div class="static-footer-menu"><h5>Support</h5><ul><li> <a href="https://www.virtuozzo.com/documentation/">Documentation</a></li><li> <a href="https://www.virtuozzo.com/all-supported-products/">Product Support</a></li><li> <a href="https://www.virtuozzo.com/professional-services/">Professional Services</a></li><li> <a href="https://www.virtuozzo.com/product-updates/">Product Updates</a></li><li> <a href="https://www.virtuozzo.com/resources/videos/">Video</a></li></ul></div><div class="static-footer-menu"><h5>Company</h5><ul><li> <a href="https://www.virtuozzo.com/company/about/">About</a></li><li> <a href="https://www.virtuozzo.com/company/leadership/">Leadership</a></li><li> <a href="https://www.virtuozzo.com/resources/#case-studies">Case studies</a></li><li> <a href="https://www.virtuozzo.com/company/blog/">Blog</a></li><li> <a href="https://www.virtuozzo.com/company/events/">Events</a></li><li> <a href="https://www.virtuozzo.com/company/contact/">Contact</a></li></ul></div></div><div id="static-footer-bottom"><div class="static-footer-bottom-top"> <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MDAiIGhlaWdodD0iMTA4IiB2aWV3Qm94PSIwIDAgNjAwIDEwOCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjwvc3ZnPg==" data-src="https://www.virtuozzo.com/wp-content/uploads/2021/02/virtuozzo-logo-white.svg" alt="Virtuozzo logo" width="600" height="108"><noscript><img src="https://www.virtuozzo.com/wp-content/uploads/2021/02/virtuozzo-logo-white.svg" alt="Virtuozzo logo" width="600" height="108"></noscript><ul class="static-footer-social"><li> <a href="https://www.linkedin.com/company/virtuozzo" target="_blank"> <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNSIgaGVpZ2h0PSIzNSIgdmlld0JveD0iMCAwIDM1IDM1Ij48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmZmZmZmIi8+PC9zdmc+" data-src="https://www.virtuozzo.com/wp-content/themes/virtuozzo-child/assets/img/linkedin.svg" alt="linkedin" width="35" height="35"><noscript><img src="https://www.virtuozzo.com/wp-content/themes/virtuozzo-child/assets/img/linkedin.svg" alt="linkedin" width="35" height="35"></noscript> </a></li><li> <a href="https://twitter.com/virtuozzoinc" target="_blank"> <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNCIgaGVpZ2h0PSIzNSIgdmlld0JveD0iMCAwIDM0IDM1Ij48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmZmZmZmIi8+PC9zdmc+" data-src="https://www.virtuozzo.com/wp-content/themes/virtuozzo-child/assets/img/twitter.svg" alt="twitter" width="34" height="35"><noscript><img src="https://www.virtuozzo.com/wp-content/themes/virtuozzo-child/assets/img/twitter.svg" alt="twitter" width="34" height="35"></noscript> </a></li><li> <a href="https://www.facebook.com/VirtuozzoInc/" target="_blank"> <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNCIgaGVpZ2h0PSIzNSIgdmlld0JveD0iMCAwIDM0IDM1Ij48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmZmZmZmIi8+PC9zdmc+" data-src="https://www.virtuozzo.com/wp-content/themes/virtuozzo-child/assets/img/facebook.svg" alt="facebook" width="34" height="35"><noscript><img src="https://www.virtuozzo.com/wp-content/themes/virtuozzo-child/assets/img/facebook.svg" alt="facebook" width="34" height="35"></noscript> </a></li><li> <a href="https://www.youtube.com/channel/UCF1QeKAgIZ8ZQFaqUxPp87w" target="_blank"> <img data-lazyloaded="1" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNSIgaGVpZ2h0PSIzNSIgdmlld0JveD0iMCAwIDM1IDM1Ij48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmZmZmZmIi8+PC9zdmc+" data-src="https://www.virtuozzo.com/wp-content/themes/virtuozzo-child/assets/img/youtube.svg" alt="youtube" width="35" height="35"><noscript><img src="https://www.virtuozzo.com/wp-content/themes/virtuozzo-child/assets/img/youtube.svg" alt="youtube" width="35" height="35"></noscript> </a></li></ul></div><div class="static-footer-bottom-bottom"><p>© Virtuozzo. All rights reserved. | <a href="https://www.virtuozzo.com/legal/">Privacy & Legal</a></p></div></div></div><style>div#static-footer { background: #1E1D28; padding-top: 100px; } #static-footer-top, .static-footer-bottom-top, .static-footer-bottom-bottom { width: 1190px; margin: 0 auto; } #static-footer-top { display: flex; margin-bottom: 20px; flex-wrap: wrap; } .static-footer-menu h5 { font-size: 18px; color: #8A8A90; font-weight: 600; margin: 0 0 30px; text-transform: uppercase; letter-spacing: 1px; padding: 0; } .static-footer-menu { width: 20%; margin: 0 0 30px; padding: 0 15px; } .static-footer-menu ul { list-style: none; margin: 0; } .static-footer-menu ul a { color: #8A8A90; font-size: 14px; line-height: 140%; text-decoration: none !important; } .static-footer-menu ul li { margin: 0 0 15px; padding: 0; } .static-footer-menu ul a:hover { color: #fff; } #static-footer-bottom { border-top: 1px solid #ffffff10; padding: 30px 0; } #static-footer * { box-sizing: border-box; } .static-footer-bottom-top > img { width: 150px; margin: 0; } .static-footer-bottom-top { padding: 0 15px; display: flex; justify-content: space-between; } ul.static-footer-social { display: flex; list-style: none; margin: 0; padding: 0; } ul.static-footer-social img { display: block; margin: 0; } ul.static-footer-social li { margin: 0 0 0 7px; padding: 0; } ul.static-footer-social li:first-child { margin: 0; } .static-footer-bottom-bottom p { margin: 0; font-size: 14px; color: #8A8A90; } .static-footer-bottom-bottom a { color: #fff; } .static-footer-bottom-bottom { margin-top: 15px; padding: 0 15px; } @media (max-width: 1260px) { #static-footer-top, .static-footer-bottom-top, .static-footer-bottom-bottom { max-width: 94%; } } @media (max-width: 760px) { #static-footer-top, .static-footer-bottom-top, .static-footer-bottom-bottom { max-width: 90%; } .static-footer-menu { width: 33.3334567%; } } @media (max-width: 576px) { #static-footer-top, .static-footer-bottom-top, .static-footer-bottom-bottom { max-width: 100%; } .static-footer-menu { width: 100%; } .static-footer-bottom-top { flex-direction: column; } ul.static-footer-social { margin-top: 20px; } div#static-footer { padding-top: 50px; } #static-footer-top { margin-bottom: 0; } .static-footer-menu h5 { margin-bottom: 20px; } .static-footer-menu ul li { margin-bottom: 10px; } }</style><span id="to-top"></span></div><div id="modal-general" class="modal hide in"><div class="modal-body"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3 class="title">Thanks for Request!</h3><p class="massage">Jelastic team will contact you within 24 hours.</p></div></div><div class="body-overlay"></div> <script type="text/javascript" id="jelastic-base-js-extra" src="data:text/javascript;base64,dmFyIEpWYXJzPXsiYWpheHVybCI6Imh0dHBzOlwvXC93d3cudmlydHVvenpvLmNvbVwvY29tcGFueVwvYmxvZ1wvd3AtYWRtaW5cL2FkbWluLWFqYXgucGhwIn0=" defer></script> <script type="text/javascript" src="https://www.virtuozzo.com/company/blog/wp-content/themes/salient/js/jelastic-base.min.js?ver=08112024" id="jelastic-base-js" defer data-deferred="1"></script> <script type="text/javascript" src="//static.addtoany.com/menu/page.js?ver=234b0ae5829e1731154f1aef449b958f" id="a2a-js" defer data-deferred="1"></script> <script data-no-optimize="1">!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).LazyLoad=e()}(this,function(){"use strict";function e(){return(e=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n,a=arguments[e];for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t}).apply(this,arguments)}function i(t){return e({},it,t)}function o(t,e){var n,a="LazyLoad::Initialized",i=new t(e);try{n=new CustomEvent(a,{detail:{instance:i}})}catch(t){(n=document.createEvent("CustomEvent")).initCustomEvent(a,!1,!1,{instance:i})}window.dispatchEvent(n)}function l(t,e){return t.getAttribute(gt+e)}function c(t){return l(t,bt)}function s(t,e){return function(t,e,n){e=gt+e;null!==n?t.setAttribute(e,n):t.removeAttribute(e)}(t,bt,e)}function r(t){return s(t,null),0}function u(t){return null===c(t)}function d(t){return c(t)===vt}function f(t,e,n,a){t&&(void 0===a?void 0===n?t(e):t(e,n):t(e,n,a))}function _(t,e){nt?t.classList.add(e):t.className+=(t.className?" ":"")+e}function v(t,e){nt?t.classList.remove(e):t.className=t.className.replace(new RegExp("(^|\\s+)"+e+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")}function g(t){return t.llTempImage}function b(t,e){!e||(e=e._observer)&&e.unobserve(t)}function p(t,e){t&&(t.loadingCount+=e)}function h(t,e){t&&(t.toLoadCount=e)}function n(t){for(var e,n=[],a=0;e=t.children[a];a+=1)"SOURCE"===e.tagName&&n.push(e);return n}function m(t,e){(t=t.parentNode)&&"PICTURE"===t.tagName&&n(t).forEach(e)}function a(t,e){n(t).forEach(e)}function E(t){return!!t[st]}function I(t){return t[st]}function y(t){return delete t[st]}function A(e,t){var n;E(e)||(n={},t.forEach(function(t){n[t]=e.getAttribute(t)}),e[st]=n)}function k(a,t){var i;E(a)&&(i=I(a),t.forEach(function(t){var e,n;e=a,(t=i[n=t])?e.setAttribute(n,t):e.removeAttribute(n)}))}function L(t,e,n){_(t,e.class_loading),s(t,ut),n&&(p(n,1),f(e.callback_loading,t,n))}function w(t,e,n){n&&t.setAttribute(e,n)}function x(t,e){w(t,ct,l(t,e.data_sizes)),w(t,rt,l(t,e.data_srcset)),w(t,ot,l(t,e.data_src))}function O(t,e,n){var a=l(t,e.data_bg_multi),i=l(t,e.data_bg_multi_hidpi);(a=at&&i?i:a)&&(t.style.backgroundImage=a,n=n,_(t=t,(e=e).class_applied),s(t,ft),n&&(e.unobserve_completed&&b(t,e),f(e.callback_applied,t,n)))}function N(t,e){!e||0<e.loadingCount||0<e.toLoadCount||f(t.callback_finish,e)}function C(t,e,n){t.addEventListener(e,n),t.llEvLisnrs[e]=n}function M(t){return!!t.llEvLisnrs}function z(t){if(M(t)){var e,n,a=t.llEvLisnrs;for(e in a){var i=a[e];n=e,i=i,t.removeEventListener(n,i)}delete t.llEvLisnrs}}function R(t,e,n){var a;delete t.llTempImage,p(n,-1),(a=n)&&--a.toLoadCount,v(t,e.class_loading),e.unobserve_completed&&b(t,n)}function T(o,r,c){var l=g(o)||o;M(l)||function(t,e,n){M(t)||(t.llEvLisnrs={});var a="VIDEO"===t.tagName?"loadeddata":"load";C(t,a,e),C(t,"error",n)}(l,function(t){var e,n,a,i;n=r,a=c,i=d(e=o),R(e,n,a),_(e,n.class_loaded),s(e,dt),f(n.callback_loaded,e,a),i||N(n,a),z(l)},function(t){var e,n,a,i;n=r,a=c,i=d(e=o),R(e,n,a),_(e,n.class_error),s(e,_t),f(n.callback_error,e,a),i||N(n,a),z(l)})}function G(t,e,n){var a,i,o,r,c;t.llTempImage=document.createElement("IMG"),T(t,e,n),E(c=t)||(c[st]={backgroundImage:c.style.backgroundImage}),o=n,r=l(a=t,(i=e).data_bg),c=l(a,i.data_bg_hidpi),(r=at&&c?c:r)&&(a.style.backgroundImage='url("'.concat(r,'")'),g(a).setAttribute(ot,r),L(a,i,o)),O(t,e,n)}function D(t,e,n){var a;T(t,e,n),a=e,e=n,(t=It[(n=t).tagName])&&(t(n,a),L(n,a,e))}function V(t,e,n){var a;a=t,(-1<yt.indexOf(a.tagName)?D:G)(t,e,n)}function F(t,e,n){var a;t.setAttribute("loading","lazy"),T(t,e,n),a=e,(e=It[(n=t).tagName])&&e(n,a),s(t,vt)}function j(t){t.removeAttribute(ot),t.removeAttribute(rt),t.removeAttribute(ct)}function P(t){m(t,function(t){k(t,Et)}),k(t,Et)}function S(t){var e;(e=At[t.tagName])?e(t):E(e=t)&&(t=I(e),e.style.backgroundImage=t.backgroundImage)}function U(t,e){var n;S(t),n=e,u(e=t)||d(e)||(v(e,n.class_entered),v(e,n.class_exited),v(e,n.class_applied),v(e,n.class_loading),v(e,n.class_loaded),v(e,n.class_error)),r(t),y(t)}function $(t,e,n,a){var i;n.cancel_on_exit&&(c(t)!==ut||"IMG"===t.tagName&&(z(t),m(i=t,function(t){j(t)}),j(i),P(t),v(t,n.class_loading),p(a,-1),r(t),f(n.callback_cancel,t,e,a)))}function q(t,e,n,a){var i,o,r=(o=t,0<=pt.indexOf(c(o)));s(t,"entered"),_(t,n.class_entered),v(t,n.class_exited),i=t,o=a,n.unobserve_entered&&b(i,o),f(n.callback_enter,t,e,a),r||V(t,n,a)}function H(t){return t.use_native&&"loading"in HTMLImageElement.prototype}function B(t,i,o){t.forEach(function(t){return(a=t).isIntersecting||0<a.intersectionRatio?q(t.target,t,i,o):(e=t.target,n=t,a=i,t=o,void(u(e)||(_(e,a.class_exited),$(e,n,a,t),f(a.callback_exit,e,n,t))));var e,n,a})}function J(e,n){var t;et&&!H(e)&&(n._observer=new IntersectionObserver(function(t){B(t,e,n)},{root:(t=e).container===document?null:t.container,rootMargin:t.thresholds||t.threshold+"px"}))}function K(t){return Array.prototype.slice.call(t)}function Q(t){return t.container.querySelectorAll(t.elements_selector)}function W(t){return c(t)===_t}function X(t,e){return e=t||Q(e),K(e).filter(u)}function Y(e,t){var n;(n=Q(e),K(n).filter(W)).forEach(function(t){v(t,e.class_error),r(t)}),t.update()}function t(t,e){var n,a,t=i(t);this._settings=t,this.loadingCount=0,J(t,this),n=t,a=this,Z&&window.addEventListener("online",function(){Y(n,a)}),this.update(e)}var Z="undefined"!=typeof window,tt=Z&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),et=Z&&"IntersectionObserver"in window,nt=Z&&"classList"in document.createElement("p"),at=Z&&1<window.devicePixelRatio,it={elements_selector:".lazy",container:tt||Z?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_poster:"poster",class_applied:"applied",class_loading:"litespeed-loading",class_loaded:"litespeed-loaded",class_error:"error",class_entered:"entered",class_exited:"exited",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1},ot="src",rt="srcset",ct="sizes",lt="poster",st="llOriginalAttrs",ut="loading",dt="loaded",ft="applied",_t="error",vt="native",gt="data-",bt="ll-status",pt=[ut,dt,ft,_t],ht=[ot],mt=[ot,lt],Et=[ot,rt,ct],It={IMG:function(t,e){m(t,function(t){A(t,Et),x(t,e)}),A(t,Et),x(t,e)},IFRAME:function(t,e){A(t,ht),w(t,ot,l(t,e.data_src))},VIDEO:function(t,e){a(t,function(t){A(t,ht),w(t,ot,l(t,e.data_src))}),A(t,mt),w(t,lt,l(t,e.data_poster)),w(t,ot,l(t,e.data_src)),t.load()}},yt=["IMG","IFRAME","VIDEO"],At={IMG:P,IFRAME:function(t){k(t,ht)},VIDEO:function(t){a(t,function(t){k(t,ht)}),k(t,mt),t.load()}},kt=["IMG","IFRAME","VIDEO"];return t.prototype={update:function(t){var e,n,a,i=this._settings,o=X(t,i);{if(h(this,o.length),!tt&&et)return H(i)?(e=i,n=this,o.forEach(function(t){-1!==kt.indexOf(t.tagName)&&F(t,e,n)}),void h(n,0)):(t=this._observer,i=o,t.disconnect(),a=t,void i.forEach(function(t){a.observe(t)}));this.loadAll(o)}},destroy:function(){this._observer&&this._observer.disconnect(),Q(this._settings).forEach(function(t){y(t)}),delete this._observer,delete this._settings,delete this.loadingCount,delete this.toLoadCount},loadAll:function(t){var e=this,n=this._settings;X(t,n).forEach(function(t){b(t,e),V(t,n,e)})},restoreAll:function(){var e=this._settings;Q(e).forEach(function(t){U(t,e)})}},t.load=function(t,e){e=i(e);V(t,e)},t.resetStatus=function(t){r(t)},Z&&function(t,e){if(e)if(e.length)for(var n,a=0;n=e[a];a+=1)o(t,n);else o(t,e)}(t,window.lazyLoadOptions),t});!function(e,t){"use strict";function a(){t.body.classList.add("litespeed_lazyloaded")}function n(){console.log("[LiteSpeed] Start Lazy Load Images"),d=new LazyLoad({elements_selector:"[data-lazyloaded]",callback_finish:a}),o=function(){d.update()},e.MutationObserver&&new MutationObserver(o).observe(t.documentElement,{childList:!0,subtree:!0,attributes:!0})}var d,o;e.addEventListener?e.addEventListener("load",n,!1):e.attachEvent("onload",n)}(window,document);</script></body></html> <!-- Page optimized by LiteSpeed Cache @2025-02-20 18:59:53 --> <!-- Page cached by LiteSpeed Cache 6.5.2 on 2025-02-20 18:59:53 -->