For deploy a YugabyteDB cluster we will use docker.

In this example we will deploy a 3 nodes cluster with 3 masters and 3 tservers. All of these services will be deployed in the three nodes.

This configuration is not typical, but it is useful for production environments.

My changes fot tserver are:

  • rpc_bind_addresses and server_broadcast_addresses changed default due to use the same port for node_exporter.
  • rpc_bind_addresses - listen on all interfaces with dual stack. My application is using IPv6.
services:
  yugabytedb-master:
    image: yugabytedb/yugabyte:2024.1.1.0-b137
    container_name: yugabytedb-master
    network_mode: "host"
    restart: on-failure
    volumes:
      - /var/mnt/yugabytedb/master/data:/mnt/data
    command:
      - "/home/yugabyte/bin/yb-master"
      - "--fs_data_dirs=/mnt/data"
      - "--server_broadcast_addresses=100.64.2.35"
      - "--master_addresses=100.64.2.35:7100,100.64.2.28:7100,100.64.2.25:7100"
      - "--rpc_bind_addresses=[::]:7100"
      - "--replication_factor=3"
      - "--placement_cloud=onprem"
      - "--placement_region=eu-central"
      - "--placement_zone=rack1"

  yugabytedb-tserver:
    image: yugabytedb/yugabyte:2024.1.1.0-b137
    container_name: yugabytedb-tserver
    network_mode: "host"
    restart: on-failure
    volumes:
      - /var/mnt/yugabytedb/tserver/data:/mnt/data
    command:
      - "/home/yugabyte/bin/yb-tserver"
      - "--fs_data_dirs=/mnt/data"
      - "--server_broadcast_addresses=100.64.2.35:7220"
      - "--tserver_master_addrs=100.64.2.35:7100,100.64.2.28:7100,100.64.2.25:7100"
      - "--rpc_bind_addresses=[::]:7220"
      - "--enable_ysql"
      - "--placement_cloud=onprem"
      - "--placement_region=eu-central"
      - "--placement_zone=rack1"