麦克斯仇
Think different
159
文章
36871
阅读
首页
INDEX
文章
ARTICLE
关于
ABOUT
Docker 环境安装 Elasticsearch7.17.15 (ik分词器 + 单节点模式) + Kibana7.17.7
创建日期:
2020/12/03
修改日期:
2024/04/19
Docker
Elasticsearch
Kibana
# Elasticsearch > 官方教程:[Install Elasticsearch with Docker](https://www.elastic.co/guide/en/elasticsearch/reference/7.17/docker.html) ## 镜像拉取 ```bash docker pull elasticsearch:7.17.15 ``` > 因为 `Spring Boot 2.7.18` 对应的 `Spring Data Elasticsearch 4.4.18` 对应的 `Elasticsearch` 的版本为 `7.17.15` ,所以本文以此版本为例 ## 系统配置 ### 修改 sysctl.conf 编辑配置文件 ```bash vim /etc/sysctl.conf ``` 添加如下设置 ```bash vm.max_map_count = 262144 net.ipv4.tcp_retries2=5 ``` 保存后执行以下命令立即生效 ```bash sysctl -p ``` ### 检查 ulimits 的 nofile 和 nproc 运行一个测试容器(运行时会拉取centos镜像,请耐心等待),输出默认值 ```bash docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && ulimit -Su' ``` 默认情况下,会输出如下内容 - 前两位代表:最多可开启的文件数,最小要求65536 - 后两位代表:进程开启多少个线程,最小要求4096 - unlimited代表不受限制 ``` 1048576 1048576 unlimited unlimited ``` 若出现被限制的值,则需要在执行`docker run`时添加如下参数 ```bash --ulimit nofile=65536:65536 --ulimit nproc=4096:4096 ``` ### 禁用 swap 分区 若已关闭则忽略 #### 方案1:关闭宿主机的 swap 临时关闭 ```bash swapoff -a ``` 永久关闭 ```bash #编辑配置文件 vim /etc/fstab # 在/etc/fstab中swap分区这行前加 # # /dev/mapper/centos-swap swap swap defaults 0 0 ``` #### 方案2:关闭容器的 swap 在执行 `docker run` 时添加如下参数 ```bash -e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1 ``` ### 映射端口 | 端口 | 协议 | 作用 | | ---- | ---- | ------------ | | 9200 | tcp | 客户端访问 | | 9300 | tcp | 集群数据通信 | 在执行 `docker run` 时添加 `-p` 参数完成端口映射,如果是单节点,9300可以不用映射,如果不需要外部访问,仅容器之间访问,9200也可以不用映射 ### 检查Docker存储驱动程序 不建议使用 `loop-lvm` 驱动,执行以下命令查看驱动 ```bash docker info | grep Storage ``` 查看结果是否如下,默认情况下,驱动为 `overlay2` ```bash Storage Driver: overlay2 ``` 如若出现 `loop-lvm` ,请参考 [Docker storage drivers](https://docs.docker.com/storage/storagedriver/select-storage-driver/) 相关文档 ## 其他配置 ### 自定义网络 创建一个网络,方便后续的其他服务连接进来,网络名称( `elk-birdge` )可自定义 ```bash docker network create elk-birdge ``` ### 文件夹准备 ```bash # 创建 elasticsearch 文件夹 mkdir -p /work/elasticsearch # 进入该文件夹(下文中的命令均以该目录为基础!) cd /work/elasticsearch # 创建 plugins 文件夹,用于存放插件 mkdir -p plugins ``` ### 添加 elasticsearch-analysis-ik #### 下载 注:由于 `ik` 的作者没有给 `7.17.15` 版本提供 `zip` 包,可以下载高一个或低一个小版本的 `zip` ,并修改配置文件 下载地址:[https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.17.14](https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.17.14) 下载对应的 `elasticsearch-analysis-ik-7.17.14.zip` 压缩包。 #### 解压 ```bash # 安装解压工具(若已安装,则忽略此步) # CentOS yum -y install zip unzip # Debian apt-get install zip unzip # 解压 unzip elasticsearch-analysis-ik-7.17.14.zip -d /work/elasticsearch/plugins/ik/ # 删除 rm -rf elasticsearch-analysis-ik-7.17.14.zip ``` #### 修改配置文件 编辑配置文件 ```bash vim plugins/ik/plugin-descriptor.properties ``` 将文件结尾的 `elasticsearch.version=7.17.14` 改为 `elasticsearch.version=7.17.15` ## 单节点模式启动 ### 创建文件夹 创建数据存储文件夹,并修改文件夹所有者。说明:默认情况下,容器运行使用 `elasticsearch` 用户并且 `uid:gid` 为 `1000:0` ,所以使用 `-v` 绑定本地数据卷时,需要修改文件夹访问权限以允许容器访问 ```bash mkdir data chmod g+rwx data chgrp 0 data ``` ### 启动容器 ```bash docker run -d --name elasticsearch -h elasticsearch --restart always \ -v /work/elasticsearch/data/:/usr/share/elasticsearch/data \ -v /work/elasticsearch/plugins/:/usr/share/elasticsearch/plugins \ --network elk-birdge -p 9200:9200 \ -e TZ=Asia/Shanghai \ -e "network.host=0.0.0.0" \ -e "network.publish_host=192.168.220.101" \ -e "discovery.type=single-node" \ -e "ingest.geoip.downloader.enabled=false" \ -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \ elasticsearch:7.17.15 ``` 启动脚本注意如下事项 - `ulimit` 相关设置根据情况自行添加 - `swap` 相关设置根据情况自行添加 - `-e TZ=Asia/Shanghai` :代表时区设置 - 如果后面搭建的 `Kibana` 和 `Elasticsearch` 在同一台服务器同一个网络下,则无需添加 `-e "network.publish_host=192.168.220.101" \` ,其中 `192.168.220.101` 为宿主机的 `IP` - `-e "discovery.type=single-node"` :使用单节点模式 - `-e "ingest.geoip.downloader.enabled=false"` :关闭 `geoip` 数据下载 - `-e ES_JAVA_OPTS="-Xms512m -Xmx512m"` : `JVM` 内存设置,根据实际情况调整,但是 `Xms` 和 `Xmx` 的值一定要相等 - 端口根据需要进行映射 ### 查看日志 跟踪日志,当日志停止输出且中途未出现 ERROR 即可表示容器启动成功,此时可以按 `Ctrl + c` 退出跟踪 ```bash docker logs -f elasticsearch ``` ### 访问 浏览器访问:`http://[ip]:9200` # Kibana 官方教程:[Install Kibana with Docker](https://www.elastic.co/guide/en/kibana/7.17/docker.html) ## 镜像拉取 ```bash docker pull docker.elastic.co/kibana/kibana:7.17.15 ``` ## 启动容器 ```bash docker run -d --name kibana -h kibana --restart always \ --network elk-birdge -p 5601:5601 \ -e "ELASTICSEARCH_HOSTS=http://192.168.220.101:9200" \ docker.elastic.co/kibana/kibana:7.17.15 ``` 注意:如果 `Kibana` 和 `Elasticsearch` 在同一台服务器同一个网络下,则无需填写 `-e "ELASTICSEARCH_HOSTS=http://192.168.220.101:9200" \` ,其中 `192.168.220.101` 为 `Elasticsearch` 宿主机的 `IP` ## 访问 浏览器访问:`http://[ip]:5601`
200
全部评论