Skip to content

Instantly share code, notes, and snippets.

@langerma
Created March 3, 2023 08:11
Show Gist options
  • Save langerma/f51abcb60dc344df8378aa8c45899b43 to your computer and use it in GitHub Desktop.
Save langerma/f51abcb60dc344df8378aa8c45899b43 to your computer and use it in GitHub Desktop.
job "druid" {
datacenters = ["hetzner"]
constraint {
attribute = "${attr.kernel.name}"
value = "linux"
}
update {
stagger = "10s"
max_parallel = 1
}
group "coordinator" {
network {
port "coordinator" {
}
mode = "host"
}
restart {
attempts = 2
interval = "1m"
delay = "10s"
mode = "fail"
}
task "coordinator" {
driver = "docker"
config {
hostname = "coordinator"
image = "apache/druid:0.22.0"
ports = ["coordinator"]
network_mode = "host"
args = [
"coordinator",
]
}
template {
data = <<EOT
DRUID_XMX="128m"
DRUID_XMS="128m"
DRUID_MAXNEWSIZE="120m"
DRUID_NEWSIZE="120m"
DRUID_MAXDIRECTMEMORYSIZE="6172m"
#druid_emitter_logging_logLevel="debug"
druid_extensions_loadList='["druid-histogram","druid-datasketches","druid-lookups-cached-global","postgresql-metadata-storage","druid-kafka-indexing-service","druid-s3-extensions"]'
druid_zk_service_host={{ range $index, $element := service "zookeeper|any" }}{{ printf "%s:%d," .Address 2181 }}{{ end }}
#druid_metadata_storage_host="database-postgres.service.consul"
druid_metadata_storage_type="postgresql"
druid_metadata_storage_connector_connectURI="jdbc:postgresql://database-postgres.service.consul:5432/druid"
druid_metadata_storage_connector_user="druid"
druid_metadata_storage_connector_password="druidpassword"
druid_coordinator_balancer_strategy="cachingCost"
druid_indexer_runner_javaOptsArray='["-server", "-Xmx256m", "-Xms256m", "-XX:MaxDirectMemorySize=200m", "-Duser.timezone=UTC", "-Dfile.encoding=UTF-8", "-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager"]'
druid_indexer_fork_property_druid_processing_buffer_sizeBytes="256MiB"
#druid_storage_type="local"
#druid_storage_storageDirectory="/opt/shared/segments"
druid_indexer_logs_type="file"
#druid_indexer_logs_directory="/opt/shared/indexing-logs"
druid_processing_numThreads="2"
druid_processing_numMergeBuffers="2"
#DRUID_LOG4J="<?xml version="1.0" encoding="UTF-8" ?><Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/></Console></Appenders><Loggers><Root level="info"><AppenderRef ref="Console"/></Root><Logger name="org.apache.druid.jetty.RequestLog" additivity="false" level="DEBUG"><AppenderRef ref="Console"/></Logger></Loggers></Configuration>"
druid_storage_bucket="druid"
druid_storage_baseKey="druid"
druid_storage_type="s3"
druid_s3_accessKey="key"
druid_s3_secretKey="secret"
druid_s3_protocol="http"
druid_s3_endpoint_url="http://minio.service.consul:9000"
druid_s3_enablePathStyleAccess="true"
EOT
destination = "secrets/file.env"
env = true
change_mode = "restart"
}
env {
druid_plaintextPort = "${NOMAD_PORT_coordinator}"
druid_host = "${NOMAD_IP_coordinator}"
}
service {
name = "druid-coordinator"
tags = [
"global",
"druid",
"log"
]
port = "coordinator"
check {
name = "alive"
type = "tcp"
interval = "10s"
timeout = "2s"
}
}
resources {
memory = 1024
}
}
}
group "broker" {
network {
port "broker" {
#to = 8082
}
mode = "host"
}
restart {
attempts = 2
interval = "1m"
delay = "10s"
mode = "fail"
}
task "broker" {
driver = "docker"
config {
hostname = "broker"
image = "apache/druid:0.22.0"
ports = ["broker"]
network_mode = "host"
args = [
"broker",
]
}
template {
data = <<EOT
DRUID_XMX="128m"
DRUID_XMS="128m"
DRUID_MAXNEWSIZE="120m"
DRUID_NEWSIZE="120m"
DRUID_MAXDIRECTMEMORYSIZE="6172m"
#druid_emitter_logging_logLevel="debug"
druid_extensions_loadList='["druid-histogram","druid-datasketches","druid-lookups-cached-global","postgresql-metadata-storage","druid-kafka-indexing-service","druid-s3-extensions"]'
druid_zk_service_host={{ range $index, $element := service "zookeeper|any" }}{{ printf "%s:%d," .Address 2181 }}{{ end }}
#druid_metadata_storage_host="database-postgres.service.consul"
druid_metadata_storage_type="postgresql"
druid_metadata_storage_connector_connectURI="jdbc:postgresql://database-postgres.service.consul:5432/druid"
druid_metadata_storage_connector_user="druid"
druid_metadata_storage_connector_password="druidpassword"
druid_coordinator_balancer_strategy="cachingCost"
druid_indexer_runner_javaOptsArray='["-server", "-Xmx128m", "-Xms128m", "-XX:MaxDirectMemorySize=100m", "-Duser.timezone=UTC", "-Dfile.encoding=UTF-8", "-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager"]'
druid_indexer_fork_property_druid_processing_buffer_sizeBytes="256MiB"
#druid_storage_type="local"
#druid_storage_storageDirectory="/opt/shared/segments"
druid_indexer_logs_type="file"
#druid_indexer_logs_directory="/opt/shared/indexing-logs"
druid_processing_numThreads="2"
druid_processing_numMergeBuffers="2"
#DRUID_LOG4J="<?xml version="1.0" encoding="UTF-8" ?><Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/></Console></Appenders><Loggers><Root level="info"><AppenderRef ref="Console"/></Root><Logger name="org.apache.druid.jetty.RequestLog" additivity="false" level="DEBUG"><AppenderRef ref="Console"/></Logger></Loggers></Configuration>"
druid_storage_bucket="druid"
druid_storage_baseKey="druid"
druid_storage_type="s3"
druid_s3_accessKey="key"
druid_s3_secretKey="secret"
druid_s3_protocol="http"
druid_s3_endpoint_url="http://minio.service.consul:9000"
druid_s3_enablePathStyleAccess="true"
EOT
destination = "secrets/file.env"
env = true
change_mode = "restart"
}
env {
druid_plaintextPort = "${NOMAD_PORT_broker}"
druid_host = "${NOMAD_IP_broker}"
}
service {
name = "druid-broker"
tags = [
"global",
"druid",
"log"
]
port = "broker"
check {
name = "alive"
type = "tcp"
interval = "10s"
timeout = "2s"
}
}
resources {
memory = 2500
}
}
}
group "historical" {
network {
port "historical" {
}
mode = "host"
}
restart {
attempts = 2
interval = "1m"
delay = "10s"
mode = "fail"
}
task "historical" {
driver = "docker"
config {
hostname = "historical"
image = "apache/druid:0.22.0"
ports = ["historical"]
network_mode = "host"
args = [
"historical",
]
}
template {
data = <<EOT
DRUID_XMX="128m"
DRUID_XMS="128m"
DRUID_MAXNEWSIZE="120m"
DRUID_NEWSIZE="120m"
DRUID_MAXDIRECTMEMORYSIZE="6172m"
#druid_emitter_logging_logLevel="debug"
druid_extensions_loadList='["druid-histogram","druid-datasketches","druid-lookups-cached-global","postgresql-metadata-storage","druid-kafka-indexing-service","druid-s3-extensions"]'
druid_zk_service_host={{ range $index, $element := service "zookeeper|any" }}{{ printf "%s:%d," .Address 2181 }}{{ end }}
#druid_metadata_storage_host="database-postgres.service.consul"
druid_metadata_storage_type="postgresql"
druid_metadata_storage_connector_connectURI="jdbc:postgresql://database-postgres.service.consul:5432/druid"
druid_metadata_storage_connector_user="druid"
druid_metadata_storage_connector_password="druidpassword"
druid_coordinator_balancer_strategy="cachingCost"
druid_indexer_runner_javaOptsArray='["-server", "-Xmx128m", "-Xms128m", "-XX:MaxDirectMemorySize=100m", "-Duser.timezone=UTC", "-Dfile.encoding=UTF-8", "-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager"]'
druid_indexer_fork_property_druid_processing_buffer_sizeBytes="256MiB"
#druid_storage_type="local"
#druid_storage_storageDirectory="/opt/shared/segments"
druid_indexer_logs_type="file"
#druid_indexer_logs_directory="/opt/shared/indexing-logs"
druid_processing_numThreads="2"
druid_processing_numMergeBuffers="2"
#DRUID_LOG4J="<?xml version="1.0" encoding="UTF-8" ?><Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/></Console></Appenders><Loggers><Root level="info"><AppenderRef ref="Console"/></Root><Logger name="org.apache.druid.jetty.RequestLog" additivity="false" level="DEBUG"><AppenderRef ref="Console"/></Logger></Loggers></Configuration>"
druid_storage_bucket="druid"
druid_storage_baseKey="druid"
druid_storage_type="s3"
druid_s3_accessKey="key"
druid_s3_secretKey="secret"
druid_s3_protocol="http"
druid_s3_endpoint_url="http://minio.service.consul:9000"
druid_s3_enablePathStyleAccess="true"
EOT
destination = "secrets/file.env"
env = true
change_mode = "restart"
}
env {
druid_plaintextPort = "${NOMAD_PORT_historical}"
druid_host = "${NOMAD_IP_historical}"
}
service {
name = "druid-historical"
tags = [
"global",
"druid",
"log"
]
port = "historical"
check {
name = "alive"
type = "tcp"
interval = "10s"
timeout = "2s"
}
}
resources {
memory = 2500
}
}
}
group "middlemanager" {
network {
port "middlemanager" {
}
port "runner1" {
}
port "runner2" {
}
port "runner3" {
}
port "runner4" {
}
port "runner5" {
}
mode = "host"
}
restart {
attempts = 2
interval = "1m"
delay = "10s"
mode = "fail"
}
task "middlemanager" {
driver = "docker"
config {
hostname = "${node.unique.name}"
image = "apache/druid:0.22.0"
ports = ["middlemanager"]
network_mode = "host"
args = [
"middleManager",
]
}
template {
data = <<EOT
DRUID_XMX="1024m"
DRUID_XMS="1024m"
DRUID_MAXNEWSIZE="500m"
DRUID_NEWSIZE="500m"
DRUID_MAXDIRECTMEMORYSIZE="6172m"
#druid_emitter_logging_logLevel="debug"
druid_extensions_loadList='["druid-histogram","druid-datasketches","druid-lookups-cached-global","postgresql-metadata-storage","druid-kafka-indexing-service","druid-s3-extensions"]'
druid_zk_service_host={{ range $index, $element := service "zookeeper|any" }}{{ printf "%s:%d," .Address 2181 }}{{ end }}
#druid_metadata_storage_host="database-postgres.service.consul"
druid_metadata_storage_type="postgresql"
druid_metadata_storage_connector_connectURI="jdbc:postgresql://database-postgres.service.consul:5432/druid"
druid_metadata_storage_connector_user="druid"
druid_metadata_storage_connector_password="druidpassword"
druid_coordinator_balancer_strategy="cachingCost"
druid_indexer_runner_javaOptsArray='["-server", "-Xmx1024m", "-Xms1024m", "-XX:MaxDirectMemorySize=6048m", "-Duser.timezone=UTC", "-Dfile.encoding=UTF-8", "-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager"]'
druid_indexer_fork_property_druid_processing_buffer_sizeBytes="512MiB"
#druid_storage_type="local"
#druid_storage_storageDirectory="/opt/shared/segments"
druid_indexer_logs_type="file"
druid_indexer_logs_directory="/alloc/logs"
druid_processing_numThreads="4"
druid_processing_numMergeBuffers="4"
#DRUID_LOG4J='<?xml version="1.0" encoding="UTF-8" ?><Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/></Console></Appenders><Loggers><Root level="info"><AppenderRef ref="Console"/></Root><Logger name="org.apache.druid.jetty.RequestLog" additivity="false" level="DEBUG"><AppenderRef ref="Console"/></Logger></Loggers></Configuration>'
druid_storage_bucket="druid"
druid_storage_baseKey="druid"
druid_storage_type="s3"
druid_s3_accessKey="key"
druid_s3_secretKey="secret"
druid_s3_protocol="http"
druid_s3_endpoint_url="http://minio.service.consul:9000"
druid_s3_enablePathStyleAccess="true"
EOT
destination = "secrets/file.env"
env = true
change_mode = "restart"
}
env {
druid_plaintextPort = "${NOMAD_PORT_middlemanager}"
druid_host = "${NOMAD_IP_middlemanager}"
druid_indexer_runner_ports = "[${NOMAD_PORT_runner1},${NOMAD_PORT_runner2},${NOMAD_PORT_runner3},${NOMAD_PORT_runner4},${NOMAD_PORT_runner5}]"
}
service {
name = "druid-middlemanager"
tags = [
"global",
"druid",
"log"
]
port = "middlemanager"
check {
name = "alive"
type = "tcp"
interval = "10s"
timeout = "2s"
}
}
resources {
memory = 8000
}
}
}
group "router" {
network {
port "router" {
}
mode = "host"
}
restart {
attempts = 2
interval = "1m"
delay = "10s"
mode = "fail"
}
task "router" {
driver = "docker"
config {
hostname = "${node.unique.name}"
image = "apache/druid:0.22.0"
ports = ["router"]
network_mode = "host"
args = [
"router",
]
}
template {
data = <<EOT
DRUID_XMX="128m"
DRUID_XMS="128m"
DRUID_MAXNEWSIZE="120m"
DRUID_NEWSIZE="120m"
DRUID_MAXDIRECTMEMORYSIZE="6172m"
#druid_emitter_logging_logLevel="debug"
druid_extensions_loadList='["druid-histogram","druid-datasketches","druid-lookups-cached-global","postgresql-metadata-storage","druid-kafka-indexing-service","druid-s3-extensions"]'
druid_zk_service_host={{ range $index, $element := service "zookeeper|any" }}{{ printf "%s:%d," .Address 2181 }}{{ end }}
#druid_metadata_storage_host="database-postgres.service.consul"
druid_metadata_storage_type="postgresql"
druid_metadata_storage_connector_connectURI="jdbc:postgresql://database-postgres.service.consul:5432/druid"
druid_metadata_storage_connector_user="druid"
druid_metadata_storage_connector_password="druidpassword"
druid_coordinator_balancer_strategy="cachingCost"
druid_indexer_runner_javaOptsArray='["-server", "-Xmx128m", "-Xms128m", "-XX:MaxDirectMemorySize=100m", "-Duser.timezone=UTC", "-Dfile.encoding=UTF-8", "-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager"]'
druid_indexer_fork_property_druid_processing_buffer_sizeBytes="256MiB"
#druid_storage_type="local"
#druid_storage_storageDirectory="/opt/shared/segments"
druid_indexer_logs_type="file"
#druid_indexer_logs_directory="/opt/shared/indexing-logs"
druid_processing_numThreads="2"
druid_processing_numMergeBuffers="2"
#DRUID_LOG4J='<?xml version="1.0" encoding="UTF-8" ?><Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/></Console></Appenders><Loggers><Root level="info"><AppenderRef ref="Console"/></Root><Logger name="org.apache.druid.jetty.RequestLog" additivity="false" level="DEBUG"><AppenderRef ref="Console"/></Logger></Loggers></Configuration>'
druid_storage_bucket="druid"
druid_storage_baseKey="druid"
druid_storage_type="s3"
druid_s3_accessKey="key"
druid_s3_secretKey="secret"
druid_s3_protocol="http"
druid_s3_endpoint_url="http://minio.service.consul:9000"
druid_s3_enablePathStyleAccess="true"
EOT
destination = "secrets/file.env"
env = true
change_mode = "restart"
}
env {
druid_plaintextPort = "${NOMAD_PORT_router}"
druid_host = "${NOMAD_IP_router}"
}
service {
name = "druid-router"
tags = [
"global",
"druid",
"log",
"traefik.enable=true",
"traefik.http.routers.druid.rule=Host(`druid.test.org`)",
"traefik.frontend.entryPoints=http"
]
port = "router"
check {
name = "alive"
type = "tcp"
interval = "10s"
timeout = "2s"
}
}
resources {
memory = 2500
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment