Elasticsearch環境快速搭建以及注意點


本文主要說明使用docker搭建開發用Elasticsearch的相關要點,包含有:

搭建Elasticsearch集群docker環境

搭建Kibana的docker環境

 

一、搭建Elasticsearch環境

docker下存在兩個標准的Elasticsearch鏡像,分別為elasticsearch:latest 和 docker.elastic.co/elasticsearch/elasticsearch ,前者目前的Elasticsearch版本為5.*,版本略微落后;后者最新版本為 7.6.0 。

本文使用后者,部署為單節點的集群,並且通過內置x-pack開通SSL安全加密和Basic賬號密碼登錄。

1,首先,創建cert證書,並存儲於本地docker volume中備用。

 1 [~/docker-compose/elasticsearch]$ cat create_certs.yaml
 2 version: "3"
 3 services:
 4   create_certs:
 5     image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
 6     command: >
 7       bash -c '
 8         yum install -y -q -e 0 unzip;
 9         if [[ ! -f /certs/bundle.zip ]]; then
10           bin/elasticsearch-certutil cert --silent --pem --in config/certificates/instances.yml -out /certs/bundle.zip;
11           unzip /certs/bundle.zip -d /certs;
12         fi;
13         chown -R 1000:0 /certs
14       '
15     user: "0"
16     working_dir: /usr/share/elasticsearch
17     volumes:
18       - certs:/certs
19       - .:/usr/share/elasticsearch/config/certificates
20 volumes:
21   certs:

執行上述一次性命令(執行過程中,所需要的instances.yml文件參見下文),並妥善保管該volume(certs)

1 docker-compose -f create_certs.yaml run --rm create_certs

執行成功后,應該可以看見如下結果

1 [~/docker-compose/elasticsearch]$ docker volume ls
2 DRIVER              VOLUME NAME
3 local               elasticsearch_certs

執行過程中,所需要的instances.yml文件如下:

1 [~/docker-compose/elasticsearch]$ cat instances.yml
2 instances:
3   - name: es01
4     dns:
5       - es01
6       - localhost
7     ip:
8       - 127.0.0.1%

注意,其中的es01,應該對應部署es集群節點的服務器的主機名,此處由於是docker環境,因此應該為docker-compose的service的名字(以在docker container中可以正常ping通該字符串到對應container為標准),若集群存在多個節點,則應該列出多個主機名

然后正式啟動Elasticsearch集群:

 1 [~/docker-compose/elasticsearch]$ cat docker-compose.yaml
 2 version: "3"
 3 services:
 4   es01:
 5     image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
 6     environment:
 7       # - "discovery.type=single-node"
 8       - node.name=es01
 9       - cluster.name=es-docker-cluster
10       - discovery.seed_hosts=es01
11       - cluster.initial_master_nodes=es01
12       - cluster.max_shards_per_node=10000
13       - bootstrap.memory_lock=true
14       - action.destructive_requires_name=false
15       - ELASTIC_PASSWORD=abc
16       # - ELASTIC_PASSWORD_FILE=/run/secrets/bootstrapPassword.txt
17       - xpack.security.enabled=true
18       - xpack.security.http.ssl.enabled=true
19       - xpack.security.http.ssl.key=/usr/share/elasticsearch/config/certs/es01/es01.key
20       - xpack.security.http.ssl.certificate_authorities=/usr/share/elasticsearch/config/certs/ca/ca.crt
21       - xpack.security.http.ssl.certificate=/usr/share/elasticsearch/config/certs/es01/es01.crt
22       - xpack.security.transport.ssl.enabled=true
23       - xpack.security.transport.ssl.verification_mode=none
24       - xpack.security.transport.ssl.certificate_authorities=/usr/share/elasticsearch/config/certs/ca/ca.crt
25       - xpack.security.transport.ssl.certificate=/usr/share/elasticsearch/config/certs/es01/es01.crt
26       - xpack.security.transport.ssl.key=/usr/share/elasticsearch/config/certs/es01/es01.key
27       - reindex.remote.whitelist=10.20.1.*:9200,127.0.10.*:9200, localhost:*
28       - "http.cors.enabled=true"
29       - "http.cors.allow-origin=*"
30       - "http.cors.allow-headers=Authorization,X-Requested-With,Content-Length,Content-Type"
31       - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
32     ports:
33       - "9200:9200"
34       - "9300:9300"
35     ulimits:
36       memlock:
37         soft: -1
38         hard: -1
39     volumes:
40       - ./data01:/usr/share/elasticsearch/data
41       - certs:/usr/share/elasticsearch/config/certs
42       - ./plugins:/usr/share/elasticsearch/plugins
43 volumes:
44   certs:
45     driver: local

此處掛載前面步驟創建的certs volume進行使用;

注意:

1)若在前面的步驟中,不創建volume而是直接將證書生成在本地目錄,則此地掛在本地目錄時,應該妥善處理目錄以及其中文件的屬主和權限;

2)certs卷必須掛載到路徑 /usr/share/elasticsearch/config 下,否則啟動時報錯,原因為ES安全規則不允許;但若直接掛載為 /usr/share/elasticsearch/config 目錄則會覆蓋該目錄中的其他默認配置文件,因此此處掛載為其子目錄

3)對於ES標准配置文件中支持的配置,均可以在environment節中通過環境變量的方式進行配置,當然,也可以提供自己的完整的配置文件(對於docker鏡像elasticsearch:latest,提供這些配置的方式為提供command段,以- -Exxxx: xxxx的方式處理)

至此,ES成功啟動,可在瀏覽器中通過  https://localhost:9200 地址進行訪問,默認的用戶名為  elastic  ,密碼在上述配置文件中配置,為 abc  。

注意:

1)在Firefox瀏覽器和Safari中,需要按照頁面提示忽略證書警告

2)在Chrome內核系列瀏覽器,則根據不同環境和版本而不同,部分可以按照頁面提示忽略證書警告,部分需要將瀏覽器地址欄前報警的SSL證書導入信任證書列表

 

啟動kibana

使用如下docker-compose.yaml啟動kibana

 1   kibana:
 2     image: docker.elastic.co/kibana/kibana:7.6.0
 3     environment:
 4       # SERVER_HOST: "0.0.0.0"
 5       ELASTICSEARCH_HOSTS: "https://es01:9200"
 6       ELASTICSEARCH_SSL_VERIFICATIONMODE: none
 7       ELASTICSEARCH_USERNAME: elastic
 8       ELASTICSEARCH_PASSWORD: abc
 9       I18N_LOCALE: zh_CN
10     links:
11       - "es01"
12     ports:
13       - 5601:5601

注意點:

1)kibana的鏡像版本需要與ES的版本保持一致;若不一致,不保證不出問題

2)標准kibana的配置文件kibana.yml中的配置,均可以使用Spring的標准配置項的環境變量映射方式在 environment 段進行配置;具體標准簡述:字母一律轉換為大寫,分割用的 . 號和中划線 - 一律轉換為下划線 _ 

 

至此,部署完畢。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM