docker-部署Elasticsearch
前言
Elasticsearch是一款開源的搜尋引擎框架,提供強大的搜尋功能。下面簡單介紹如何使用docker來部署Elasticsearch。更多資訊請參考官方文件。
拉取映象
獲取Docker的Elasticsearch就像對Elastic Docker registry發出Docker pull命令一樣簡單。
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.9.2
或者,您可以下載其他Docker映象,這些映象只包含Apache 2.0許可下可用的特性。下載映象,訪問www.docker.elastic.co。
用Docker啟動單個節點叢集
要啟動一個用於開發或測試的單節點Elasticsearch叢集,請指定單節點發現以繞過引導檢查:
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.9.2
用Docker組成啟動多節點叢集
要在Docker中啟動並執行三個節點的Elasticsearch叢集,您可以使用Docker Compose:
- 建立一個docker-compose.yml檔案:
version: '3.7'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
這個示例Docker合成檔案將顯示一個三個節點的Elasticsearch叢集。節點es01
監聽localhost:9200
,es02
和es03
通過Docker網路與es01通訊。
請注意,此配置在所有網路介面上公開了埠9200,並且考慮到Docker在Linux上操縱iptables的方式,這意味著您的Elasticsearch叢集是可以公開訪問的,可能會忽略任何防火牆設定。如果您不想公開埠9200,而是使用反向代理,那麼在docator-compose.yml檔案中將9200:9200
替換為127.0.0.1:9200:9200
。Elasticsearch將只能從主機本身訪問。
名為data01
、data02
和data03
的Docker命名卷儲存節點資料目錄,以便在重新啟動時資料保持不變。如果它們還不存在,那麼docker-compose將在啟動叢集時建立它們。
日誌訊息會到達控制檯,並由配置的Docker日誌驅動程式處理。預設情況下,您可以使用docker logs訪問日誌。
要停止叢集,請執行docker-compose down。當您使用Docker-compose up重啟叢集時,Docker卷中的資料將被保留並載入。要在關閉叢集時刪除資料卷,請指定-v選項:docker-compose down -v。
啟動啟用TLS的多節點叢集
請參閱Elasticsearch Docker容器中的加密通訊,並在啟用TLS的Docker中執行彈性堆疊。
在生產中使用Docker映象
以下要求和建議適用於在生產中Docker中執行Elasticsearch。
設定vm.max_map_count至少為262144
對於生產使用,vm.max_map_count核心設定必須至少設定為262144(32k)。
配置檔案必須是elasticsearch使用者可讀的
預設情況下,Elasticsearch使用uid:gid 1000:0
作為使用者elasticsearch
在容器內執行。
增加nofile和nproc的ulimit
對於Elasticsearch容器,必須對nofile和nproc增加ulimit。驗證Docker守護程式的init系統將它們設定為可接受的值。
禁用交換
為了效能和節點穩定性,需要禁用交換。有關此操作方法的資訊,請參見禁用交換。
配置Elasticsearch與Docker
在Docker中執行時,Elasticsearch配置檔案從/usr/share/elasticsearch/config/
載入。
載入Elasticsearch配置檔案
建立自定義配置檔案,並將它們繫結掛載到Docker映象中的相應檔案上。例如,繫結掛載custom_elasticsearch.yml
與docker
執行,指定:
-v full_path_to/custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
掛載一個Elasticsearch金鑰庫
預設情況下,Elasticsearch將自動為安全設定生成一個金鑰儲存庫檔案。該檔案是模糊的,但沒有加密。如果希望使用密碼對安全設定進行加密,則必須使用elasticsearch-keystore實用程式建立一個受密碼保護的金鑰儲存,並將其繫結掛載到容器/usr/share/elasticsearch/config/elasticsearch.keystore。為了在Docker容器啟動時提供密碼,將Docker環境值KEYSTORE_PASSWORD設定為您的密碼值。例如,docker run命令可能有以下選項:
-v full_path_to/elasticsearch.keystore:/usr/share/elasticsearch/config/elasticsearch.keystore
-E KEYSTORE_PASSWORD=mypassword
相關文章
- docker-部署kibanaDocker
- ElasticSearch + Kibana 安裝部署Elasticsearch
- Elasticsearch 叢集安裝部署Elasticsearch
- Docker部署ElasticSearch叢集DockerElasticsearch
- Docker部署並執行ElasticsearchDockerElasticsearch
- 【Linux合集】elasticsearch叢集部署LinuxElasticsearch
- Linux 環境Skywalking部署ElasticsearchLinuxElasticsearch
- CentOS部署ElasticSearch7.6.1叢集CentOSElasticsearch
- Linux 環境部署Skywalking支援ElasticsearchLinuxElasticsearch
- centos 7安裝部署elasticsearch 7.5.1CentOSElasticsearch
- Docker-第一課Docker
- Docker-第二課Docker
- docker-安裝mongodbDockerMongoDB
- Docker-基礎篇Docker
- Docker-容器使用Docker
- Docker-埠對映Docker
- 基於滴滴雲部署 Elasticsearch + Kibana + FluentdElasticsearch
- Elasticsearch系列---生產叢集部署(下)Elasticsearch
- Elasticsearch系列---生產叢集部署(上)Elasticsearch
- docker安裝elasticsearch及kibana部署、操作DockerElasticsearch
- ELK 日誌分析系統 ----------- 部署ElasticSearch群集Elasticsearch
- 樹莓派部署Elasticsearch6叢集樹莓派Elasticsearch
- docker-執行tomcat服務DockerTomcat
- docker-執行jenkins服務DockerJenkins
- docker-執行mysql服務DockerMySql
- Docker Compose部署 EFK(Elasticsearch + Fluentd + Kibana)收集日誌DockerElasticsearch
- Elasticsearch 在Linux下的安裝部署和配置ElasticsearchLinux
- elasticsearch-7.17.15 叢集安裝部署及kibana配置Elasticsearch
- ElasticSearch 叢集的規劃部署與運維Elasticsearch運維
- Postgres On Docker-窺探容器服務Docker
- Centos8 部署 ElasticSearch 叢集並搭建 ELK,基於Logstash同步MySQL資料到ElasticSearchCentOSElasticsearchMySql
- ElasticSearch 7.6.2 單機部署三個節點 報錯Elasticsearch
- helm在k8s上部署Elasticsearch和KibanaK8SElasticsearch
- docker-執行JavaWeb服務(jar包)DockerJavaWebJAR
- Docker-映象釋出到Dockerhub和阿里雲Docker阿里
- Elasticsearch學習系列一(部署和配置IK分詞器)Elasticsearch分詞
- 容器化部署目前最新版本的Elasticsearch--8.15.1Elasticsearch
- 日誌分析系統 - k8s部署ElasticSearch叢集K8SElasticsearch