OpenShift v2 Node architecture

Updated -

OpenShift nodes are responsible for serving HTTP requests to clients. These are typically requests for applications, not management requests, which are handled by the broker. Depending on if the application is a 'scaled' application or not, a load balancer may be used to split requests between the same application, hosted on different nodes.

It's recommended you read this article for some background on the terminology used in this article, [1]. Also this is a related article about the OpenShift Broker architecture, [2].

[1] https://openshift.redhat.com/community/wiki/architecture-overview
[2] https://access.redhat.com/knowledge/node/264513

Each node has an Apache HTTPD instance which acts as a reverse proxy for the gear running the application. This HTTPD instance uses virtual hosts to manage requests for different applications and domains. The process that actually runs in a gear depends on the application type. For example, JBoss applications run in a JBoss process, whereas PHP applications run in another HTTPD instance.

Incoming application traffic

Scaled applications require a load balancer to split requests between multiple gears hosting the same application. This allows the application to scale to serve more requests by spreading out the load to multiple OpenShift nodes. The load balancer used by OpenShift is called HAProxy. HAProxy was chosen because it's capable of load balancing TCP requests, as well as it's speed and memory usage under load.

Inter-Gear TCP Communication

When a scaled application is created, the process (for example, JBoss) is deployed alongside a HAProxy process on a gear. When requests are proxied to the gear, they reach the HAProxy process, which may choose to proxy the request onto another node, or serve it from the local (JBoss) process. If a request is proxied to another gear, it will be served by the (JBoss) process directly.

This article was a brief overview of how client requests are handled by OpenShift nodes. These are the actual HTTP requests for applications, not the request for managing the application. For a scaled application HAProxy is always used to proxy requests.

Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.