Requirements

Kubernetes

StackState can be installed on a Kubernetes cluster using the Helm charts provided by StackState. These charts have been tested and are compatible with Kubernetes 1.15.x (tested on Amazon EKS and Azure AKS) and Helm 3.

For a list of all docker images used see the image overview.

Node sizing

For a standard deployment, the StackState Helm chart will deploy storage services in a redundant setup with 3 instances of each service. The nodes required for different environments:

  • Virtual machines: 6 nodes with 16GB memory, 4 vCPUs

  • Amazon EKS: 6 instances of type m5.xlarge or m4.xlarge

  • Azure AKS: 6 instances of type D4s v3 or D4as V4 (Intel or AMD CPUs)

Storage

StackState uses persistent volume claims for the services that need to store data. The default storage class for the cluster will be used for all services unless this is overridden by values specified on the command line or in a values.yaml file. All services come with a pre-configured volume size that should be good to get you started, but can be customized later using variables as required.

For more details on the defaults used, see the page Configure storage.

Ingress

By default, the StackState Helm chart will deploy a router pod and service. This service's port 8080 is the only entry point that needs to be exposed via Ingress. You can access StackState without configuring Ingress by forwarding this port:

kubectl port-forward service/<helm-release-name>-distributed-router 8080:8080

When configuring Ingress, make sure to allow for large request body sizes (50MB) that may be sent occasionally by data sources like the StackState Agent or the AWS integration.

For more details on configuring Ingress, have a look at the page Configure Ingress docs.

Linux

Server requirements

Operating system

One of the following operating systems running Java. Check also the specific requirements for the StackState Agent StackPack:

OS

Release

Ubuntu

Bionic

Ubuntu

Xenial

Ubuntu

Trusty

Fedora

28

CentOS

7

Debian

Stretch

Red Hat

7.5

Amazon Linux

2

Java

OpenJDK 8 patch level 121 or later.

StackState does not work with JDK versions 9 or higher at this time.

Size requirements

Production setup

The StackState production setup runs on two machines and requires:

StackState node:

  • 32GB of RAM

  • 500GB disk space

  • 8 cores CPU

StackGraph node:

  • 24GB of RAM

  • 500GB disk space

  • 8 cores CPU

POC setup

The POC setup runs on a single node and requires:

  • 32GB of RAM

  • 500GB disk space

  • 8 cores CPU

Development setup

The development setup runs on a single node and requires:

  • 16GB of RAM

  • 500GB disk space

  • 4 cores CPU

AWS requirements

To meet StackState minimal requirements, the AWS instance type needs to have at least:

  • 4 CPU cores

  • 16GB of memory, e.g., m5.xlarge.

The AWS CLI has to be installed on the EC2 instance that is running StackState.

Networking

Listed ports are TCP ports.

Production deployment

A production deployment separates StackState and StackState's database processes; StackGraph.

StackState has to be reachable on port 7070 by any supported browser. StackState port 7077 must be reachable from any system that is pushing data to StackState

StackGraph should be reachable by StackState on ports 2181, 8020, 15165, 16000, 16020, 50010.

The following ports can be opened for monitoring, but are also useful when troubleshooting:

  • StackState: 9010, 9011, 9020, 9021, 9022, 9023, 9024, 9025, 9026

  • StackGraph: 9001, 9002, 9003, 9004, 9005, 9006, 16010, 16030, 50070, 50075

Development/POC deployment

StackState has to be reachable on port 7070 by any supported browser. StackState port 7077 must be reachable from any system that is pushing data to StackState

The following ports can be opened for monitoring, but are also useful when troubleshooting: 9001, 9002, 9003, 9004, 9005, 9006, 9010, 9011, 9020, 9021, 9022, 9023, 9024, 9025, 9026, 16010, 16030, 50070, 50075

Port list per process

Detailed information about ports per process.

PROCESS

PORT LIST

Elasticsearch

9200: HTTP api

9300: Native api

HBase Master

16000: Master client API (needs to be open for clients)

16010: Master Web UI (optional)

HBase Region Server

16020: Region client API (needs to be open for clients)

16030: Region Web UI (optional)

HDFS DataNode

50010: Datanode API (needs to be open for clients)

50020: IPC api (communication within HDFS cluster)

50075: HTTP api (optional)

HDFS NameNode

8020: File system (needs to be open for clients)

50070: Web UI (optional)

Kafka

9092: Client port

Receiver

7077: HTTP agent API (aka receiver API). When using an agent, data is sent to this endpoint.

StackGraph ProcessManager

5152: StackGraph ProcessManager, at the moment only from localhost

StackState

7070: HTTP api & user interface

7071: Admin API for health checks and admin operations. Typically you want to use this only from `localhost`

StackState ProcessManager

5154: StackState ProcessManager, at the moment only from localhost

Tephra Transaction service

15165: Client API

Zookeeper

2181: Client API

2888: Zookeeper peers (general communication), only when running a cluster

3888: Zookeeper peers (leader election), only when running a cluster

Client (browser)

To use the StackState GUI, you must use one of the following web browsers:

  • Chrome

  • Firefox