This project sets up a 5-node network topology using Containerlab, along with Serf agents for decentralized cluster membership and node communication. It's useful for experimenting with service discovery, failure detection, and distributed coordination in lab environments.
ceso5node.ymlβ Main Containerlab topology definition file.clab-century/β Contains node-specific configs, TLS materials, inventory, and logs.setup_nodes.shβ Orchestrates the setup of nodes.ipaddressing.shβ Assigns IP addresses to nodes.serf_agents_start.shβ Starts Serf agents.serf_agents_joining.shβ Manages the joining of nodes to the Serf cluster.serf/β Contains Serf binary .pytogoapi/β Web Server API for Python (custom implementation).
- Docker & Containerlab installed
- Bash or Linux shell
- Git (for cloning and version control)
# Step 1: Clone the repo
git clone https://github.com/anjumm/gopyserf.git
# Step 2: Deploy the topology
sudo containerlab deploy -t ceso5node.yml
# Step 3: Assign IPs
./ipaddressing.sh
# Step 3: Setting Nodes
./setup_nodes.sh
# Step 4: Start Serf agents
./serf_agents_start.sh
# Step 5: Join nodes into the cluster
./serf_agents_joining.sh