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节点。集群会自动选举出现的节点作为主节点。如图。

 

 

 

再次恢复节点后,节点将作为从节点加入进来。

 

 

 

 

至此,集群成功。

 

 

posted on 2020-02-10 21:29  陈惟鲜的博客  阅读(1120)  评论(0编辑  收藏  举报

导航