Elasticsearch docker 安裝部署
Elasticsearch(ES) 的docker鏡像運(yùn)用 Centos:7作為基礎(chǔ)鏡像晌杰。發(fā)布過的相關(guān)Docker鏡像包可以在www.docker.elastic.co官網(wǎng)進(jìn)行查潮峦。源碼托管在Github上桃笙。
單節(jié)點(diǎn)安裝
拉取鏡像包
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.1
其他的版本鏡像包可以去www.docker.elastic.co進(jìn)行下載瘩欺。
運(yùn)行一個(gè)單節(jié)點(diǎn)集群的服務(wù)
運(yùn)行一個(gè)單節(jié)點(diǎn)集群服務(wù)用來開發(fā)或者測試结胀。并且要指定單節(jié)點(diǎn)發(fā)現(xiàn)來繞過引導(dǎo)檢查。詳細(xì)引導(dǎo)檢查請(qǐng)查看引導(dǎo)檢查
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.1
多節(jié)點(diǎn)集群安裝
使用Docker Compose 啟動(dòng)一個(gè)多節(jié)點(diǎn)集群
-
1 創(chuàng)建一個(gè)docker compose文件docker-compose.yml
version: '2.2' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1 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.6.1 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.6.1 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 Compose 例子文件將創(chuàng)建一個(gè)3個(gè)節(jié)點(diǎn)的Elasticsearch集群普监。節(jié)點(diǎn)es01 監(jiān)聽 localhost:9200 并且在Docker網(wǎng)絡(luò)中節(jié)點(diǎn)es02 和es03要和es01通信贵试。
請(qǐng)記錄此配置文件導(dǎo)出的端口號(hào):9200,并且要在所有網(wǎng)絡(luò)接口上配置Linux的iptables端口開放信息凯正,這樣Elasticsearch服務(wù)就有權(quán)限公開訪問了毙玻。如果您不想公開端口9200,而是使用反向代理廊散,請(qǐng)?jiān)赿ocker-compose.yml文件中將9200:9200替換為127.0.0.1:9200:9200桑滩。 然后只能從主機(jī)本身訪問Elasticsearch。
#開發(fā)9200端口
iptables -A INPUT -p tcp --dport 9200 -j ACCEPT
service iptables save
卷data01,data02,和data01直接存儲(chǔ)著節(jié)點(diǎn)數(shù)據(jù)允睹,沒有用持久化存儲(chǔ)运准,此種配置在重啟服務(wù)后數(shù)據(jù)可能丟失
-
2 確保為Docker Engine分配了至少4GiB的內(nèi)存
如果docker compose 沒有安裝請(qǐng)查看docs.docker.com網(wǎng)站進(jìn)行安裝
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
查看版本
# docker-compose --version docker-compose version 1.25.4, build 8d51620a
-
3 運(yùn)行docker compose 來創(chuàng)建拉起集群
docker-compose up -d
報(bào)錯(cuò):
iptables: No chain/target/match by that name
原因:
docker服務(wù)啟動(dòng)時(shí)定義的自定義鏈
DOCKER由于某種原因被清掉重啟docker服務(wù)及可重新生成自定義鏈DOCKER
解決方案:iptables -t filter -F iptables -t filter -X systemctl restart docker
docker 運(yùn)行查看
# docker ps|grep es0 86b91ba4732f docker.elastic.co/elasticsearch/elasticsearch:7.6.1 "/usr/local/bin/do..." 5 minutes ago Up 5 minutes 0.0.0.0:9200->9200/tcp, 9300/tcp es01 706171c7357b docker.elastic.co/elasticsearch/elasticsearch:7.6.1 "/usr/local/bin/do..." 5 minutes ago Up 5 minutes 9200/tcp, 9300/tcp es02 941ebc831b93 docker.elastic.co/elasticsearch/elasticsearch:7.6.1 "/usr/local/bin/do..." 5 minutes ago Up 5 minutes 9200/tcp, 9300/tcp es03
-
4 提交一個(gè)_cat/nodes 請(qǐng)求來查看節(jié)點(diǎn)是否被拉起來以及運(yùn)行狀態(tài)
curl -X GET "localhost:9200/_cat/nodes?v&pretty"
查看節(jié)點(diǎn)狀態(tài)結(jié)果:
# curl -X GET "localhost:9200/_cat/nodes?v&pretty" ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 172.18.0.4 22 86 8 0.16 0.58 0.70 dilm - es03 172.18.0.3 16 86 7 0.16 0.58 0.70 dilm * es01 172.18.0.2 27 86 7 0.16 0.58 0.70 dilm - es02
-
5 停止集群
#數(shù)據(jù)將會(huì)保留 docker-compose down #數(shù)據(jù)將被清除 docker-compose down -v #重啟集群 docker-compose up -d
產(chǎn)品中使用注意事項(xiàng)
-
1 設(shè)置 vm.max_map_count 至少為262144
grep vm.max_map_count /etc/sysctl.conf vm.max_map_count=262144 #如果沒有設(shè)置運(yùn)行如下命令 sysctl -w vm.max_map_count=262144
-
2 配置文件必須被elasticsearch用戶可讀
默認(rèn)情況下幌氮,Elasticsearch使用uid:gid 1000:0作為用戶elasticsearch在容器內(nèi)運(yùn)行。
如果您要綁定安裝本地目錄或文件胁澳,則elasticsearch用戶必須可以讀取它该互。 此外,該用戶必須對(duì)數(shù)據(jù)和日志目錄具有寫權(quán)限韭畸。
例如:準(zhǔn)備一個(gè)本地目錄通過mount來存儲(chǔ)數(shù)據(jù)
mkdir esdatadir chmod g+rwx esdatadir chgrp 0 esdatadir
參考:官方網(wǎng)站