1. 前言

昨天有个项目需要用到Elasticsearch,在调研了下功能可行性,我就试着在本地先部署,下面是我的分享内容。

Elasticsearch (后面简称es) 是一个分布式、RESTful 风格的搜索和数据分析引擎,是目前全文搜索引擎的首选,它可以快速地搜索、存储和分析庞大的数据。

Kibana 是一款开源的数据分析和可视化平台,设计用于和 Elasticsearch 协作。使用 Kibana 可以对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。

2. 安装运行

我是在本地window10部署环境的,实际测试需要就部署了单台的es和kibana

2.1. 前期准备

在E:\docker\es目录下,新建config、data、logs文件。供后续挂载文件存放

2.2. es配置

cd /e/docker/es/config
vi elasticsearch.yml

使用下面配置

# 集群名称
cluster.name: es-cluster
# 节点名称
node.name: es-node1
# 是否可以成为master节点
node.master: true
# 是否允许该节点存储数据,默认开启
node.data: true
# 绑定host,0.0.0.0代表当前节点的ip
network.host: 0.0.0.0
#  设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址(本机ip)
network.publish_host: 本机ip
# 设置对外服务的http端口,默认为9200
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300
transport.port: 9300
# 集群发现
discovery.seed_hosts:
  - 本机ip:9300
# 手动指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算
cluster.initial_master_nodes:
  - es-node1
# 是否支持跨域,默认为false
http.cors.enabled: true
# 当设置允许跨域,默认为*,表示支持所有域名
http.cors.allow-origin: "*"
# 安全认证
xpack.security.enabled: false
#http.cors.allow-headers: "Authorization"

2.3. kibana的配置

cd /e/docker/es/config
vi kibana.yml

使用下面配置

# 服务端口
server.port: 5601
# 服务IP
server.host: "0.0.0.0"
# ES
elasticsearch.hosts: ["http://本机ip:9200"]
# 汉化
i18n.locale: "zh-CN"

2.4. docker-compose.yml配置

cd /e/docker/es
vi docker-compose.yml

使用下面配置

version: "3"
services:
  es-master:
    container_name: es-master
    hostname: es-master
    image: elasticsearch:7.1.1
    restart: always
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - /e/docker/es/config/es-master.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /e/docker/es/data:/usr/share/elasticsearch/data
      - /e/docker/es/logs:/usr/share/elasticsearch/logs
    environment:
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"

  es-head:
    container_name: es-head
    image: mobz/elasticsearch-head:5
    restart: always
    ports:
      - 9100:9100
    depends_on:
      - es-master

  kibana:
    container_name: kibana
    hostname: kibana
    image: kibana:7.1.1
    restart: always
    ports:
      - 5601:5601
    volumes:
      - /e/docker/es/config/kibana.yml:/usr/share/kibana/config/kibana.yml
    environment:
      - elasticsearch.hosts=http://本机ip:9200
    depends_on:
      - es-master

3. 执行部署

cd /e/docker/es
docker-compose up --build -d

等待片刻即可

4. 查看界面

查看es-head集群状态

http://127.0.0.1:9100 es-head.png

登录kibana查看日志

http://127.0.0.1:5601

kibana.png

5. 出现的问题

在docker软件查看到es启动异常,es-master容器启动失败为红色,双击界面或根据容器id查看日志


# 查看docker所有的容器
docker container ls

# 根据容器id查看日志
docker logs -f container_id

发现错误:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

原因分析

系统虚拟内存默认最大映射数为65530,无法满足ES系统要求,需要调整为262144以上。

处理办法

设置vm.max_map_count参数

// linux 处理
sudo vim /etc/sysctl.conf
# 添加一行配置:
vm.max_map_count=655360

// window 处理
wsl -d docker-desktop
sysctl -w vm.max_map_count=262144
exit
Copyright © yzx该文章修订时间: 2022-05-25 14:44:08

results matching ""

    No results matching ""