# for a simple setup, cadence-server.nomad.hcl does it all. # use cadence-web.nomad.hcl for web ui service. # see files 3 to 6 to run each server service component individually. # comes handy when you must allocate resources and/or measure metrics # more precisely. # # individual service jobs can be mixed with cadence-server.nomad.hcl # on the same cluster without conflict. # currently requires you to run cassandra schema migrations manually # (run 1 job with 0.11.0-auto-setup image) job cadence-server { datacenters = ["dc1"] type = "service" priority = 75 # constraint { # attribute = "${meta.tags}" # operator = "set_contains" # value = "cadence-services" # } group cadence-server { count = 3 constraint { distinct_hosts = true } task cadence-server { driver = "docker" kill_timeout = "30s" config { image = "ubercadence/server:0.11.0" network_mode = "host" volumes = [ "local/dynamicconfig.yml:/etc/cadence/config/dynamicconfig/dynamicconfig.yml" ] } service { name = "cadence-frontend" port = "frontend" check { type = "tcp" interval = "5s" timeout = "15s" initial_status = "passing" } } service { name = "cadence-history" port = "history" check { type = "tcp" interval = "5s" timeout = "15s" initial_status = "passing" } } service { name = "cadence-matching" port = "matching" check { type = "tcp" interval = "5s" timeout = "15s" initial_status = "passing" } } service { name = "cadence-worker" port = "worker" check { type = "tcp" interval = "5s" timeout = "15s" initial_status = "passing" } } service { name = "cadence-server" tags = ["metrics", "metrics-port=${NOMAD_PORT_prometheus}"] } env { # change requires db reset NUM_HISTORY_SHARDS = 4 LOG_LEVEL = "info" SERVICES = "frontend,history,matching,worker" BIND_ON_IP = "${NOMAD_IP_frontend}" CASSANDRA_SEEDS = "cassandra-cluster1-node1.node.consul,cassandra-cluster1-node2.node.consul,cassandra-cluster1-node3.node.consul" DB = "cassandra" RF = 3 KEYSPACE = "cadence" VISIBILITY_KEYSPACE = "cadence_visibility" SKIP_SCHEMA_SETUP = true DYNAMIC_CONFIG_FILE_PATH = "/etc/cadence/config/dynamicconfig/dynamicconfig.yml" RINGPOP_BOOTSTRAP_MODE = "dns" RINGPOP_SEEDS = "cadence-frontend.service.consul:7933,cadence-history.service.consul:7934,cadence-matching.service.consul:7935,cadence-worker.service.consul:7939" PROMETHEUS_ENDPOINT = "${NOMAD_ADDR_prometheus}" } template { change_mode = "noop" destination = "local/dynamicconfig.yml" data = <