> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/gridgain/gridgain-8/gridgain8-management/installation.md).

# Installation and Upgrade

Install and start GridGain — system requirements, the binary distribution, starting a node with default or custom configuration, and deployment options.

This chapter explains system requirements for running GridGain, how to install GridGain, and how to start a GridGain node.

Since GridGain is built on top of Apache Ignite, GridGain reuses Ignite's system properties, environment properties, startup scripts, etc. wherever possible.

## Prerequisites

This section describes the platform requirements for machines running GridGain. GridGain system requirements scale depending on the size of the cluster.

| Requirement | Details                                                                                              |
| ----------- | ---------------------------------------------------------------------------------------------------- |
| JDK         | Oracle JDK 17 or later                                                                               |
| OS          | Linux (any flavor), Windows (10 and up). For Docker environment, we provide Linux docker containers. |
| ISA         | x86-64, SPARC, PowerPC                                                                               |
| Network     | No restrictions (10G recommended)                                                                    |

GridGain requires Java 17 or later. See [Running GridGain with Java 17 or Later](#running-gridgain-with-java-17-or-later) for the JVM parameters it needs.

## Running GridGain with Java 17 or Later

To run GridGain with Java 17 or later:

* Set the `JAVA_HOME` environment variable to point to the Java installation directory.
* Pass specific flags to JVM to make proprietary SDK APIs available. If you use the start-up script `ignite.sh` (or `ignite.bat` for Windows), you do not need to do anything because these flags are already set up in the script. Otherwise, provide the following parameters to the JVM of your application:

```
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED
--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
--add-opens=java.base/jdk.internal.access=ALL-UNNAMED
--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
--add-opens=java.base/sun.util.calendar=ALL-UNNAMED
--add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
--add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/java.security.cert=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--add-opens=java.base/java.math=ALL-UNNAMED
--add-opens=java.base/java.time=ALL-UNNAMED
--add-opens=java.base/java.text=ALL-UNNAMED
--add-opens=java.base/sun.security.ssl=ALL-UNNAMED
--add-opens=java.base/sun.security.x509=ALL-UNNAMED
--add-opens=java.logging/java.util.logging=ALL-UNNAMED
--add-opens=java.management/sun.management=ALL-UNNAMED
--add-opens=java.desktop/java.awt.font=ALL-UNNAMED
--add-opens=java.sql/java.sql=ALL-UNNAMED
```

{% hint style="info" %}
Other parameters, for example, [Detailed GC Logs](/docs/gridgain/gridgain-8/tuning-and-troubleshooting/troubleshooting.md#detailed-gc-logs), may be version-dependent as well.
{% endhint %}

Your GridGain cluster nodes may start successfully and reach `ACTIVE` status, but certain runtime operations can still fail with module access errors caused by Java module system (JPMS) restrictions. This happens when your application's objects use a package that is not opened by the parameters above. Below is an example of an error you may encounter:

```
java.lang.reflect.InaccessibleObjectException: module java.base does not "opens java.util.regex" to unnamed module
```

To resolve this issue, add the appropriate JVM option (`--add-opens`) for the module and package mentioned in the error. For example, for the error above, you would add the following:

```
--add-opens=java.base/java.util.regex=ALL-UNNAMED
```

{% hint style="info" %}
The specific option depends on the object types used by the application.
{% endhint %}

Then, restart each node where you updated access permission.

## Installation

GridGain is distributed as binary, docker, and cloud images, and via RPM/DEB. This chapter explains how to install the binary distribution.

To get started with the GridGain binary distribution:

1. Download the [GridGain binary](https://www.gridgain.com/resources/download) as a zip archive.
2. Unzip the zip archive into the installation folder in your system.
3. Move the `ignite-rest-http` folder from `{gridgain}/libs/optional` to `{gridgain}/libs` to enable the Ignite REST library for the cluster. The library is used by GridGain Control Center for cluster management and monitoring needs.
4. (Optional) Enable required [modules](/docs/gridgain/gridgain-8/gridgain8-development/project-setup.md#enabling-modules).
5. (Optional) Set the `IGNITE_HOME` environment variable or Windows PATH to point to the installation folder and make sure there is no trailing `/` (or `\` for Windows) in the path.

## Starting a GridGain Node

You can start a GridGain node from the command line using the default configuration or by passing a custom configuration file. You can start as many nodes as you like and they will all automatically discover each other.

### With Default Configuration

To start a GridGain node with the default configuration, open the command shell and, assuming you are in GridGain installation directory, run this from the command line:

{% tabs %}
{% tab title="Unix" %}

```shell
$ bin/ignite.sh
```

{% endtab %}

{% tab title="Windows" %}

```shell
$ bin\ignite.bat
```

{% endtab %}
{% endtabs %}

You will see output similar to this:

```
[02:49:12] Ignite node started OK (id=ab5d18a6)
[02:49:12] Topology snapshot [ver=1, nodes=1, CPUs=8, heap=1.0GB]
```

By default, `ignite.sh|bat` starts a node with the default configuration file: `config/default-config.xml`.

### With Custom Configuration

To start a GridGain node with a custom configuration file, open the command shell and, assuming you are in `IGNITE_HOME` (the GridGain installation folder), pass the configuration file as a parameter to `ignite.sh|bat` as follows:

{% tabs %}
{% tab title="Unix" %}

```shell
$ bin/ignite.sh examples/config/example-ignite.xml
```

{% endtab %}

{% tab title="Windows" %}

```shell
$ bin\ignite.bat examples\config\example-ignite.xml
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
If you pass a custom configuration file, you may want to include some extra parameters. See [Running GridGain with Java 17 or Later](#running-gridgain-with-java-17-or-later).
{% endhint %}

{% hint style="info" %}
The path to the configuration file can be absolute, or relative to either `IGNITE_HOME` (GridGain installation folder) or `META-INF` folder in your classpath.
{% endhint %}

You will see output similar to this:

```
[02:49:12] Ignite node started OK (id=ab5d18a6)
[02:49:12] Topology snapshot [ver=1, nodes=1, CPUs=8, heap=1.0GB]
```

Congratulations! You've just launched your first GridGain cluster.

{% columns %}
{% column %}
{% content-ref url="/pages/TvEOuyN1hdD9TI3nI7be" %}
[Deployment Modes](/docs/gridgain/gridgain-8/gridgain8-management/installation/deployment-modes.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
An overview of GridGain deployment modes: cluster modes (in-memory data grid, system of record, heterogeneous) and application modes (client-server, embedded).
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/RVSeQZ3zkVh4o9AdsAMG" %}
[Installing Using ZIP Archive](/docs/gridgain/gridgain-8/gridgain8-management/installation/installing-using-zip.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
How to install GridGain from the ZIP archive distribution, including prerequisites and software identification.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/fRhZYtE2AgifxoK2ZFU5" %}
[Installing Using Docker](/docs/gridgain/gridgain-8/gridgain8-management/installation/installing-using-docker.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
How to run GridGain in Docker: pulling the image, running in-memory and persistent clusters, providing configuration and license files, and enabling modules.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/ey5bR2Bc2Hy9vS9OHe19" %}
[Installing on z/OS](/docs/gridgain/gridgain-8/gridgain8-management/installation/installing-on-zos.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
System requirements, installation steps, configuration, and startup guidance for running GridGain on z/OS.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/Xnzo20RkUkDmiqm5xGio" %}
[AWS](/docs/gridgain/gridgain-8/gridgain8-management/installation/aws.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Options for deploying GridGain on Amazon Web Services, including manual EC2 installation and multi-availability-zone setups.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/LL3ceKkc4JX60tnyMvPF" %}
[Kubernetes](/docs/gridgain/gridgain-8/gridgain8-management/installation/kubernetes.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Deploy and manage GridGain clusters on Kubernetes, including managed services such as Amazon EKS, Azure AKS, Google GKE, and RedHat OpenShift.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/KaGRzh0wDzFjOWaKzTqq" %}
[GridGain Operator](/docs/gridgain/gridgain-8/gridgain8-management/installation/operator.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
GridGain Operator for Kubernetes automates the deployment and management of GridGain and Apache Ignite clusters in a Kubernetes environment.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/lnAjz2ciaddt4x6nPwnl" %}
[Upgrade](/docs/gridgain/gridgain-8/gridgain8-management/installation/upgrade.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Upgrade a GridGain 8 cluster — a standard version upgrade, or a rolling upgrade that keeps the cluster available throughout.
{% endcolumn %}
{% endcolumns %}
