apigee runtime stateful nodes

Hi Experts,

Why are we creating in GKE cluster, three stateful/stateless nodes in each node pool, isn't that one node enough for each pool(stateful-apigeedata/stateless-apigeeruntime)  ? Pls advice

 

Thanks

yeramsh

0 9 189
9 REPLIES 9

To achieve high-availability its always a good practice to have application deployed in more than one node that exists across AZs in any standard cloud deployment.

Apigee Hybrid is designed and built for high availability SLOs , one of the core requirement to deliver high availability is by distributing runtime components across a minimum 3 node deployment (spread across AZs).

Note : For quick testing of Apigee Hybrid functions, you can customize the resource requests and limits for components and deploy in a single node. Check out this link for property reference used in customization. Again, for Prod deployments you should follow the recommended node sizing as per the official docs.

Hope this help.
Thanks

 

Thanks for your response.But this is dev/test env still we need 3 nodes in casendra(statefull) and stateless pool?

One more thing where are the api proxy bundles and shared flows stored i know not in Cassandra, I read like it is stored in local storage, i didn't follow it quite well what does this local storage mean? Pls advise.

Minimum 3 nodes for stateful and stateless nodepools is not needed for lower environments, if high-availability is not a requirement. If you are going for a single node make sure the machine is large enough to hold all the pods. The link I shared in my previous reply lists the config parameters you can customize to make the pods fit in a given set of nodes (lesser than the recommended).

Synchronizer fetches the proxy and shared-flow bundles from control plane. The downloaded bundles are stored locally and also pushed to cassandra. As cassandra is replicated across region (in multi region setup) the bundles are made available in runtime plane in all regions. 

Thanks

Thanks. So in that case when the api request comes to runtime, the runtime processor for api path/proxies will check against the cassendra or from local storage? 

During start up, the runtime pod (container)  pulls in the proxy bundles and loads as part of the process running within it. The incoming request are executed within the runtime process as per the proxy definition thats in the process memory.

Thanks

Well, when we create 3 nodes for stateful(apigeedata) does it gonna create 1 master and 2 worker nodes, am trying to understand why 3 nodes are being asked to create ? Pls advice. thanks

Cassandra wont operate on a master/slave architecture. Please review casandra architecture and data-replication for more answers. Few links I came across (link-1, link-2)

Apigee recommendation for three node cluster is for minimum production deployment architecture. For better high availability scenarios.

Thanks.

How about stateless(apigeeruntime), same thing as well no master/slave architecture?

As the name indicates they are stateless, they operate independently. The pods other than cassandra and redis are orchestrated and managed via Kubenetes. The Kubernetes control plane is in-charge of spinning up the stateless pods under various scenarios (scaling, performance etc)