ELK docker 安裝elasticsearch 集群之一


在安裝中,感覺有點困難,因es的版本6與7還是挺有區別的。

非docker版本在之前有寫過一篇文章,介紹安裝es集群。 https://www.cnblogs.com/a393060727/p/12111542.html

1、docker軟件下載相關鏡像

下載軟件,全部統一一個版本:7.1.1。

// 文件收集logstash

# docker pull logstash:7.1.1

// 存儲,搜索引擎 elasticsearch

# docker pull elasticsearch:7.1.1

// 視圖管理

# docker pull kibana:7.1.1

// 日志搬運工 Filebeat

# docker pull filebeat:7.1.1

 

確認下載完成

# docker images

 

 

 

 

1、docker安裝相關軟件

3.1、創建自定義網絡network

在所有安裝的軟件,都使用該自定義網絡,用於連接到連接到同一網絡的其他服務。

# docker network create esnetwork

// 查看網絡有哪些

# docker network ls

// 刪除網絡

# docker network rm 網絡ID

// 查看一個網絡的信息

# docker network inspect ec876e3251a7

 

3.2調高JVM線程數限制數量

// 編輯文件,增加內容

# vi /etc/sysctl.conf

// 增加如下內容

vm.max_map_count=262144

 

// 讓配置生效

# sysctl -p

注:這一步是為了防止啟動容器時,報出如下錯誤:

bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

 

 

 

 

1、掛在文件配置

elasticsearch.yml配置說明:

參數

說明

cluster.name

集群名稱,相同名稱為一個集群

node.name

節點名稱,集群模式下每個節點名稱唯一

node.master

當前節點是否可以被選舉為master節點,是:true、否:false

node.data

當前節點是否用於存儲數據,是:true、否:false

path.data

索引數據存放的位置

path.logs

日志文件存放的位置

bootstrap.memory_lock

需求鎖住物理內存,是:true、否:false

bootstrap.system_call_filter

SecComp檢測,是:true、否:false

network.host

監聽地址,用於訪問該es

network.publish_host

可設置成內網ip,用於集群內各機器間通信

http.port

es對外提供的http端口,默認 9200

discovery.seed_hosts

es7.x 之后新增的配置,寫入候選主節點的設備地址,在開啟服務后可以被選為主節點

cluster.initial_master_nodes

es7.x 之后新增的配置,初始化一個新的集群時需要此配置來選舉master

http.cors.enabled

是否支持跨域,是:true,在使用head插件時需要此配置

http.cors.allow-origin

"*" 表示支持所有域名

 

4.1 elasitsearch 高可用配置

現固定一個目錄是用用於保存ES集群數據、日志、配置文件的。

目前我使用的是:

// 新建目錄

# mkdir -p  /home/soft/ES/

// 配置文件目錄

# mkdir -p /home/soft/ES/config

// 數據目錄

# mkdir -p /home/soft/ES/data

// 日志目錄

# mkdir -p /home/soft/ES/logs

 

 

 

4.2.0 創建IK分詞器目錄

在宿主機下載分詞器,找到相應版本7.1.1分詞器。

因為是集群,而為了分詞器之間互不影響,所以建立文件夾不同的文件夾,將7.1下載的zip包復制到這些目錄下,解壓,即可。

在與config同級目錄下新建目錄

# mkdir -p /home/soft/ES/plugins/plugins04

# mkdir -p /home/soft/ES/plugins/plugins05

# mkdir -p /home/soft/ES/plugins/plugins06

3個目錄都這樣操作再講壓縮包復制到這些目錄內,進入目錄解壓

# cd /home/soft/ES/plugins/plugins04

# unzip elasticsearch-analysis-ik-7.1.1.zip

縮短目錄名稱

# mv elasticsearch-analysis-ik-7.1.1 ik

 

4.2.1創建數據存儲掛載目錄在ES目錄下data創建目錄用於掛載數據

# mkdir -p /home/soft/ES/data/data04

# mkdir -p /home/soft/ES/data/data05

# mkdir -p /home/soft/ES/data/data06

 

4.2.2創建數據存儲掛載目錄在ES目錄下logs創建目錄用於掛載日志

# mkdir -p /home/soft/ES/logs/logs04

# mkdir -p/home/soft/ES/logs/logs05

# mkdir -p /home/soft/ES/logs/logs06

 

4.2.3 配置文件信息

就是各個容器節點的配置文件,掛載時指定

節點es04.yml

# vi es04.yml

cluster.name: esinner

node.name: es04

node.master: true

node.data: true

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

network.host: 172.19.0.14

http.port: 9200

transport.tcp.port: 9300

http.cors.enabled: true

http.cors.allow-origin: "*"

discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]

cluster.initial_master_nodes: ["172.19.0.14"]

discovery.zen.minimum_master_nodes: 2

 

節點es05.yml

# vi es05.yml

cluster.name: esinner

node.name: es05

node.master: true

node.data: true

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

network.host: 172.19.0.15

http.port: 9200

transport.tcp.port: 9300

http.cors.enabled: true

http.cors.allow-origin: "*"

discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]

cluster.initial_master_nodes: ["172.19.0.14"]

discovery.zen.minimum_master_nodes: 2

 

節點es06.yml

# vi es07.yml

cluster.name: esinner

node.name: es06

node.master: true

node.data: true

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

network.host: 172.19.0.16

http.port: 9200

transport.tcp.port: 9300

http.cors.enabled: true

http.cors.allow-origin: "*"

discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]

cluster.initial_master_nodes: ["172.19.0.14"]

discovery.zen.minimum_master_nodes: 2

 

4.2.4、安裝elasticsearch

將端口映射出來,通過參數 -p

es的端口原樣暴露出來,設置容器固定IP,配置文件使用config文件夾下的,將es插件(IK分詞器)、es日志、數據信息保存到宿主機。

docker run --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-d --net esnetwork --ip 172.19.0.14 -p 9204:9200 -p 9304:9300 \
-v /home/soft/ES/config/es04.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/soft/ES/plugins/plugins04:/usr/share/elasticsearch/plugins \
-v /home/soft/ES/data/data04:/usr/share/elasticsearch/data \
-v /home/soft/ES/logs/logs04:/usr/share/elasticsearch/logs \
--name es04 elasticsearch:7.1.1

docker run --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-d --net esnetwork --ip 172.19.0.15 -p 9205:9200 -p 9305:9300 \
-v /home/soft/ES/config/es05.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/soft/ES/plugins/plugins05:/usr/share/elasticsearch/plugins \
-v /home/soft/ES/data/data05:/usr/share/elasticsearch/data \
-v /home/soft/ES/logs/logs05:/usr/share/elasticsearch/logs \
--name es05 elasticsearch:7.1.1

docker run --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-d --net esnetwork --ip 172.19.0.16 -p 9206:9200 -p 9306:9300 \
-v /home/soft/ES/config/es06.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/soft/ES/plugins/plugins06:/usr/share/elasticsearch/plugins \
-v /home/soft/ES/data/data06:/usr/share/elasticsearch/data \
-v /home/soft/ES/logs/logs06:/usr/share/elasticsearch/logs \
--name es06 elasticsearch:7.1.1

 

測試

# curl http://192.168.89.138:9204

# curl http://192.168.89.138:9205

# curl http://192.168.89.138:9206

返回結果:

[root@localhost data]# curl http://192.168.89.138:9204

{

  "name" : "es04",

  "cluster_name" : "esinner",

  "cluster_uuid" : "QLo293zCRO-syPbY4kJCwg",

  "version" : {

    "number" : "7.1.1",

    "build_flavor" : "default",

    "build_type" : "docker",

    "build_hash" : "7a013de",

    "build_date" : "2019-05-23T14:04:00.380842Z",

    "build_snapshot" : false,

    "lucene_version" : "8.0.0",

    "minimum_wire_compatibility_version" : "6.8.0",

    "minimum_index_compatibility_version" : "6.0.0-beta1"

  },

  "tagline" : "You Know, for Search"

}

 

驗證集群是否OK

# curl http://192.168.89.137:9200/_cat/nodes?pretty

訪問任意的節點都會得到如下結果:

[root@localhost data]# curl http://192.168.89.138:9206/_cat/nodes?pretty

172.19.0.16 74 93 5 0.03 0.07 0.11 mdi * es06

172.19.0.15 60 93 5 0.03 0.07 0.11 mdi - es05

172.19.0.14 55 93 5 0.03 0.07 0.11 mdi - es04

查看集群相應:

{

  "error" : {

    "root_cause" : [

      {

        "type" : "master_not_discovered_exception",

        "reason" : null

      }

    ],

    "type" : "master_not_discovered_exception",

    "reason" : null

  },

  "status" : 503

}

解決:

配置錯誤。初始化節點要配置成一樣的。都指向同一個機器就可以了。

配置信息增加節點,指定初始化默認master節點:

cluster.initial_master_nodes

 

集群測試:

訪問任意一個節點都是

 

 

 

 

如果關閉掉其中的master節點。集群會自動選舉出現的節點作為主節點。如圖。

 

 

 

再次恢復節點后,節點將作為從節點加入進來。

 

 

 

 

至此,集群成功。

 

 


免責聲明!

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



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