Recommended Free Tools
For a small production Kafka deployment on Linux VPS, run three dedicated KRaft controllers and at least three brokers when the budget allows. Give every server a unique node.id, use the same controller voter list on every node in a static quorum, format every storage directory with one cluster ID, keep controller traffic on a private listener, and verify both metadata-quorum replication and topic replication before sending real traffic.
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
What you are building
Apache Kafka’s KRaft mode removes ZooKeeper from the metadata path. Instead, Kafka metadata is replicated by a controller quorum. Brokers serve client data, while controllers elect a metadata leader and replicate the cluster’s metadata log.
As an Amazon Associate I earn from qualifying purchases.
Availability depends on a majority of controllers remaining alive. Three controllers tolerate one controller failure without losing quorum availability; five tolerate two. An even number does not improve the failure budget because quorum still requires a majority. Plan the controller count around the number of simultaneous failures you must survive, not around the number of brokers you want to run.
A practical VPS layout is three controller nodes and three broker nodes. Separate roles prevent one host failure from removing both a metadata-quorum member and a data-serving broker. Combining controller and broker roles can reduce the VPS count for development or a very small workload, but it increases resource contention and couples metadata availability to broker load.
#1 Best Overall
- BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
- EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
- COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
- LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
- WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.
Recommended role layout
| Role | Small production layout | Purpose |
|---|---|---|
| Controllers | 3 nodes | Replicate metadata and elect the active controller. |
| Brokers | 3 or more nodes | Store topic partitions and serve producers and consumers. |
| Combined role | One or more nodes running both roles | Lower cost, but less isolation and more contention. |
Apache’s KRaft documentation states that a majority of controllers must be alive to maintain availability. A three-controller quorum therefore has a one-failure budget, while a five-controller quorum has a two-failure budget.
Choose static or dynamic controller membership
Kafka supports two ways to describe the controller quorum. Select one before formatting disks; do not mix the properties.
Static voter lists
Static deployments use controller.quorum.voters. Every controller and broker carries the same comma-separated list, and every voter ID must match the node.id of the controller at that address. This is straightforward for a fixed three- or five-controller installation.
Dynamic membership
Kafka 4.x documents dynamic controller membership through controller.quorum.bootstrap.servers. In this mode, omit controller.quorum.voters. Put as many controller bootstrap endpoints as possible in the bootstrap setting so a new node can discover the quorum. Dynamic membership is useful when controllers will be added or removed during the cluster’s life, but membership changes must be performed with the documented controller-management operations rather than by editing a static voter list.
| Decision | Static quorum | Dynamic quorum |
|---|---|---|
| Primary setting | controller.quorum.voters |
controller.quorum.bootstrap.servers |
| Controller list after startup | Fixed in each node’s configuration | Managed through quorum membership operations |
| Best fit | Stable, small installations | Installations expecting controller changes |
| Important rule | Every node uses the same voter list | Do not set the static voter list |
Plan the VPS network and names
Before installing Kafka, assign stable hostnames or private addresses for every controller and broker. Each controller endpoint in the quorum configuration must resolve from every controller and broker. Avoid changing private addresses after formatting, because the address is part of how nodes find one another.
Use separate listener purposes
- Controller listener: used only for KRaft metadata traffic and reachable from Kafka nodes over the private network.
- Broker listener: used by producers and consumers. Advertise an address that clients can actually reach.
- Inter-node traffic: use the listener and security protocol required by your organization’s authentication and encryption policy.
Do not expose the controller port to the public internet. Public access should terminate at broker listeners, protected with TLS or SASL when required. Firewall the controller listener so only the controller and broker private addresses can connect.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchRecord a node map
| Host | Role | Example private name | Example node ID | Example port |
|---|---|---|---|---|
| Controller 1 | controller | controller-1.example.internal |
1 |
9093 |
| Controller 2 | controller | controller-2.example.internal |
2 |
9093 |
| Controller 3 | controller | controller-3.example.internal |
3 |
9093 |
| Broker 1 | broker | broker-1.example.internal |
101 |
9092 |
| Broker 2 | broker | broker-2.example.internal |
102 |
9092 |
| Broker 3 | broker | broker-3.example.internal |
103 |
9092 |
The names and IDs above are examples. Replace them with your own stable private DNS names and unique IDs.
Rank #2
- WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
- AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
- PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
- ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
- COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed
Install the same Kafka release everywhere
- Provision the planned Linux VPS nodes and private networking.
- Install the same Kafka distribution version on every controller and broker.
- Use the same configuration template on all nodes, then change only values that are intentionally node-specific, such as
node.id, local listener address, log directories, and advertised broker address. - Confirm that each host can resolve and connect to every controller endpoint over the private network.
- Place Kafka data and metadata directories on storage with enough free space and predictable latency. Monitor latency and free space after startup.
The official KRaft material is distribution-neutral: it does not prescribe a Linux distribution, systemd unit, VPS vendor, CPU or RAM size, storage class, or hosting price. Choose those from workload measurements and the limits of your provider.
Write the controller configuration
The following is a static-quorum pattern for controller-only nodes. Use the same three-voter list on all controllers, but change node.id and the local listener for each host.
process.roles=controller
node.id=1
listeners=CONTROLLER://controller-1.example.internal:9093
controller.listener.names=CONTROLLER
[email protected]:9093,[email protected]:9093,[email protected]:9093
On controller 2, set node.id=2 and listen on controller-2.example.internal:9093. On controller 3, set node.id=3 and listen on controller-3.example.internal:9093. Keep the complete voter list unchanged on all three.
Why each property matters
process.roles=controllermakes the process controller-only.node.iduniquely identifies this Kafka server. Reusing an ID causes identity and quorum problems.listenersbinds the controller endpoint advertised inside the quorum.controller.listener.namestells Kafka which listener carries controller traffic.controller.quorum.votersmaps each voter ID to its controller endpoint. The ID before@must match that controller’snode.id.
Write the broker configuration
A broker-only node needs a unique ID, a broker listener, and the controller connection settings. This example uses plaintext only to show the topology; replace it with the approved SSL, SASL_SSL, or other security protocol for production.
process.roles=broker
node.id=101
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://broker-1.example.internal:9092
controller.listener.names=CONTROLLER
[email protected]:9093,[email protected]:9093,[email protected]:9093
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
Give broker 2 and broker 3 different IDs and advertised addresses, such as 102/broker-2.example.internal:9092 and 103/broker-3.example.internal:9092. Every broker still uses the same static voter list.
Listener checks before startup
- The listener name in
controller.listener.namesmust exist inlistenersor the relevant listener configuration. - Every listener name must map to a security protocol in
listener.security.protocol.map. advertised.listenersmust contain a name and address reachable by the intended clients, not merely0.0.0.0.- Controller addresses should use private DNS or private IPs and must not be advertised as public client endpoints.
Generate one cluster ID and format every node
KRaft storage must be initialized before startup. Formatting creates the metadata files and the initial checkpoint needed for a node to participate. All nodes in the cluster must use one cluster ID.
- On one Kafka installation, generate an ID:
bin/kafka-storage.sh random-uuid
- Record the returned value securely. Do not generate a different value for each VPS.
- On each controller and broker, run
kafka-storage.sh formatwith that same cluster ID and the node’s intended configuration. Use the configuration file that contains that node’s final role, ID, listeners, and quorum settings. - Check the command output and confirm that the expected data and metadata directories were formatted.
The exact formatting command depends on the Kafka distribution’s configuration-file location, but it must pass the generated cluster ID and the correct node-specific configuration. Formatting a node that contains data you intend to preserve can destroy the metadata needed to use that data; stop and back up any existing installation before formatting.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Rank #3
- Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
- Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
- Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
- ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
- Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)
Start the quorum before the brokers
- Start the controller service on controller 1.
- Start controllers 2 and 3.
- Use the metadata-quorum command to confirm that a leader is elected and that the expected controllers are present.
- Only after the quorum is stable, start broker 1, broker 2, and broker 3.
- Check broker logs for successful registration, controller connectivity, and listener binding.
- Confirm that clients can resolve the advertised broker names from their actual network location.
Starting all processes at once can obscure whether a failure is caused by storage formatting, controller election, DNS, firewalling, or broker registration. Bringing up controllers first gives each later check a clear dependency.
Configure replication and durability
Controller replication protects metadata; topic replication protects user data. They are separate failure domains and both must be designed.
Choose a topic replication factor
Set each user topic’s replication factor high enough for the broker failures you intend to tolerate. A three-replica topic spread across three brokers has a different capacity and recovery profile from a three-replica topic spread across six brokers. More replicas consume storage and network bandwidth and can increase write latency, but they provide more copies during a broker failure.
Pair replicas with in-sync requirements
Set min.insync.replicas so acknowledged writes require the intended number of in-sync replicas. Configure producers with acknowledgements that require durable writes. The correct values depend on the failure budget, usable storage, network bandwidth, write latency, and recovery-time objective.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesProtect internal topics
Consumer-offset and transaction-state topics are operationally important. Set their replication values to match the durability you require and the number of brokers available. Kafka’s maintained server.properties example exposes those internal-topic settings; do not leave them at values that undermine the durability policy of your user topics.
Secure the listeners and credentials
Use a dedicated controller listener and firewall its port to Kafka nodes only. For client and inter-node traffic, enable TLS and/or SASL when authentication or encryption is required. Map every listener name to the intended protocol, and test the resulting connection from each network zone.
- Keep private keys, passwords, and SASL credentials out of world-readable configuration files.
- Apply Kafka ACLs with the authorizer appropriate to the Kafka version and your access model.
- Allow public firewall rules only for broker listener ports that genuinely need public access.
- Prefer private networking for controller traffic even when brokers have public client endpoints.
Verify quorum health
A process that starts successfully is not proof that the quorum is healthy. Check leader election, voter reachability, and replication explicitly.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Rank #4
- Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
- Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
- 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
- Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
- USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
Inspect quorum status
bin/kafka-metadata-quorum.sh --bootstrap-controller controller-1.example.internal:9093 describe
Run this with a controller bootstrap address reachable from the machine issuing the command. The output should identify an elected leader and show the expected quorum members. Repeat against another controller endpoint if you are testing endpoint reachability.
Inspect metadata replication
bin/kafka-metadata-quorum.sh --bootstrap-controller controller-1.example.internal:9093 describe --replication
Use this after initial startup and after any controller membership change. In a dynamic quorum, monitor a newly started controller with this command until it catches up. Add the controller using the documented add-controller operation only after it has caught up; remove a controller from the quorum before shutting it down.
Verify brokers, partitions, and clients
Inspect topic assignments
bin/kafka-topics.sh --bootstrap-server broker-1.example.internal:9092 --describe --topic example
Check that partitions have the expected replicas, a leader, and no offline or under-replicated state. Repeat for representative production topics rather than checking only a newly created test topic.
Run a producer and consumer smoke test
bin/kafka-console-producer.sh --bootstrap-server broker-1.example.internal:9092 --topic example
bin/kafka-console-consumer.sh --bootstrap-server broker-2.example.internal:9092 --topic example --from-beginning
Send a test record and confirm that the consumer receives it through a different broker. This exercises broker listener reachability, topic metadata, partition leadership, and basic data flow.
Free tools Windows power users keep installed
One-click scans. No signup required.
Production-readiness checklist
- Metadata quorum has a leader and all intended voters are reachable.
- Controller metadata replicas are caught up.
- Every broker has a unique ID and is registered.
- Topic assignments have no offline partitions or unexpected under-replication.
- Producer acknowledgements and
min.insync.replicasmatch the failure policy. - Consumer-offset and transaction-state topics have appropriate replication.
- Controller ports are private and firewall rules are verified.
- TLS/SASL, ACLs, credentials, and private keys follow the organization’s security policy.
- Disk free space, disk latency, JVM or heap pressure, packet loss, and service-manager logs are monitored.
- Controller election events and broker recovery events are visible in operational logs.
Handle common setup failures
Quorum will not elect a leader
Check that a majority of controllers are running, that every voter ID matches the corresponding controller’s node.id, and that each controller can resolve and connect to every other controller’s private endpoint. A three-controller quorum cannot remain available with two controllers down.
A broker cannot register
Verify that the broker’s voter list exactly matches the controllers’ list, that its node.id is unique, and that the controller listener is allowed through the private firewall. Inspect service logs for listener-name or security-protocol mapping errors.
Clients connect but receive unusable addresses
Inspect advertised.listeners. It must contain an address resolvable and reachable by the client, while the bind listener may use 0.0.0.0. Correct DNS, routing, and firewall rules together; changing only the bind address does not fix an incorrect advertised address.
Best Value
- Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
- Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
- Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
- Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
- Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.
Formatting or startup reports a cluster mismatch
Confirm that every node was formatted with the same generated cluster ID and with the configuration intended for that node. Do not reformat a node containing data you need to preserve. Stop the service, take a backup, and resolve the identity or directory mismatch before attempting a destructive reinitialization.
Partitions remain under-replicated
Check broker logs, network packet loss, disk latency, free space, and heap pressure. Verify that the failed broker is reachable and that replicas are assigned to the brokers you expect. Recovery time is constrained by storage throughput and network bandwidth, so a cluster can be correctly configured yet recover slowly under load.
Plan scaling, replacement, and failure recovery
Record the expected failure budget and recovery objective before choosing VPS counts. Compare controller count, role separation, private versus public listeners, topic replication, usable capacity, network bandwidth, write latency, and recovery time as one design rather than optimizing a single number.
Replacing a static-quorum controller
A static voter list is intentionally fixed. A replacement controller must use the expected voter ID and endpoint, or the quorum configuration must be changed in a coordinated maintenance procedure. Never create a second live node with the same node.id.
Adding a dynamic controller
- Provision the new VPS with the same Kafka distribution version.
- Configure
controller.quorum.bootstrap.serverswith reachable controller endpoints and omitcontroller.quorum.voters. - Format its storage with the existing cluster ID and the node’s intended configuration.
- Start it and monitor catch-up with
kafka-metadata-quorum.sh ... describe --replication. - Use the documented add-controller operation after it catches up.
Removing a controller
Remove the controller from the quorum using the documented membership operation before shutting down its process. In a static design, plan the voter-list change as a coordinated configuration and restart procedure; do not simply power off a voter and assume the cluster has been reconfigured.
Final design decision
Use three dedicated controllers and three or more brokers for a small production VPS cluster when isolation is affordable. Use five controllers only when the additional two-failure controller budget justifies the cost and operational complexity. Choose static voters for a stable topology and dynamic bootstrap membership when controller changes are a planned operational requirement. Whichever model you select, the non-negotiable controls are unique node IDs, one cluster ID, correctly formatted KRaft storage, private controller networking, reachable advertised broker addresses, and explicit quorum and replica-health checks.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




