实际应用中应是多台服务器做集群,这里演示仅一台服务器用端口号区分的伪集群,这里忽略docker容器安装JDK等必要基础环境,需悉知.
1.拉取相应版本es
docker pull elasticsearch:6.8.6
2.启动容器(注明:可将第13步可在此处设置-v /usr/local/data:/usr/share/elasticsearch/data)
docker run --name elasticsearch-00 -v /usr/local/data:/usr/share/elasticsearch/data -p 9200:9200 -p 9300:9300 -d elasticsearch:6.8.6
启动第二个容器时或许会出现错误:
ERROR: bootstrap checks failed max virtual memory areas vm.max_map_count [65530]... ...
此时切换root权限:
$ vi /etc/sysctl.conf
设置:
vm.max_map_count=262144
并执行:
$ sysctl -p
docker run --name elasticsearch-01 -p 9201:9201 -p 9301:9301 -d elasticsearch:6.8.6
docker run --name elasticsearch-02 -p 9202:9202 -p 9302:9302 -d elasticsearch:6.8.6
3.进入容器elasticsearch-00
docker exec it elasticsearch-00 /bin/bash
4.进入目录config下,并编辑elasticsearch.yml
$ cd config
$ vi elasticsearch.yml
cluster.name: elasticsearch #集群名称
node.name: node-00 #节点名称,集群内不可重复
network.bind_host: 0.0.0.0
network.publish_host: 127.0.0.1 #宿主机IP地址
http.port: 9200 #开放htpp端口
transport.tcp.port: 9300 #开放tcp端口
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true #可推荐主节点
node.data: true #可存储数据
discovery.zen.ping.unicast.hosts: #发现集群 ["127.0.0.1:9300","127.0.0.1:9301","127.0.0.1:9302"]
discovery.zen.minimum_master_nodes: 2 #集群主节点最小值2
5.保存并退出容器
$ wq
$ exit # 可忽略此处跳至6
同样其余两个节点都得编辑.yml文件并修改相应端口及节点名称
6.重启集群容器(可忽略此步,跳至8)
$ docker restart elasticsearch-00
7.访问
http://127.0.0.1:9200/_cat/nodes
出现:
即为成功!
8.下载对应的ik分词,并拷贝到容器内,进入下载好的ik分词目录下:
$ docker cp elasticsearch-analysis-ik-6.8.6.zip elasticsearch-00:/usr/share/elasticsearch/plugins
9.进入容器elasticsearch-00
$ cd /usr/share/elasticsearch/plugins
创建文件夹ik
$ mkdir ik
10.将./plugins下压缩包移动到ik文件夹下并解压最后删除压缩包,其他节点相同步骤
$ mv elasticsearch-analysis-ik-6.8.6.zip ./ik/
$ cd ik
$ unzip elasticsearch-analysis-ik-6.8.6.zip
$ rm -rf elasticsearch-analysis-ik-6.8.6.zip
$ exit # 退出容器
$ docker restart elasticsearch-00 #重启服务
11.kibana
$ 下篇博文在记录吧,再补充一些其他的
12.docker容器默认一般内存为1G比较小,我们给集群(示例ID:dab8a6b90cb4)容器限定到约6G
$ docker update -m 6000M --memory-swap 6000M dab8a6b90cb4
13.docker启动es默认将数据放在容器内部,当我们不小心删除容器的话,可能会造成数据丢失,简单的持久化到本地,挂载本地目录到容器内部
docker run -it -v /usr/local/data:/usr/share/elasticsearch/data elasticsearch-00 /bin/bash