docker-elasticsearch集群安装
前言
elasticsearch是流行的全文检索的开源实现,并提供elk的日志分析支持,分词和执行效率高,docker的安装方式省略了很多配置和安装设置步骤,更加方便,而且便于集群扩展。
安装步骤
本文以elasticsearch-6.5.0版本为例,按照1主1从的方式安装部署,前提已经在centos上安装好了docker环境。
1. 创建es挂载目录
cd /home/es
mkdir -p es/config
2. 创建es数据存放目录
cd es
mkdir data1
mkdir data2
3. 创建分词器等插件目录
cd es
mkdir plugin1
mkdir plugin2
4. 编辑es的配置文件,es1.yml,es2.yml。对应两个node的配置
es1.yml:
#es1.yml
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.1.189
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: “*”
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: [“192.168.1.189:9300”,“192.168.1.189:9301”]
discovery.zen.minimum_master_nodes: 1
es2.yml:
#es2.yml
cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.10.180
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: “*”
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: [“192.168.10.180:9300”,“192.168.10.180:9301”]
discovery.zen.minimum_master_nodes: 1
5. 宿主机用户、用户组创建
elasticsearch需要以elasticsearch的用户启动,同时需要把挂卷对应的目录的所属更改成elasticsearch所属
- 创建用户,用户组,修改目录所属以及elasticsearch.yml的权限
[root@localhost ~]# groupadd elasticsearch
[root@localhost ~]# useradd -g elasticsearch elasticsearch
[root@localhost ~]# chown -R elasticsearch:root /home/es
[root@localhost ~]# chmod 777 /home/es/es1.yml
[root@localhost ~]# chmod 777 /home/es/es2.yml
6. 优化宿主机的句柄、文件数量
- 配置系统最大打开文件描述符
vim /etc/sysctl.conf
设置 vm.max_map_count = 262144
设置完成后执行以下命令生效
sysctl -p
- 配置进程最大打开文件描述符
vim /etc/security/limits.conf
在文件最后添加:
* soft nofile 65536
* hard nofile 65536
7. docker 启动集群节点
- 启动容器1–es01:
docker run -d -p 9200:9200 -p 9300:9300 -p 5601:5601 -v /home/es/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/es/plugins1:/usr/share/elasticsearch/plugins -v /home/es/data1:/usr/share/elasticsearch/data --name ES01 elasticsearch:6.5.0
- 启动容器2–es02:
docker run -d -p 9201:9201 -p 9301:9301 -v /home/es/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/es/plugins2:/usr/share/elasticsearch/plugins -v /home/es/data2:/usr/share/elasticsearch/data --name ES02 elasticsearch:6.5.0
8. 安装es-head插件:
- 拉取head镜像
docker pull mobz/elasticsearch-head:5
- 运行head插件容器
docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5
9. 查看elasticsearch的集群状态:
http://192.168.10.180:9200/_cat/nodes?pretty
10. elastic-search 自定义词库配置
对于中文和拼音的检索,业内推荐ik和pinyin的分词会更加精准的查询定位到结果,所以我们可以添加ik和pinyin的词库。
- 先从网上下载ik和pinyin的词库压缩文件。
- 解压压缩文件到es映射的卷标所在的plugin目录下即可
- 解压完成应该可以在plugin目录下看到ik,pinyin两个目录,目录里面有对应的jar文件
当前我们的映射目录在/home/es/plugins/下面
- elastic-search jvm内存调整
修改/config/jvm.options文件的内存配置
10-:-XX:UseAVX=2
按照本文使用docker启动的es没有将jvm.options文件映射到卷标外,需要在容器内进行上述操作