Ela­s­tic­se­arch ist eine Such­ma­schine und Ana­ly­tics Engine, mit der es mög­lich ist, die gewal­ti­gen Men­gen an Log­da­ten in heu­ti­gen Ser­ver­um­ge­bun­gen aus­zu­wer­ten und dar­zu­stel­len. Thema die­ses Bei­trags ist der Ver­gleich der ver­schie­de­nen Arten der Bereit­stel­lung von Ela­s­tic­se­arch in der AWS Cloud. Dazu gibt es im Wesent­li­chen drei Mög­lich­kei­ten, die im Fol­gen­den kurz vor­ge­stellt werden.

Ama­zon Ela­s­tic­se­arch Service

Bei dem Ama­zon Ela­s­tic­se­arch Ser­vice (Ama­zon ES) han­delt es sich um einen mana­ged Ser­vice. Mit Ama­zon ES ist die Bereit­stel­lung einer Ela­s­tic­se­arch Umge­bung in weni­gen Schrit­ten mög­lich. Die Bereit­stel­lung erfolgt über eine Web­ba­sierte Ober­flä­che. Über die Ober­flä­che kön­nen diverse Para­me­ter, wie z.B. der Ins­tance Typ und die Anzahl der Mas­ter- und Daten-Kno­ten, ein­ge­stellt wer­den. Ama­zon ES ver­wen­det eine ange­passte Ver­sion von Ela­s­tic­se­arch, wel­che nur Code unter Open Source Lizen­zen beinhaltet.

Ela­s­tic Cloud

Die Ela­s­tic Cloud ist ein mana­ged Ser­vice von Ela­s­tic, dem Ent­wick­ler von Ela­s­tic­se­arch, wel­cher die Bereit­stel­lung von Ela­s­tic­se­arch in der Cloud stark ver­ein­facht. Die Kon­fi­gu­ra­tion erfolgt auch hier über eine Web­ober­flä­che, durch die diverse Ein­stel­lungs­mög­lich­kei­ten bestehen. Auch bei die­sem Ser­vice ist es mög­lich, Para­me­ter wie die Größe des Arbeits­spei­chers, die Anzahl der Mas­ter- und Daten-Kno­ten sowie diverse wei­tere Para­me­ter einzustellen.

Eigen­stän­dige Installation

Die Instal­la­tion von Ela­s­tic­se­arch über den Paket­ma­na­ger aus dem offi­zi­el­len Ela­s­tic Repo­si­tory oder aus einem Archiv bie­tet die größte Fle­xi­bi­li­tät. Sämt­li­che Ein­stel­lun­gen müs­sen manu­ell vor­ge­nom­men werden.

Bei allen drei Bereit­stel­lungs­ar­ten wird eine Instal­la­tion bestehend aus Ela­s­tic­se­arch und Kibana auf dem Mas­ter-Kno­ten ver­wen­det. Kibana wird in die­sem Zusam­men­hang als Web­ba­sier­tes Tool zur ein­fa­chen Visua­li­sie­rung von Daten ein­ge­setzt. Die Erfas­sung der Log­da­ten wird durch dedi­zierte Instan­zen durch­ge­führt. Hierzu wer­den spe­zi­elle Pro­gramme wie Logs­tash, ein Pro­gramm zur Pipe­line­ba­sier­ten Ver­ar­bei­tung von Log­da­ten, oder einer/mehrere der ver­füg­ba­ren Beats (Pro­gramme zum Sam­meln, Ana­ly­sie­ren und Ver­sen­den von Log­da­ten) ver­wen­det. Die Daten wer­den von den Pro­gram­men an Ela­s­tic­se­arch gesendet.

Abbil­dung 1 Ela­s­tic­se­arch Deployment

Die Bereit­stel­lung der blau hin­ter­leg­ten Pro­gramme wird von den Anbie­tern der mana­ged Ser­vices (Ama­zon ES & Ela­s­tic Cloud) ver­wal­tet. Die Pro­gramme in den rot hin­ter­leg­ten Fel­dern müs­sen vom Benut­zer selbst instal­liert und ver­wal­tet werden.

Bei einer manu­el­len Instal­la­tion müs­sen sowohl die rot als auch die blau hin­ter­leg­ten Pro­gramme vom Nut­zer selbst instal­liert und ver­wal­tet werden.

Anzahl Mas­ter-Kno­ten

Bei allen drei Arten der Bereit­stel­lung ist es mög­lich, die von Ela­s­tic emp­foh­lene Anzahl von drei zum Mas­ter berech­tig­ten Kno­ten ein­zu­stel­len. Bei einem Ela­s­tic­se­arch Clus­ter mit meh­re­ren mög­li­chen Mas­tern eini­gen sich die zum Mas­ter berech­tig­ten Kno­ten beim Start auf einen Kno­ten wel­cher der eigent­li­che Mas­ter wird. Sollte der Mas­ter-Kno­ten aus­fal­len, ver­blei­ben noch 2 Kno­ten im Clus­ter, wel­che Mas­ter wer­den kön­nen. Die bei­den Kno­ten ver­stän­di­gen sich unter­ein­an­der, wer der neue Mas­ter-Kno­ten des Clus­ters wird. Die­ses Ver­fah­ren erhöht die Aus­fall­si­cher­heit deutlich.

Ver­füg­bar­keits­zo­nen

Es ist bei allen genann­ten Bereit­stel­lungs­ar­ten mög­lich, die Kno­ten auf ver­schie­dene Ver­füg­bar­keits­zo­nen (AZ) zu ver­tei­len. Bei Ela­s­tic Cloud ist jeweils ein Kno­ten je Ver­füg­bar­keits­zone mög­lich. Die Ver­tei­lung erfolgt auf bis zu drei Ver­füg­bar­keits­zo­nen. Die Anzahl der Mas­ter- und Kibana-Kno­ten ist getrennt von­ein­an­der ein­stell­bar.  Bei Ama­zon ES kön­nen bis zu 40 Kno­ten auf bis zu drei Ver­füg­bar­keits­zo­nen ver­teilt wer­den, wobei die Anzahl der Kiba­nakno­ten nicht ein­ge­stellt wer­den kann. Bei der eigen­stän­di­gen Instal­la­tion ist die Anzahl der Kno­ten und der Ver­füg­bar­keits­zo­nen nicht ein­ge­schränkt. Durch die Bereit­stel­lung der Kno­ten in unter­schied­li­chen Ver­füg­bar­keits­zo­nen wird die Aus­fall­si­cher­heit erhöht. Durch die Ver­wen­dung meh­re­rer Ver­füg­bar­keits­zo­nen kann Ela­s­tic­se­arch die indi­zier­ten Daten durch soge­nannte Repli­ca­groups auf meh­re­ren Kno­ten spei­chern. Die Daten wer­den auf den ein­zel­nen Kno­ten immer als voll­stän­dige Kopie gespei­chert. Beim Lesen von Daten von einem Index wählt Ela­s­tic­se­arch über das Adap­tive Replica Sel­ec­tion (ARS) Ver­fah­ren den aus sei­ner Sicht für die Anfrage am bes­ten geeig­ne­ten Kno­ten für die Bereit­stel­lung der Daten aus. Bei der Aus­wahl wer­den unter ande­rem die Para­me­ter “Aus­ste­hende Such­an­fra­gen an einen Kno­ten” und “Anzahl der Kno­ten im Clus­ter” berück­sich­tigt. Durch den Ein­satz von Kno­ten, wel­che nur als Mas­ter berech­tigt (dedi­zier­ter Mas­ter) kon­fi­gu­riert sind lässt sich die Sta­bi­li­tät des Clus­ters wei­ter stei­gern. Die Erstel­lung von dedi­zier­ten Mas­tern ist bei allen drei Vari­an­ten ver­füg­bar. Ebenso wie die Erstel­lung von dedi­zier­ten Mas­tern mög­lich ist, kön­nen auch reine Daten­kno­ten erstellt wer­den, wel­che nicht berech­tigt sind, Mas­ter des Clus­ters zu werden.

Bereitstellung von Elasticsearch in der AWS Cloud Bild2
Abbil­dung 2 Ela­s­tic­se­arch Clus­ter mit meh­re­ren Verfügbarkeitszonen 

In-place Upgrades

Upgrades zur Lauf­zeit des Clus­ters sind bei allen drei Deploy­ment Vari­an­ten mög­lich. Bei den bei­den mana­ged Ser­vices wird das Upgrade über die Web­ober­flä­che durch­ge­führt. Ein manu­el­les Upgrade ist bei der manu­el­len Instal­la­tion erforderlich.

Back­ups

Bei Ama­zon ES wird stan­dard­mä­ßig jede Stunde ein Snapshot erstellt, der 14 Tage gespei­chert wird. In Ela­s­tic Cloud erfolgt die Erstel­lung der Snapshots alle 30 Minu­ten, wobei das Inter­vall ange­passt wer­den kann. Die Auf­be­wah­rungs­zeit beträgt zwei Tage. Bei der eigen­stän­di­gen Instal­la­tion kann man den Zeit­plan für die Erstel­lung der Snapshots und die Spei­cher­dauer selbst festlegen.

Sicher­heit

In Ela­s­tic Cloud ist die Ela­s­tic­se­arch Instal­la­tion durch ein­ge­baute Sicher­heits­fea­tures, wie z.B. einer Benut­zer­ver­wal­tung mit Berech­ti­gungs­rol­len oder einer SSL Ver­schlüs­se­lung, geschützt. Bei der manu­el­len Instal­la­tion ist die Ver­wen­dung der Sicher­heits­fea­tures nach manu­el­ler Kon­fi­gu­ra­tion eben­falls mög­lich. Bei Ama­zon ES wer­den einige der Sicher­heits­fea­tures über ein Plugin bereit­ge­stellt. Eine Kap­se­lung der Instal­la­tion in eine Vir­tual Private Cloud (VPC) ist bei allen Deploy­ment­arten mög­lich. Ein Schutz der Daten im Clus­ter über Encryp­tion at Rest ist bei allen drei Bereit­stel­lungs­ar­ten mög­lich. Bei Ama­zon ES ist außer­dem eine Inte­gra­tion von AWS KMS ver­füg­bar. Ein Zugriff über https ist eben­falls bei allen drei Vari­an­ten mög­lich. Bei der manu­ell Instal­lier­ten Vari­ante ist eine Ver­schlüs­se­lung von Snapshots im S3 mit dem AES256 Algo­rith­mus möglich.

Ver­füg­bar­keit neuer Ela­s­tic­se­arch Versionen

In der Ela­s­tic Cloud wer­den neue Ver­sio­nen und Sicher­heits­patches, ebenso wie bei der manu­el­len Instal­la­tion, am Tag Ihrer Ver­öf­fent­li­chung bereit­ge­stellt. Bei Ama­zon ES erfolgt die Bereit­stel­lung neuer Ver­sio­nen und Sicher­heits­patches deut­lich lang­sa­mer. Aktu­ell ist die Ver­sion 7.7 von Ela­s­tic­se­arch ver­füg­bar. Bei Ama­zon ES ist die aktu­ellste Ver­sion jedoch 7.4.

Über­sicht der Ver­füg­bar­keit von Ela­s­tic­se­arch Ver­sio­nen bei Ama­zon ES:

Bereitstellung von Elasticsearch in der AWS Cloud Tabelle1
Ver­sionEla­s­ticOpen Dis­tro for ElasticsearchAma­zon ES
7.120.05.201917.07.201913.08.2019
7.401.10.201922.11.201912.03.2020
7.713.05.202015.05.2020-

Die Bereit­stel­lung von neuen Ela­s­tic­se­arch Ver­sio­nen in Ama­zon ES kann unter Umstän­den län­gere Zeit dauern.

Kon­fi­gu­ra­tion

In Ama­zon ES gibt es nur sehr ein­ge­schränk­ten Zugriff auf die Kon­fi­gu­ra­tion von Ela­s­tic­se­arch. Es ist nicht mög­lich, Anpas­sun­gen an der Kon­fi­gu­ra­ti­ons­da­tei von Ela­s­tic­se­arch oder Kibana vor­zu­neh­men. Eine Ein­stel­lung diver­ser Sicher­heits­re­le­van­ter Para­ma­ter ist mög­lich. Bei Ela­s­tic Cloud ist es mög­lich, am Ende der Ela­s­tic­se­arch- und Kibana-Kon­fi­gu­ra­ti­ons­da­tei eigene Para­me­ter anzu­hän­gen. Bei der manu­ell instal­lier­ten Vari­ante erhält man Zugriff auf sämt­li­che Konfigurationsmöglichkeiten.

Ver­füg­bar­keit sons­ti­ger Funktionen

Bei der manu­el­len Instal­la­tion und in der Ela­s­tic Cloud ste­hen alle Ela­s­tic­se­arch Funk­tio­nen zur Ver­fü­gung. Bei Ama­zon ES jedoch gibt es eine Reihe von Fea­tures bzw. Pro­gram­mier­schnitt­stel­len (APIs), wel­che nicht unter­stützt wer­den. Ama­zon ES unter­stützt zum Bei­spiel die X‑Pack Fea­tures von Ela­s­tic­se­arch nicht. Die X‑Pack Fea­tures stel­len Funk­tio­nen für Stack Secu­rity, Aler­ting, Moni­to­ring, Graph, Report­ing und Machine Lear­ning bereit. Eben­falls nicht ver­füg­bar sind das Index-Life­cy­cle-Manage­ment und diverse wei­tere Funk­tio­nen. Einige der in Ama­zon ES feh­len­den Funk­tio­nen las­sen sich mehr oder weni­ger gut durch AWS Ser­vices erset­zen. Eine Über­sicht, über die nicht oder nicht voll­stän­dig unter­stütz­ten Funk­tio­nen ist hier zu finden.

Bereitstellung von Elasticsearch in der AWS Cloud Bild3
Abbil­dung 3 Ela­s­tic Stack

Ela­s­tic Stack

Bei Ama­zon ES sind die Log­files nur über den kos­ten­pflich­ti­gen Dienst Cloud­Watch ein­seh­bar. In der Ela­s­tic Cloud sind einige Log­ein­träge über die Web­ober­flä­che ein­seh­bar. Ama­zon ES erlaubt den Ein­blick in einige Metri­ken in gra­phi­scher Form. Durch die Inte­gra­tion in Cloud­Watch ist eine naht­lose Anbin­dung an wei­tere AWS Dienste mög­lich. Ela­s­tic Cloud beinhal­tet die Dar­stel­lung eini­ger Metri­ken in Kibana (als zusätz­li­ches Fea­ture unter der pro­prie­tä­ren Ela­s­tic Lizenz). Bei der manu­ell instal­lier­ten Vari­ante hat man Zugriff auf sämt­li­che Log­files und Metri­ken, muss die Aufbereitung aber selbst­stän­dig konfigurieren.

Bereitstellung von Elasticsearch in der AWS Cloud Bild4
Abbil­dung 4 Ama­zon ES Inte­gra­tion wei­te­rer AWS Dienste

Plug­ins

Bei Ama­zon ES ist die Instal­la­tion von eige­nen Plug­ins nicht mög­lich. Bei Ela­s­tic Cloud ist die Instal­la­tion von Plug­ins über die Web­ober­flä­che mög­lich. Ebenso ist eine Instal­la­tion von Plug­ins bei der manu­ell Instal­lier­ten Vari­ante mög­lich. Durch die Instal­la­tion von Plug­ins (S3 Repo­si­tory Plugin) ist unter ande­rem eine Inte­gra­tion mit AWS S3 mög­lich. Bei Ama­zon ES ist die Inte­gra­tion mit S3 bereits ohne die Instal­la­tion des Plug­ins vor­han­den. Diese Inte­gra­tion ist beim Ama­zon ES Ser­vice natür­lich vor­han­den. Eine Liste der offi­zi­el­len Ela­s­tic­se­arch Plug­ins ist unter hier zu finden.

Instanz Typen

Bei Ama­zon ES ist man auf eine gewisse limi­tierte Aus­wahl von Instanz Typen beschränkt. Bei Ela­s­tic Cloud kann man nur die Größe des Arbeits­spei­chers (RAM) der Instan­zen ange­ben. Die Ein­bin­dung von spe­zi­el­len Machine Lear­ning Instan­zen in das Clus­ter ist mög­lich. Bei einem manu­ell instal­lier­ten Ela­s­tic­se­arch in der AWS Cloud ist es mög­lich, aus allen Ver­füg­ba­ren Instanz Typen den am bes­ten geeig­nets­ten aus­zu­wäh­len und die Instal­la­tion dar­auf durchzuführen.

Kos­ten

Bei der Ver­wen­dung von Ama­zon ES ent­ste­hen Kos­ten für die genutzte Cloud­in­stanz und die AWS-Daten­über­tra­gung (aus­ge­nom­men Daten­trans­fer inner­halb des Clus­ters). Die Spei­che­rung der auto­ma­tisch erstell­ten Snapshots ist kos­ten­los. Für die Erstel­lung eige­ner Snapshots fal­len die übli­chen S3 Spei­cher­ge­büh­ren an. Für die Nut­zung von Ela­s­tic­se­arch und Kibana selbst fal­len durch die aus­schließ­li­che Nut­zung von Open Source Code keine Kos­ten an. Auch die Ver­wal­tung des Ser­vices durch AWS ver­ur­sacht keine wei­te­ren Kos­ten. In der Ela­s­tic Cloud fal­len Kos­ten für die Nut­zung des Ser­vices in Abhän­gig­keit von dem genutz­ten RAM an. Dar­über hin­aus fal­len Kos­ten für die Spei­che­rung von Snapshots, die Ver­wen­dung der Snapshot API, den aus­ge­hen­den Daten­trans­fer und den Daten­ver­kehr zwi­schen den unter­schied­li­chen Nodes an. Bei einer eigen­stän­dig instal­lier­ten Instanz von Ela­s­tic­se­arch fal­len Kos­ten für die genutz­ten EC2 Instan­zen und Daten­trans­fer an.

Fazit

Die Bereit­stel­lung von Ela­s­tic­se­arch und Kibana über die drei dar­ge­stell­ten Metho­den bie­tet jeweils Vor und Nach­teile. Die Ver­wen­dung von Ama­zon ES eig­net sich für Pro­jekte, die auf die Ver­wen­dung von 100% Open Source Code ange­wie­sen sind. Durch die aus­schließ­li­che Ver­wen­dung von Open Source Code feh­len jedoch einige Fea­tures, wel­che in der unter der Ela­s­tic Lizenz ver­füg­ba­ren Ver­sion ent­hal­ten sind. Durch die feh­len­den Fea­tures eig­net sich Ama­zon ES eher für ein­fa­chere Pro­jekte. Die Ein­rich­tung ist in weni­gen Minu­ten durchgeführt.

In Ela­s­tic Cloud ist es mög­lich in kur­zer Zeit ein Clus­ter aus meh­re­ren Nodes mit Ela­s­tic­se­arch und Kibana bereit­zu­stel­len. Ein gro­ßer Vor­teil der Ela­s­tic Cloud ist die ein­fa­che Ver­wal­tung und die sofor­tige Ver­füg­bar­keit neuer Ver­sio­nen. Auf­grund des vol­len Funk­ti­ons­um­fangs von Ela­s­tic­se­arch und der schnel­len Bereit­stel­lung von Sicher­heits­patches und neuen Ver­sio­nen eig­net sich die Ela­s­tic Cloud auch für grö­ßere Projekte.

Die Daten für die Ela­s­tic­se­arch Instan­zen in der Cloud müs­sen von ande­ren Nodes an den Mas­ter in der Cloud gesen­det werden.

Die größt­mög­li­che Fle­xi­bi­li­tät bie­tet eine manu­elle Instal­la­tion von Ela­s­tic­se­arch und Kibana. Bei der manu­el­len Instal­la­tion ist es z.B. mög­lich auf einem Node neben Ela­s­tic­se­arch und Kibana wei­tere Module von Ela­s­tic wie File­beat oder Metric­beat zu instal­lie­ren. Auch benut­zer­de­fi­nierte Kon­fi­gu­ra­tio­nen, die in der Cloud nicht vor­ge­se­hen sind, sind mög­lich. Die Bereit­stel­lung über eine manu­elle Instal­la­tion eig­net sich für sehr große bzw. Pro­jekte mit sehr spe­zi­el­len Anfor­de­run­gen, die bei den mana­ged Ser­vices durch die beschränk­ten Kon­fi­gu­ra­ti­ons­mög­lich­kei­ten nicht umge­setzt wer­den kön­nen. Ein Nach­teil ist der deut­lich erhöhte admi­nis­tra­tive Auf­wand ver­gli­chen mit den bei­den mana­ged Ser­vices. Auch die für die Ein­rich­tung des Clus­ters benö­tigte Zeit darf nicht unter­schätzt werden.

Links:

https://www.elastic.co/de/aws-elasticsearch-service#full-comparison

https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/what-is-amazon-elasticsearch-service.html#aes-pricing

https://www.elastic.co/de/blog/a‑new-era-for-cluster-coördination-in-elasticsearch

https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-supported-instance-types.html

Quel­len:

https://aws.amazon.com/

https://www.elastic.co/