+ All Categories
Home > Documents > Elasticsearch & Docker

Elasticsearch & Docker

Date post: 13-Feb-2017
Category:
Upload: doanthuy
View: 261 times
Download: 1 times
Share this document with a friend
77
Elasticsearch & Docker Rafał Kuć – Sematext Group, Inc. @kucrafal @sematext sematext.com Running High Performance Fault Tolerant Elasticsearch Clusters On Docker
Transcript
Page 1: Elasticsearch & Docker

Elasticsearch &Docker

RafałKuć– Sematext Group,Inc.@kucrafal @sematext sematext.com

Running HighPerformanceFault Tolerant

ElasticsearchClusters OnDocker

Page 2: Elasticsearch & Docker

Next 20minutes

Page 3: Elasticsearch & Docker

You Are Probably Familiar WithThat

Development

Page 4: Elasticsearch & Docker

You Are Probably Familiar WithThat

Development Test

Page 5: Elasticsearch & Docker

You Are Probably Familiar WithThat

Development Test QA

Page 6: Elasticsearch & Docker

You Are Probably Familiar WithThat

Development Test QA

Production enviroment

Page 7: Elasticsearch & Docker

AndProblems That Come WithIt

Resources notutilized

Page 8: Elasticsearch & Docker

AndProblems That Come WithIt

Resources notutilized

OverprovisonedServers

Page 9: Elasticsearch & Docker

AndProblems That Come WithIt

Resources notutilized

OverprovisonedServers

≠ ≠

Page 10: Elasticsearch & Docker

Thesolution

Development Test QA Production

Page 11: Elasticsearch & Docker

Why Docker?

Light weight

Based onOpenStandards

Secure

Page 12: Elasticsearch & Docker

Containers vsVirtualMachines

Hardware

Traditional VirtualMachine

Page 13: Elasticsearch & Docker

Containers vsVirtualMachines

Hardware

HostOperatingSystem

Traditional VirtualMachine

Page 14: Elasticsearch & Docker

Containers vsVirtualMachines

Hardware

HostOperatingSystem

Hypervisor

Traditional VirtualMachine

Page 15: Elasticsearch & Docker

Containers vsVirtualMachines

Hardware

HostOperatingSystem

Hypervisor

Guest OS Guest OS

Traditional VirtualMachine

Page 16: Elasticsearch & Docker

Containers vsVirtualMachines

Hardware

HostOperatingSystem

Hypervisor

Guest OS Guest OS

Libraries Libraries

Traditional VirtualMachine

Page 17: Elasticsearch & Docker

Containers vsVirtualMachines

Hardware

HostOperatingSystem

Hypervisor

Guest OS Guest OS

Libraries Libraries

Application1 Application2

Traditional VirtualMachine

Page 18: Elasticsearch & Docker

Containers vsVirtualMachines

Hardware

HostOperatingSystem

Hypervisor

Guest OS Guest OS

Libraries Libraries

Application1 Application2

Hardware

HostOperatingSystem

Traditional VirtualMachineContainer

Page 19: Elasticsearch & Docker

Containers vsVirtualMachines

Hardware

HostOperatingSystem

Hypervisor

Guest OS Guest OS

Libraries Libraries

Application1 Application2

Hardware

HostOperatingSystem

Docker Engine

Traditional VirtualMachineContainer

Page 20: Elasticsearch & Docker

Containers vsVirtualMachines

Hardware

HostOperatingSystem

Hypervisor

Guest OS Guest OS

Libraries Libraries

Application1 Application2

Hardware

HostOperatingSystem

Docker Engine

Libraries Libraries

Application1 Application2

Traditional VirtualMachineContainer

Page 21: Elasticsearch & Docker

Why Elasticsearch?

Distributedbydesign

http://www.dailypets.co.uk/2007/06/17/kittens-rest-at-half-time/

Indices Aggs Admin

Monitor Search

Index

Page 22: Elasticsearch & Docker

Running Offical ElasticsearchContainer

$docker run-delasticsearch

Page 23: Elasticsearch & Docker

Running Offical ElasticsearchContainer

$docker run-delasticsearch:latest

Page 24: Elasticsearch & Docker

Running Offical ElasticsearchContainer

$docker run-delasticsearch:latest$docker run-d--name es1elasticsearch

Page 25: Elasticsearch & Docker

Running Offical ElasticsearchContainer

$docker run-delasticsearch:latest$docker run-d--name es1elasticsearch$docker run-d--name es1-eES_HEAP_SIZE=1gelasticsearch

Page 26: Elasticsearch & Docker

Running Offical ElasticsearchContainer

$docker run-delasticsearch:latest$docker run-d--name es1elasticsearch$docker run-d--name es1-eES_HEAP_SIZE=1gelasticsearch$docker run-d--name es1elasticsearch -Dnode.name bbuzz

Page 27: Elasticsearch & Docker

Container Constraints

$docker run-d-m2G elasticsearch

$docker run-d-m2G--memory-swappiness=0 elasticsearch

http://docs.docker.com/engine/reference/run/

Page 28: Elasticsearch & Docker

Container Constraints

$docker run-d-m2G elasticsearch

$docker run-d-m2G--memory-swappiness=0 elasticsearch

$docker run-d--cpuset-cpus="1,3"elasticsearch

http://docs.docker.com/engine/reference/run/

Page 29: Elasticsearch & Docker

Container Constraints

$docker run-d-m2G elasticsearch

$docker run-d-m2G--memory-swappiness=0 elasticsearch

$docker run-d--cpuset-cpus="1,3"elasticsearch

http://docs.docker.com/engine/reference/run/

$docker run-d--cpu-period=50000--cpu-quota=25000elasticsearch

Page 30: Elasticsearch & Docker

Constraints - GoodPractices

Limitcontainermemory

Page 31: Elasticsearch & Docker

Constraints - GoodPractices

Limitcontainermemory

Account forI/Ocachewhen givingmemory

Page 32: Elasticsearch & Docker

Constraints - GoodPractices

Limitcontainermemory

Account forI/Ocachewhen givingmemory

Limitamount ofCPUcores

Page 33: Elasticsearch & Docker

Constraints - GoodPractices

Limitcontainermemory

Account forI/Ocachewhen givingmemory

Limitamount ofCPUcores

Remember about JVMGC

Page 34: Elasticsearch & Docker

Creating Optimized Image

Dockerfile:FROM elasticsearchADD ./elasticsearch.yml /usr/share/elasticsearch/config/

Page 35: Elasticsearch & Docker

Creating Optimized Image

Dockerfile:FROM elasticsearchADD ./elasticsearch.yml /usr/share/elasticsearch/config/

$ docker build -t bbuzz/example .

Page 36: Elasticsearch & Docker

Creating Optimized Image

Dockerfile:FROM elasticsearchADD ./elasticsearch.yml /usr/share/elasticsearch/config/

$ docker build -t bbuzz/example .

Sending build context toDockerdaemon 5.12kBStep1:FROMelasticsearch--->1e23f30a3667Step2:ADD./elasticsearch.yml /usr/share/elasticsearch/config/--->015f12adfd2aRemoving intermediate container de560c6ae0d1Successfully built 015f12adfd2a

Page 37: Elasticsearch & Docker

Dealing WithNetwork

$docker run -d -p9200:9200-p9300:9300elasticsearch

Page 38: Elasticsearch & Docker

Dealing WithNetwork

$docker run -d -p9200:9200-p9300:9300elasticsearch$docker run -d --linkes1 elasticsearch

-Ddiscovery.zen.ping.unicast.hosts=es1

Page 39: Elasticsearch & Docker

Dealing WithNetwork

$docker run -d -p9200:9200-p9300:9300elasticsearch

Add network.publish_hostwhen buildingown container

$docker run -d --linkes1 elasticsearch-Ddiscovery.zen.ping.unicast.hosts=es1

Page 40: Elasticsearch & Docker

Dealing WithNetwork

$docker run -d -p9200:9200-p9300:9300elasticsearch

Add network.publish_hostwhen buildingown containerAdd discovery.zen.ping.unicast.hostswhen buildingown

container

$docker run -d --linkes1 elasticsearch-Ddiscovery.zen.ping.unicast.hosts=es1

Page 41: Elasticsearch & Docker

Network- Good Practices

Separate networkforElasticsearchcluster

Page 42: Elasticsearch & Docker

Network- Good Practices

Separate networkforElasticsearchcluster

Common hostnames forcontainers$docker run -d -hesnode1elasticsearch

Page 43: Elasticsearch & Docker

Network- Good Practices

Separate networkforElasticsearchcluster

Common hostnames forcontainers$docker run -d -hesnode1elasticsearch

Exposeonly needed ports

Page 44: Elasticsearch & Docker

Network- Good Practices

Separate networkforElasticsearchcluster

Common hostnames forcontainers$docker run -d -hesnode1elasticsearch

Exposeonly needed ports

Elasticsearchdata &client nodes pointtomasters only

Page 45: Elasticsearch & Docker

Dealing WithStorage

Bydefault in/usr/share/elasticsearch/data

Page 46: Elasticsearch & Docker

Dealing WithStorage

Bydefault in/usr/share/elasticsearch/data

Bydefault notpersisted

Page 47: Elasticsearch & Docker

Dealing WithStorage

Bydefault in/usr/share/elasticsearch/data

Bydefault notpersisted

$docker run -d-v /opt/elasticsearch/data:/usr/share/elasticsearch/dataelasticsearch

Page 48: Elasticsearch & Docker

Dealing WithStorage

$docker run -d-v /opt/elasticsearch/data:/usr/share/elasticsearch/dataelasticsearch

Bydefault in/usr/share/elasticsearch/data

Bydefault notpersisted

Use dataonly Dockervolumes

Permissions

Page 49: Elasticsearch & Docker

DataOnly Docker Volumes

Bypasses UnionFileSystem

Page 50: Elasticsearch & Docker

DataOnly Docker Volumes

Bypasses UnionFileSystem

Can beshared between containers

Page 51: Elasticsearch & Docker

DataOnly Docker Volumes

Bypasses UnionFileSystem

Can beshared between containers

Datavolumes persist if thecontainer itself is deleted

Page 52: Elasticsearch & Docker

DataOnly Docker Volumes

Bypasses UnionFileSystem

Can beshared between containers

Datavolumes persist if thecontainer itself is deleted

$docker create -v/mnt/es/data:/usr/share/elasticsearch/data--name esdata elasticsearch

Permissions

Page 53: Elasticsearch & Docker

DataOnly Docker Volumes

Bypasses UnionFileSystem

Can beshared between containers

Datavolumes persist if thecontainer itself is deleted

$docker create -v/mnt/es/data:/usr/share/elasticsearch/data--name esdata elasticsearch

$docker run --volumes-fromesdata elasticsearch

Page 54: Elasticsearch & Docker

HighlyAvailable Cluster

Masteronly

Masteronly

Masteronly

Dataonly

Dataonly

Dataonly

Dataonly

Dataonly

Dataonly

Clientonly

Clientonly

Page 55: Elasticsearch & Docker

HighlyAvailable Cluster

Masteronly

Masteronly

Masteronly

Dataonly

Dataonly

Dataonly

Dataonly

Dataonly

Dataonly

Clientonly

Clientonly

minimum_master_nodes=N/2+1

Page 56: Elasticsearch & Docker

MasterNodes &Docker

$docker run-d elasticsearch-Dnode.master=true-Dnode.data=false-Dnode.client=false

Page 57: Elasticsearch & Docker

ClientNodes &Docker

$docker run-d elasticsearch-Dnode.master=false-Dnode.data=false-Dnode.client=true

Page 58: Elasticsearch & Docker

DataNodes &Docker

$docker run-d elasticsearch-Dnode.master=false-Dnode.data=true-Dnode.client=false

Page 59: Elasticsearch & Docker

Multiple Tiers

node.tag=hot node.tag=cold node.tag=cold

Page 60: Elasticsearch & Docker

Multiple Tiers

$docker run-d elasticsearch -Dnode.tag=hot

Page 61: Elasticsearch & Docker

Multiple Tiers

curl -XPUT 'localhost:9200/data_2016-06-05' -d '{ "settings": { "index.routing.allocation.include.tag" : "hot"

}}'

Page 62: Elasticsearch & Docker

Multiple Tiers

node.tag=hot node.tag=cold node.tag=cold

data_2016-06-05

data_2016-06-05

Page 63: Elasticsearch & Docker

Multiple Tiers

node.tag=hot node.tag=cold node.tag=cold

data_2016-06-05

data_2016-06-05

Page 64: Elasticsearch & Docker

TopMetrics – Health &Shards

https://sematext.com/spm/

Page 65: Elasticsearch & Docker

TopMetrics - CPU

https://sematext.com/spm/

Page 66: Elasticsearch & Docker

TopMetrics – MemoryUsage

https://sematext.com/spm/

Page 67: Elasticsearch & Docker

TopMetrics – I/OUsage

https://sematext.com/spm/

Page 68: Elasticsearch & Docker

TopMetrics – JVMHeap

https://sematext.com/spm/

Page 69: Elasticsearch & Docker

TopMetrics – Garbage Collector

https://sematext.com/spm/

Page 70: Elasticsearch & Docker

TopMetrics – Request Rate &Latency

https://sematext.com/spm/

Page 71: Elasticsearch & Docker

TopMetrics - Caches

https://sematext.com/spm/

Page 72: Elasticsearch & Docker

TopMetrics – Indexing

https://sematext.com/spm/

Page 73: Elasticsearch & Docker

TopMetrics – Refresh Time

https://sematext.com/spm/

Page 74: Elasticsearch & Docker

Top10Metrics – Merge Time

https://sematext.com/spm/

Page 75: Elasticsearch & Docker

Short summary

http://www.soothetube.com/2013/12/29/thats-all-folks/

Page 76: Elasticsearch & Docker

WeAre Hiring !

Dig Search ?Dig Analytics?Dig BigData?Dig Performance?Dig Logging ?Dig working withandinopen– source ?We’re hiring world – wide !

http://sematext.com/about/jobs.html

Page 77: Elasticsearch & Docker

RafałKuć@[email protected]

Sematext@sematexthttp://sematext.comhttp://blog.sematext.com

Thank You !


Recommended