-
-
Save AdheipSingh/a87eb276badd2c614973d7aa56b07cbd to your computer and use it in GitHub Desktop.
apiVersion: druid.apache.org/v1alpha1 | |
kind: Druid | |
metadata: | |
name: cluster | |
spec: | |
commonConfigMountPath: /opt/druid/conf/druid/cluster/_common | |
rollingDeploy: true | |
image: "apache/druid:0.19.0" | |
startScript: /druid.sh | |
log4j.config: |- | |
<?xml version="1.0" encoding="UTF-8" ?> | |
<Configuration status="WARN"> | |
<Appenders> | |
<Console name="console" target="SYSTEM_OUT"> | |
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" /> | |
</Console> | |
</Appenders> | |
<Loggers> | |
<Root level="info"> | |
<AppenderRef ref="console"/> | |
</Root> | |
<Logger name="org.apache.druid.jetty.RequestLog" additivity="false" level="INFO"> | |
<AppenderRef ref="console"/> | |
</Logger> | |
</Loggers> | |
</Configuration> | |
jvm.options: |- | |
-server | |
-XX:+UseG1GC | |
-Xloggc:gc-%t-%p.log | |
-XX:+UseGCLogFileRotation | |
-XX:GCLogFileSize=100M | |
-XX:NumberOfGCLogFiles=10 | |
-XX:+HeapDumpOnOutOfMemoryError | |
-XX:HeapDumpPath=/opt/druid/var/ | |
-verbose:gc | |
-XX:+PrintGCDetails | |
-XX:+PrintGCTimeStamps | |
-XX:+PrintGCDateStamps | |
-XX:+PrintGCApplicationStoppedTime | |
-XX:+PrintGCApplicationConcurrentTime | |
-XX:+PrintAdaptiveSizePolicy | |
-XX:+PrintReferenceGC | |
-XX:+PrintFlagsFinal | |
-Duser.timezone=UTC | |
-Dfile.encoding=UTF-8 | |
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager | |
-Dorg.jboss.logging.provider=slf4j | |
-Dnet.spy.log.LoggerImpl=net.spy.memcached.compat.log.SLF4JLogger | |
-Dlog4j.shutdownCallbackRegistry=org.apache.druid.common.config.Log4jShutdown | |
-Dlog4j.shutdownHookEnabled=true | |
-Dcom.sun.management.jmxremote.authenticate=false | |
-Dcom.sun.management.jmxremote.ssl=false | |
common.runtime.properties: | | |
############################################### | |
# service names for coordinator and overlord | |
############################################### | |
druid.selectors.indexing.serviceName=druid/overlord | |
druid.selectors.coordinator.serviceName=druid/coordinator | |
################################################## | |
# Request logging, monitoring, and segment | |
################################################## | |
druid.request.logging.type=slf4j | |
druid.request.logging.feed=requests | |
################################################## | |
# Monitoring ( enable when using prometheus ) | |
################################################# | |
################################################ | |
# Extensions | |
################################################ | |
druid.extensions.directory=/opt/druid/extensions | |
druid.extensions.loadList=["druid-s3-extensions","druid-kafka-indexing-service","druid-datasketches","postgresql-metadata-storage"] | |
druid.query.segmentMetadata.defaultAnalysisTypes=["cardinality","size","interval","minmax"] | |
#################################################### | |
# Enable sql | |
#################################################### | |
druid.sql.enable=true | |
deepStorage: | |
spec: | |
properties: |- | |
druid.storage.type=s3 | |
druid.storage.bucket= | |
druid.s3.accessKey= | |
druid.s3.secretKey= # use env to and k8s secret, if possible use vault. | |
druid.storage.baseKey=druid/segments | |
druid.indexer.logs.directory=data/logs/ | |
type: default | |
metadataStore: | |
spec: | |
properties: |- | |
druid.metadata.storage.type=postgresql | |
druid.metadata.storage.connector.connectURI=jdbc:postgresql://postgres.druid.svc.cluster.local:5432/druiddb | |
druid.metadata.storage.connector.password=admin123 | |
druid.metadata.storage.connector.createTables=true | |
type: default | |
zookeeper: | |
spec: | |
properties: |- | |
druid.zk.service.host=druid-zookeeper-client.druid.svc.cluster.local | |
druid.zk.paths.base=/druid | |
type: default | |
nodes: | |
brokers: | |
kind: Deployment | |
maxSurge: 2 | |
maxUnavailable: 0 | |
druid.port: 8080 | |
nodeConfigMountPath: /opt/druid/conf/druid/cluster/query/broker | |
nodeType: broker | |
env: | |
- name: DRUID_XMS | |
value: 12000m | |
- name: DRUID_XMX | |
value: 12000m | |
- name: DRUID_MAXDIRECTMEMORYSIZE | |
value: 12g | |
- name: AWS_REGION | |
value: ap-southeast-1 | |
podDisruptionBudgetSpec: | |
maxUnavailable: 1 | |
replicas: 8 | |
resources: | |
limits: | |
cpu: 10 | |
memory: 15Gi | |
requests: | |
cpu: 10 | |
memory: 15Gi | |
readinessProbe: | |
initialDelaySeconds: 60 | |
periodSeconds: 10 | |
failureThreshold: 30 | |
httpGet: | |
path: /druid/broker/v1/readiness | |
port: 8080 | |
runtime.properties: | | |
druid.service=druid/broker | |
druid.log4j2.sourceCategory=druid/broker | |
druid.broker.http.numConnections=500 | |
# Processing threads and buffers | |
druid.processing.buffer.sizeBytes=268435456 | |
druid.processing.numMergeBuffers=2 | |
druid.processing.numThreads=11 | |
coordinators: | |
druid.port: 8080 | |
kind: Deployment | |
maxSurge: 2 | |
maxUnavailable: 0 | |
nodeConfigMountPath: /opt/druid/conf/druid/cluster/master/coordinator-overlord | |
nodeType: coordinator | |
podDisruptionBudgetSpec: | |
maxUnavailable: 1 | |
replicas: 1 | |
resources: | |
limits: | |
cpu: 6 | |
memory: 6Gi | |
requests: | |
cpu: 6 | |
memory: 6Gi | |
livenessProbe: | |
initialDelaySeconds: 60 | |
periodSeconds: 5 | |
failureThreshold: 3 | |
httpGet: | |
path: /status/health | |
port: 8080 | |
readinessProbe: | |
initialDelaySeconds: 60 | |
periodSeconds: 5 | |
failureThreshold: 3 | |
httpGet: | |
path: /status/health | |
port: 8080 | |
env: | |
- name: DRUID_XMS | |
value: 2g | |
- name: DRUID_XMX | |
value: 2g | |
- name: AWS_REGION | |
value: ap-southeast-1 | |
runtime.properties: | | |
druid.service=druid/coordinator | |
druid.log4j2.sourceCategory=druid/coordinator | |
druid.indexer.runner.type=httpRemote | |
druid.indexer.queue.startDelay=PT5S | |
druid.coordinator.balancer.strategy=cachingCost | |
druid.serverview.type=http | |
druid.indexer.storage.type=metadata | |
druid.coordinator.startDelay=PT10S | |
druid.coordinator.period=PT5S | |
druid.server.http.numThreads=5000 | |
druid.coordinator.asOverlord.enabled=true | |
druid.coordinator.asOverlord.overlordService=druid/overlord | |
historical: | |
druid.port: 8080 | |
kind: StatefulSet | |
nodeType: historical | |
podDisruptionBudgetSpec: | |
maxUnavailable: 1 | |
nodeConfigMountPath: /opt/druid/conf/druid/cluster/data/historical | |
replicas: 1 | |
livenessProbe: | |
initialDelaySeconds: 1800 | |
periodSeconds: 5 | |
failureThreshold: 3 | |
httpGet: | |
path: /status/health | |
port: 8080 | |
readinessProbe: | |
httpGet: | |
path: /druid/historical/v1/readiness | |
port: 8080 | |
periodSeconds: 10 | |
failureThreshold: 18 | |
startupProbe: | |
httpGet: | |
path: /druid/historical/v1/readiness | |
port: 8080 | |
periodSeconds: 10 | |
failureThreshold: 60 | |
resources: | |
limits: | |
cpu: 3 | |
memory: 5Gi | |
requests: | |
cpu: 1 | |
memory: 2Gi | |
env: | |
- name: DRUID_XMS | |
value: 1500m | |
- name: DRUID_XMX | |
value: 1500m | |
- name: DRUID_MAXDIRECTMEMORYSIZE | |
value: 2g | |
- name: AWS_REGION | |
value: ap-southeast-1 | |
runtime.properties: | | |
druid.service=druid/historical | |
druid.log4j2.sourceCategory=druid/historical | |
# HTTP server threads | |
druid.server.http.numThreads=10 | |
# Processing threads and buffers | |
druid.processing.buffer.sizeBytes=400000000 | |
druid.processing.numMergeBuffers=2 | |
druid.processing.numThreads=2 | |
druid.processing.tmpDir=var/druid/processing | |
# Segment storage | |
druid.segmentCache.locations=[{"path":"var/druid/segment-cache","maxSize":40000000000}] | |
druid.server.maxSize=40000000000 | |
# Query cache | |
druid.historical.cache.useCache=true | |
druid.historical.cache.populateCache=true | |
druid.cache.type=caffeine | |
druid.cache.sizeInBytes=256000000 | |
volumeClaimTemplates: | |
- | |
metadata: | |
name: historical-volume | |
spec: | |
accessModes: | |
- ReadWriteOnce | |
resources: | |
requests: | |
storage: 50Gi | |
storageClassName: kops-ssd-1-17 | |
volumeMounts: | |
- | |
mountPath: var/druid | |
name: historical-volume | |
middlemanagers: | |
druid.port: 8080 | |
kind: StatefulSet | |
nodeType: middleManager | |
nodeConfigMountPath: /opt/druid/conf/druid/cluster/data/middleManager | |
env: | |
- name: DRUID_XMX | |
value: 4096m | |
- name: DRUID_XMS | |
value: 4096m | |
- name: AWS_REGION | |
value: ap-southeast-1 | |
podDisruptionBudgetSpec: | |
maxUnavailable: 1 | |
replicas: 4 | |
resources: | |
limits: | |
cpu: 8 | |
memory: 8Gi | |
requests: | |
cpu: 8 | |
memory: 8Gi | |
livenessProbe: | |
initialDelaySeconds: 60 | |
periodSeconds: 5 | |
failureThreshold: 3 | |
httpGet: | |
path: /status/health | |
port: 8080 | |
readinessProbe: | |
initialDelaySeconds: 60 | |
periodSeconds: 5 | |
failureThreshold: 3 | |
httpGet: | |
path: /status/health | |
port: 8080 | |
runtime.properties: | | |
druid.service=druid/middleManager | |
druid.worker.capacity=4 | |
druid.indexer.runner.javaOpts=-server -Xms2g -Xmx2g -XX:MaxDirectMemorySize=2g -Duser.timezone=UTC -Dfile.encoding=UTF-8 -XX:+ExitOnOutOfMemoryError -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager | |
druid.indexer.task.baseTaskDir=var/druid/task | |
# HTTP server threads | |
druid.server.http.numThreads=500 | |
# Processing threads and buffers on Peons | |
druid.indexer.fork.property.druid.processing.numMergeBuffers=2 | |
druid.indexer.fork.property.druid.processing.buffer.sizeBytes=32000000 | |
druid.indexer.fork.property.druid.processing.numThreads=2 | |
volumeClaimTemplates: | |
- | |
metadata: | |
name: data-volume | |
spec: | |
accessModes: | |
- ReadWriteOnce | |
resources: | |
requests: | |
storage: 15Gi | |
storageClassName: kops-ssd-1-17 | |
volumeMounts: | |
- | |
mountPath: /var/druid | |
name: data-volume | |
routers: | |
kind: Deployment | |
maxSurge: 2 | |
maxUnavailable: 0 | |
livenessProbe: | |
initialDelaySeconds: 60 | |
periodSeconds: 5 | |
failureThreshold: 3 | |
httpGet: | |
path: /status/health | |
port: 8080 | |
readinessProbe: | |
initialDelaySeconds: 60 | |
periodSeconds: 5 | |
failureThreshold: 3 | |
httpGet: | |
path: /status/health | |
druid.port: 8080 | |
env: | |
- name: AWS_REGION | |
value: ap-southeast-1 | |
- name: DRUID_XMX | |
value: 1024m | |
- name: DRUID_XMS | |
value: 1024m | |
resources: | |
limits: | |
cpu: 10 | |
memory: 8Gi | |
requests: | |
cpu: 10 | |
memory: 4Gi | |
nodeType: router | |
podDisruptionBudgetSpec: | |
maxUnavailable: 1 | |
nodeConfigMountPath: /opt/druid/conf/druid/cluster/query/router | |
replicas: 1 | |
runtime.properties: | | |
druid.service=druid/router | |
druid.log4j2.sourceCategory=druid/router | |
# HTTP proxy | |
druid.router.http.numConnections=5000 | |
druid.router.http.readTimeout=PT5M | |
druid.router.http.numMaxThreads=1000 | |
druid.server.http.numThreads=1000 | |
# Service discovery | |
druid.router.defaultBrokerServiceName=druid/broker | |
druid.router.coordinatorServiceName=druid/coordinator | |
druid.router.managementProxy.enabled=true | |
services: | |
- | |
metadata: | |
name: router-%s-service | |
spec: | |
ports: | |
- | |
name: router-port | |
port: 8080 | |
type: LoadBalancer |
@AdheipSingh : I have used druid operator to deploy it in AWS EKS. But to make druid console accessible I had to create one more load balancer service as follows . As all service types are ClusterIp and which are not accessible from outside. Is this the correct way to do it? Please let me know if I am missing anything.
How do you address this?
One more problem I am facing is how to access Middle manger ? Do I have I create one more loadbalancer for Middle manager as well?
kind: Service
apiVersion: v1
metadata:
name: ext-router-svc
namespace: druid-operator
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
spec:
type: LoadBalancer
selector:
app: druid
nodeSpecUniqueStr: druid-project-name-cluster-routers
ports:
- name: http
protocol: TCP
port: 80
targetPort: 8088
oh i see, yeah you ll need to remove the extension, in that case, ill still recommend you to use properties from the offical druid repo, their might some configs for some use case :) 😄