Agent Groups

How to split Agents for a cluster into different "groups".

Agent Groups

Agent Groups are distinct sets of Agents that all belong to the same logical cluster. Groups enable a single logical cluster to be split into many different "groups" that are isolated at the network / service discovery layer.

For example, consider the scenario where a single logical WarpStream cluster is "flexed" across multiple VPCs, regions, or even cloud providers:

For example, in the diagram above producer and consumer clients running in vpc_1 will only ever connect to Agents running in group_vpc_1. Similarly, producers and consumer running in vpc_2 will only ever connect to Agents running in group_vpc_2. However, since both Agent Groups belong to the same logical virtual cluster and have access to the same object storage bucket, clients in each VPC will be able to write and read data for all topics and partitions, even those that were created by clients / Agents running in a completely different VPC!

Agent groups are a powerful abstraction that enable a variety of use-cases:

  1. Isolating specific producers or consumers to dedicated Agent Groups to avoid noisy neighbors.

  2. "Flexing" a single logical cluster across multiple VPCs, regions, or even clouds providers without resorting to complex VPC peering setups.

Configuration

Configuring Agent Groups is simple. Just add the -agentGroup $GROUP_NAME flag to your Agent deployment. For example, if you wanted to flex a single logical WarpStream cluster across two Kubernetes clusters running in different VPCs:

# In Kubernetes cluster 1
warpstream agent -virtualClusterID $CLUSTER_ID -agentGroup group_1

# In Kubernetes cluster 2
warpstream agent -virtualClusterID $CLUSTER_ID -agentGroup group_2

Alternatively, you can set the WARPSTREAM_AGENT_GROUP environment variable instead.

Last updated

Logo

Apache, Apache Kafka, Kafka, and associated open source project names are trademarks of the Apache Software Foundation. Kinesis is a trademark of Amazon Web Services.