Clustering#
Gluu Gateway is based on the Kong Gateway, which supports clustering. Kong's docs about clustering are available here.
A Kong cluster can scale the system horizontally by adding more machines/VMs/containers to handle more incoming requests.
To configure multiple Kong nodes into a cluster, point them all to the same datastore or use the same declarative configuration in DB-less mode.
A load balancer is required in front of the Kong cluster to distribute traffic across the available nodes.
Architecture#
GG has some more components for full integration, Kong
, GG UI
, OXD-server
and Gluu Server
.
There are two approaches in Kong for configuration storage.
GG Kong DB Clustering#
In this approach Kong
uses the Database(Postgres or Cassandra)
to store the Services
, Routes
, Plugins
and Consumer
.
You can see in below diagram it using Kong Database
for storing configuration and same database access by every Kong Node.
GG Kong DB-less Clustering#
In this approach Kong uses the second configuration file, in YAML or JSON, using declarative configuration.
To use Kong in DB-less mode, set the database
directive of kong.conf
to off
. As usual, you can do this by editing kong.conf
and setting database=off
or via environment variables. You can then start Kong as usual.
Check here for Kong DB-less configurations.
In below diagram there is no Kong Database
. It use YAML Configuration file on every node with same configurations.
Components and configurations#
-
Kong Node
You need to install Kong on every Node. Which will share the same Database and Configurations.
-
GG UI
You need only
one UI
to configure Kong. InDB-Less
mode, you only see the configurations. To update the configuration, you need to update the YAML Config file. -
Plugins
You can use any kong approach to store the configurations. In diagrams there is one
rate-limiting
plugin example. Which point to sameredis
server for data store, accsss and share between all the kong nodes.
Set up the Gluu Gateway node#
Before Setup Nodes, You need to install the GG one any one node so you have GG UI
and Postgres DB
. which you can connect to other nodes for quick setup.
Below are the 2 steps to setup the kong nodes.
1. Install Kong#
-
Ubuntu 20/18
- Follow this link to download and install kong on Ubuntu (Focal or Bionic).
-
Debian 10/9
- Follow this link to download and install kong on Debian (Buster or Stretch).
-
RHEL 8/7
- Follow this link to download and install kong on RHEL.
-
CentOS 8/7
- Follow this link to download and install kong on CentOS.
2. Set up GG plugins and libraries#
-
Download gluu-gateway-node-deps.tar.gz
-
tar -xvzf gluu-gateway-node-deps.tar.gz
-
cd gluu-gateway-node-deps
-
python gg-kong-node-setup.py
-
The script will ask the following questions about the Postgres database, which is shared between the nodes. If you want to configure DB-less then after this setup, you need to manually update the
kong.conf
.Questions Descriptions Enter PG host Enter your Postgres database host or IP Enter PG Port Enter your Postgres database port Enter PG User Enter your Postgres database user Enter PG Password Enter your Postgres database password. It will not show during typing values, so you just need to type your password. Enter PG Database Enter your Postgres database name which you are already sharing between multiple kong nodes. -
Done. If any problems arise, check the
gg-kong-setup-error.log
andgg-kong-setup.log
log files.
Other Kong configurations are adjusted by updating /etc/kong/kong.conf
.