blob: 79446946cbca19fd61af44d9d1d665a57bc871f1 [file] [log] [blame]
<!--
▄▄▄ ██▓███ ▄▄▄ ▄████▄ ██░ ██ ▓█████ ██▓ ▄████ ███▄ █ ██▓▄▄▄█████▓▓█████
▒████▄ ▓██░ ██▒▒████▄ ▒██▀ ▀█ ▓██░ ██▒▓█ ▀ ▓██▒ ██▒ ▀█▒ ██ ▀█ █ ▓██▒▓ ██▒ ▓▒▓█ ▀
▒██ ▀█▄ ▓██░ ██▓▒▒██ ▀█▄ ▒▓█ ▄ ▒██▀▀██░▒███ ▒██▒▒██░▄▄▄░▓██ ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███
░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█ ▄ ░██░░▓█ ██▓▓██▒ ▐▌██▒░██░░ ▓██▓ ░ ▒▓█ ▄
▓█ ▓██▒▒██▒ ░ ░ ▓█ ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒ ░██░░▒▓███▀▒▒██░ ▓██░░██░ ▒██▒ ░ ░▒████▒
▒▒ ▓▒█░▒▓▒░ ░ ░ ▒▒ ▓▒█░░ ░▒ ▒ ░ ▒ ░░▒░▒░░ ▒░ ░ ░▓ ░▒ ▒ ░ ▒░ ▒ ▒ ░▓ ▒ ░░ ░░ ▒░ ░
▒ ▒▒ ░░▒ ░ ▒ ▒▒ ░ ░ ▒ ▒ ░▒░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░░ ░ ▒░ ▒ ░ ░ ░ ░ ░
░ ▒ ░░ ░ ▒ ░ ░ ░░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ▒ ░ ░ ░
░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
-->
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html>
<head>
<link rel="canonical" href="https://ignite.apache.org/arch/clustering.html" />
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<title>Clustering and Deployment - Apache Ignite</title>
<link media="all" rel="stylesheet" href="/css/all.css?v=1514336028">
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css" rel="stylesheet">
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic' rel='stylesheet' type='text/css'>
<!--#include virtual="/includes/sh.html" -->
</head>
<body>
<div id="wrapper">
<!--#include virtual="/includes/header.html" -->
<main id="main" role="main" class="container">
<section id="deployment-options" class="page-section">
<h1 class="first">Clustering and Deployment</h1>
<div class="col-sm-12 col-md-12 col-xs-12" style="padding-left:0; padding-right:0;">
<div class="col-sm-6 col-md-6 col-xs-12" style="padding-left:0; padding-right:0;">
<p>
Apache Ignite cluster is based on the shared-nothing architecture which implies that all the
cluster nodes are equal, independent and self-sufficient, and there is no single point of failure
across the cluster.
</p>
<p>
Ignite nodes can automatically discover each other relying on flexible Discovery SPI component.
This helps to scale the cluster out or down when needed and easily.
</p>
<p>
Apache Ignite can run stand-alone, in a cluster, within Kubernetes and Docker containers, as well
as on Apache Mesos and Hadoop Yarn. It can also run on physical servers as well as within
virtual environments or clouds. Technically there are no limitations on where the cluster
can be deployed.
</p>
</div>
<div class="col-sm-6 col-md-6 col-xs-12" style="padding-right:0;">
<img class="img-responsive" src="/images/ignite-deploy.png" width="540px" style="float:right;"/>
</div>
</div>&nbsp;
<div class="page-heading">Servers, Clients and Protocols</div>
<p>
There are two types of nodes defined in Ignite - client and server nodes. The nodes server a
different purpose.
</p>
<p>
The server nodes act as containers for data and computations. Once interconnected, the server nodes will
represent a distributed database (or data grid) that stores the data, participates in queries processing,
compute execution, stream processing, etc.
</p>
<p>
The client nodes, on their turn, provide an ability to connect to the distributed database (a group of server nodes)
remotely. Ignite native clients allow using the whole set of Ignite APIs, including SQL, transactions,
compute, streaming, services, etc. from the client side.
</p>
<p>
In addition to the client nodes, you can access the cluster by means of Ignite binary client protocol,
JDBC and ODBC drivers, or REST API.
</p>
<div class="page-heading">Public Clouds</div>
<p>
For public cloud environments, Ignite has native integration with <code class="text-nowrap">Amazon AWS</code>
and <code class="text-nowrap">Google Compute Engine</code>. For all other cloud environments, Ignite
integrates with <code class="text-nowrap">Apache JClouds</code> that has support for most of the
<a href="https://jclouds.apache.org/reference/providers/" target="_blank" class="text-nowrap">existing
cloud providers</a>.
</p>
<div class="page-heading">Containers</div>
<p>
Ignite can freely run within container environments. Ignite's integration with <code>Docker</code>
allows to automatically build and deploy user code into Ignite prior to server startup.
</p>
<p>
Apache Ignite cluster can also be deployed in <code>Kubernetes</code> that allows automatic deployment and management of
containerized applications.
</p>
<div class="page-heading">Resource Managers</div>
<p>
Ignite provides native integration for <code class="text-nowrap">Hadoop Yarn</code>,<code>Kubernetes</code>,
and <code class="text-nowrap">Apache Mesos</code> making it very easy to seamlessly deploy Ignite
into specific environments and manage it there.
</p>
<div class="page-heading">More on Clustering and Deployment</div>
<table class="formatted" name="Deployment Options Features">
<thead>
<tr>
<th width="35%" class="left">Feature</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="left">Clients and Servers</td>
<td>
<p>
There are two types of nodes defined in Ignite - client and server nodes. The nodes server a
different purpose:
</p>
<div class="page-links">
<a href="https://apacheignite.readme.io/docs/clients-vs-servers" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Self-Healing Cluster</td>
<td>
<p>
Ignite cluster can self-heal, where clients automatically reconnect in case of failures,
slow clients are automatically kicked out, and data from failed nodes
is automatically propagated to other nodes in the grid:
</p>
<div class="page-links">
<a href="http://apacheignite.readme.io/docs/clients-vs-servers" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Cross-platform Support</td>
<td>
<p>
Applications can access the cluster from numerous programming languages as well as JDBC/ODBC
drivers, and additional protocols:
</p>
<div class="page-links">
<a href="/features/multilanguage.html" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Zero Deployment</td>
<td>
<p>
Ignite nodes automatically become aware of custom classes, eliminating the need to explicitly deploy them:
</p>
<div class="page-links">
<a href="https://apacheignite.readme.io/docs/zero-deployment" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Dynamic Schema Changes</td>
<td>
<p>
Ignite stores objects in binary format eliminating the need to deploy classes on server nodes:
</p>
<div class="page-links">
<a href="https://apacheignite.readme.io/docs/binary-marshaller" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Stand-Alone Clusters</td>
<td>
<p>
Ignite nodes can automatically discover each other. This helps to scale the cluster
when needed, without having to restart the whole cluster - simply start up new additional
nodes and they will automatically join the existing work loads:
</p>
<div class="page-links">
<a href="http://apacheignite.readme.io/docs/cluster" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Docker Container</td>
<td>
<p>
<code>Docker</code> allows to package Ignite deployment with all the dependencies into a
standard container. Docker automates downloading the Ignite release, deploying users'
code into Ignite, and configuring nodes. It also automatically starts up the fully
configured Ignite node:
</p>
<div class="page-links">
<a href="http://apacheignite.readme.io/docs/docker-deployment" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Kubernetes</td>
<td>
<p>
Apache Ignite cluster can be easily deployed in and maintained by <code>Kubernetes</code> which is an
open-source system for automating deployment, scaling, and management of containerized applications:
</p>
<div class="page-links">
<a href="https://apacheignite.readme.io/docs/kubernetes-deployment" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Public Clouds</td>
<td>
<p>
For public cloud environments, Ignite has native integration with <code class="text-nowrap">Amazon AWS</code>
and <code class="text-nowrap">Google Compute Engine</code>. For all other cloud environments, Ignite
integrates with <code class="text-nowrap">Apache JClouds</code> which has support for most of the
<a href="https://jclouds.apache.org/reference/providers/" target="_blank" class="text-nowrap">existing cloud providers</a>.
</p>
<div class="page-links" style="line-height: 1.3;">
<a href="https://apacheignite-mix.readme.io/docs/amazon-aws" target="docs">Amazon AWS Integration <i class="fa fa-angle-double-right"></i></a><br/>
<a href="https://apacheignite-mix.readme.io/docs/google-compute-engine" target="docs">Google Cloud Integration <i class="fa fa-angle-double-right"></i></a><br/>
<a href="https://apacheignite-mix.readme.io/docs/jclouds" target="docs">Apache JClouds Integration <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Apache Mesos</td>
<td>
<p>
Ignite provides native integration for <code>Apache Mesos</code> making it very easy
to deploy into Mesos data centers, such as, for example, Hadoop and Spark environments:
</p>
<div class="page-links">
<a href="http://apacheignite.readme.io/docs/mesos-deployment" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
<tr>
<td class="left">Hadoop Yarn</td>
<td>
<p>
Ignite provides native integration for <code>Hadoop Yarn</code> making it very easy
to deploy into Hadoop and Spark environments:
</p>
<div class="page-links">
<a href="http://apacheignite.readme.io/docs/yarn-deployment" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
</div>
</td>
</tr>
</tbody>
</table>
</section>
</main>
<!--#include virtual="/includes/footer.html" -->
</div>
<!--#include virtual="/includes/scripts.html" -->
</body>
</html>