docker中使用docker-compose搭建Elasticsearch 7.8.0集群及安装IK分词器

  • 创建如下文件夹
mkdir -p /usr/local/microservices/elasticSearch/{es_data01,es_data02,es_data03,es_conf/_data,es_plugins}
  • /usr/local/microservices/elasticSearch/es_conf/_data目录下编写ES的yml文件
vim  es01.yml

文件内容:
注意:需要修改文件中 network.publish_host,discovery.zen.ping.unicast.hosts 两个配置项的IP

cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.31.70 #替换为docker宿主机IP
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.31.70:9300","192.168.31.70:9301","192.168.31.70:9302"] #替换为docker宿主机IP
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
vim  es02.yml

文件内容:
注意:需要修改文件中 network.publish_host,discovery.zen.ping.unicast.hosts 两个配置项的IP

cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.31.70 #替换为docker宿主机IP
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.31.70:9300","192.168.31.70:9301","192.168.31.70:9302"] #替换为docker宿主机IP
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
vim  es03.yml

文件内容:
注意:需要修改文件中 network.publish_host,discovery.zen.ping.unicast.hosts 两个配置项的IP

cluster.name: elasticsearch-cluster
node.name: es-node3
network.bind_host: 0.0.0.0
network.publish_host: 192.168.31.70 #替换为docker宿主机IP
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true  
discovery.zen.ping.unicast.hosts: ["192.168.31.70:9300","192.168.31.70:9301","192.168.31.70:9302"] #替换为docker宿主机IP
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
  • /usr/local/microservices/elasticSearch目录下编写docker-compose.yml文件
vim docker-compose.yml

文件内容:

version: '2.2'
services:
  es01:
    image: elasticsearch:7.8.0
    container_name: es01
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - TAKE_FILE_OWNERSHIP=true
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es_data01:/usr/share/elasticsearch/data 
      - ./es_conf/_data/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./es_plugins:/usr/share/elasticsearch/plugins
    ports:
      - 9200:9200
      - 9300:9300 
    networks:
      - es-net
    restart: always  
  es02:
    image: elasticsearch:7.8.0
    container_name: es02
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - TAKE_FILE_OWNERSHIP=true
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es_data02:/usr/share/elasticsearch/data 
      - ./es_conf/_data/es02.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./es_plugins:/usr/share/elasticsearch/plugins
    ports:
      - 9201:9201
      - 9301:9301
    networks:
      - es-net
    restart: always 
  es03:
    image: elasticsearch:7.8.0
    container_name: es03
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - TAKE_FILE_OWNERSHIP=true
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es_data03:/usr/share/elasticsearch/data 
      - ./es_conf/_data/es03.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./es_plugins:/usr/share/elasticsearch/plugins
    ports:
      - 9202:9202
      - 9302:9302
    networks:
      - es-net
    restart: always
    
networks:
   es-net:      
  • 防火墙开放以下配置端口

注意:此处一定要开放ES集群的内部通信端口,否则,ES集群无法互联

在这里插入图片描述

  • 设置最大虚拟内存值,避免过小无法支持ElasticSearch的运行
vi /etc/sysctl.conf

在文件末尾新增如下内容:

vm.max_map_count = 655360

刷新系统配置

sysctl  -p
  • 启动ES集群
docker-compose up -d
  • 查看是否启动成功
docker ps

在这里插入图片描述
在这里插入图片描述

  • 测试连接

注意,此处启动后需要大概等1分钟的样子才能执行测试语句,不然会出现如下错误,具体原因本人还不清楚,知道的小伙伴,可以下方评论告诉我,谢谢

错误如下:
curl: (56) Recv failure: Connection reset by peer
curl localhost:9200

出现如下内容则表示搭建成功:
在这里插入图片描述

  • 测试集群是否构建成功
## 浏览器输入
http://docker宿主机IP:9200/_cat/nodes?pretty

出现如下界面说明集群构建成功:
在这里插入图片描述

  • 常见问题

1.执行curl localhost:9200后不能出现ES信息,使用docker logs 容器ID命令查看日志,出现如下错误:

 [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase

解决方案:

vi /etc/sysctl.conf

在文件末尾新增如下内容:

vm.max_map_count = 655360

刷新系统配置

sysctl  -p

2.在docker宿主机上执行curl localhost:9200后可以出现ES信息,但是外网不能连接

在浏览器通过外网进行访问

http://docker宿主机IP:9200/
http://docker宿主机IP:9201/
http://docker宿主机IP:9202/

正常情况会出现如下页面:
在这里插入图片描述

若访问不到,可尝试如下解决办法:
2.1 检查防火墙,9200,9201,9202,这三个端口是否开放
2.2 重启docker,重启ES集群

3.出现503错误

{
    "error": {
        "root_cause": [
            {
                "type": "cluster_block_exception",
                "reason": "blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];"
            }
        ],
        "type": "cluster_block_exception",
        "reason": "blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];"
    },
    "status": 503
}

解决方案:
/usr/local/microservices/elasticSearch/下的es_data01,es_data02,es_data03,文件夹中的内容删除再重启
4.ES集群无法互联,单机访问没有问题,但是集群无法互联
解决方案:
检查上文中要求开放的9301,9302,9303,三个内部通信端口是否开通,开通后重启ES

在这里插入图片描述

2.将下载好的elasticsearch-analysis-ik-7.8.0.zip文件上传至/usr/local/microservices/elasticSearch/es_plugins目录下

3.将压缩包拷贝到容器

docker cp /usr/local/microservices/elasticSearch/es_plugins/elasticsearch-analysis-ik-7.8.0.zip  es01:/usr/share/elasticsearch/plugins

4.进入es01容器

docker exec -it es01 /bin/bash

5.创建目录

mkdir /usr/share/elasticsearch/plugins/ik

6.将文件压缩包移动到ik目录下

mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.8.0.zip  /usr/share/elasticsearch/plugins/ik

5.进入ik目录

cd /usr/share/elasticsearch/plugins/ik

6.解压

unzip elasticsearch-analysis-ik-7.8.0.zip  

7.退出容器

exit

8.重启es集群
/usr/local/microservices/elasticSearch/目录下执行

#停止
docker-compose stop
#启动
docker-compose up -d
  • 测试Ik分词器
    1.未使用分词器
    在这里插入图片描述

2.使用分词器后
在这里插入图片描述

至此,搭建成功

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亿只王菜菜

各位爷,赏口饭吃吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值