原创

基于docker和基于OS安装elasticsearch详解

1. 基于docker:
    a)拉取镜像:
        docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    b)启动容器:
        docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch elasticsearch:7.6.2
        解释:
        -d 后台启动
        -p 将容器内端口号映射出来以供外部访问
        -name 给当前容器起名字
    c)修改ES配置
        i.参数设置参见课堂笔记,需要注意的是:network.host和network.publish_host的配置可能与基于OS的配置有所不同。
        ii.在修改ES默认的data和logs路径以前,需要现创建目录并且添加读写权限:
        比如:
            mkdir -p /var/elasticsearch/logs
            chmod 777 /var/elasticsearch/logs
    d)-e display.type=single-node为开发模式的配置,当配置了此项,即表示当前节点为单节点发现,所以生产集群中不能有此项配置。
    e)为了避免当配置文件未正确配置而导致容器无法启动进而导致无法修改容器内ES的配置文件,容器第一次启动成功后最好把容器中配置文件拷贝出来或者在创建容器的时候把目录映射出来,比如:
        i. docker cp 5047a0129302:/usr/share/elasticsearch/config/jvm.options /opt/es/config
        -v /opt/es/:/usr/share/elasticsearch/config/

2. 基于OS
    a)安装:
        i.下载7.6.2版本:
            wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
        ii.解压:tar -xzf elasticsearch-7.6.2-linux-x86_64.tar.gz
        iii.启动:./bin/elasticsearch
        无法通过root账户启动es服务
        adduser esuser:创建es账号
        passwd esuser:设置es账号的密码
        chown -R esuser {{espath}}:给账户赋予目录权限
    b)配置:参加课堂笔记
3. 引导检查
查看日志:docker logs –f --tail=100 [containerid]
-f:查看实时日志
--tail=100:查看前一百行日志
问题1:error='Cannot allocate memory' 
    原因:ES 5.x+堆内存大小默认配置为2G ES 7.x+默认4G
    解决:-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"

问题2:WARNING: IPv4 forwarding is disabled. Networking will not work.
    解决: vi /etc/sysctl.conf
                net.ipv4.ip_forward=1
                restart network && systemctl restart docker
                sysctl net.ipv4.ip_forward

问题3: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
    解释: 5.0以后,ES使用mmapfs作为默认的文件系统存储类型。可以通过配置index.store.type来设置ES默认的文件系统存储类型。
    Niofs(非阻塞文件系统) mmapfs(内存映射文件系统)
    配置:index.store.type: niofs
    解决:sysctl -w vm.max_map_count=262144
    查看是否生效:
    或:vi /etc/sysctl.conf
            vm.max_map_count=262144
            grep vm.max_map_count /etc/sysctl.conf

问题4:max number of threads [1024] for user [elasticsearch] is too low, increase to at least [2048]
    解决:vi /etc/security/limits.d/90-nproc.conf
        修改如下内容(注意星号):
        * soft nproc 1024 => * soft nproc 4096

        当引导检查报未开启内存锁时,需要修改一下配置:
        vi /etc/security/limits.conf,最后添加以下内容。
        * soft nofile 65536
        * hard nofile 65536
        * soft nproc 32000
        * hard nproc 32000
        * hard memlock unlimited
        * soft memlock unlimited
        vi /etc/systemd/system.conf ,分别修改以下内容。
        DefaultLimitNOFILE=65536
        DefaultLimitNPROC=32000
        DefaultLimitMEMLOCK=infinity
注意 修改操作系统配置需要重启系统才能生效,如果宿主机内存过小,可能导致容器无法启动。开发模式内存建议4G以上,生产建议32G以上.

本文链接地址:http://www.ysxbohui.com/article/275

正文到此结束