zoukankan      html  css  js  c++  java
  • elasticsearch(二) 之 elasticsearch安装

    elasticsearch 安装与配置

    安装java

    elasticsearch 需要 java环境
    使用Java版本1.8.0_131或更高版本 安装受支持的LTS版本java
    并配置好环境变量

    java 8早期的版本在启用 G1GC收集器时会导致索引损坏。所以我们尽量使用Java版本1.8.0_131或更高版本(官网链接)

    cd /tmp && wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm 
    rpm -ivh jdk-8u131-linux-x64.rpm
    环境变量: vi + /etc/profile 
    JAVA_HOME=/usr/java/jdk1.8.0_131 
    CLASSPATH=.:$JAVA_HOME/lib.tools.jar
    PATH=$JAVA_HOME/bin:$PATH 
    export JAVA_HOME CLASSPATH PATH 
    
    加载环境变量
    source /etc/profile
    

    安装elastcsearch

    二进制安装(tar包)

    不要以root去运行

    curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz.sha512
    yum install perl-Digest-SHA # 解决shasum在centos执行不了的问题。
    shasum -a 512 -c elasticsearch-6.3.2.tar.gz.sha512
    tar -xvf elasticsearch-6.3.2.tar.gz
    cd elasticsearch-6.3.2/bin
    

    在启动之前我们必须要考虑到这些设置

    # 启动(默认监听9200端口)
    ./elasticsearch
    # 后台运行
    ./elasticsearch -d 
    #  后台运行并记录pid到文件
    ./elasticsearch -d  -p ./elasticsearch.pid
    # 关闭
    kill  `cat elasticsearch.pid `
    

    当elasticsearch 有异常时会返回一个错误状态码

    错误 状态码
    jvm 内部错误 128
    内存不足 127
    堆栈溢出 126
    未知的虚拟机错误 125
    io 错误 124
    未知的其他错误 1

    在进入生产之前我们必须要考虑到以下设置

    1. 禁用swap
    2. 增加文件描述符
    3. 合适配置的jvm内存
    4. 足够的线程
    5. jvm dns 缓存设置

    怎么才意味着从开发模式到生产模式。
    一但我们配置了network.host ,elasticsearch 就会认为我们将从开发模式转为生产模式
    一些警告可能会升级到异常来阻止我们启动。

    增大打开文件句柄数量

    方法一: 临时修改
    在root的情况下:
    ulimit -n 65536
    
    方法二: 永久修改
    更改配置文件:/etc/security/limits.conf
    在文件末尾前面加入
    Elsearch(启动的用户名)         -       nofile          65536
    
    注意: 如果已经登录了启动用户,需要在更改配置后重新登录下。
    
    方法三: 如果是rpm包安装的,我们可以使用systemd服务来进行配置
    systemctl edit elasticsearch
    更改 
    [Service]
    LimitMEMLOCK=infinity
    
    重新加载配置
    systemctl daemon-reload
    
    

    禁用虚拟内存

    交换分区对性能,对节点的稳定性非常不利,可能导致收集持续数分钟。并且可能导致节点响应缓慢甚至断开与群集的连接,在分布式系统中应该避免。

    方法一:
    
    临时禁用:swapoff –a
    
    用久禁用:您需要编辑/etc/fstab文件并注释掉包含该单词的任何行swap
    
    方法二:
    
    将vm.swappiness 设置为1 
    
    降低了使用交换的概率,正常情况下不应该使用交换,允许系统在紧急情况下使用swap.
    设置:
    
    临时:sysctl  -w vm.swappiness=1  
    
    永久 或者修改配置文件
    
    vim  /etc/sysctl.conf 以 key=values 的方式存储。
    
    
    查看所有的可读变量: sysctl  -a	
    
    方法三:
    
    修改elasticsearch 的配置文件。
    config/elasticsearch.yml  修改为:bootstrap.memory_lock: true
    

    合适配置的jvm内存

    一般在运行elasticsearch 的时候最小需要是内存是1G,少于1G我们会经常启动不了。
    -Xms1g  # 最小值为1G
    -Xmx1g  # 最大值为1G
    对于这个值的设置,官方为了适应不同的java版本,特做了一些适应配置
    -Xms1g   不受版本影响,默认
    8:-Xmx2g   只适应java8版本
    8-:-Xmx2g  适应java8及以上版本
    8-9:-Xmx2g  适应java8-java-9版本
    
    官方文档写到:以往经验得出,
    1. 最大值和最小值设置为一样的值,否则在系统使用的时候会因jvm值变化而导致服务暂停
    2. 过多的内存,会导致用于缓存的内存越多,最终导致回收内存的时间也加长
    3. 设置的内存不要超过物理内存的50%,以保证有足够的内存留给操作系统
    4. 不要将内存设置超过32GB
    

    配置线程数

    elasticsearch 用户需要创建的线程数至少为4096。

    # 临时设置
    ulimit -u 4096
    # 永久设置
    vim /etc/security/limits.d/90-nproc.conf
    user        soft    nproc     4096
    
    修改完即可生效。
    

    max_map_count太小

    vim /etc/sysctl.conf
    
    #增加以下内容:
    vm.max_map_count=262144
    
    #保存退出vim后使sysctl.conf生效:
    sysctl -p
    

    最大文件大小

    这个可以无需设置,基本都可以满足
    centos 7 使用 xfs 文件系统 最大支持单文件8EB (大多数企业都可以满足)
    centos 6 使用 ext4 文件系统 单文件达到16TB

    DNS缓存设置

  • 相关阅读:
    React之改变页面上方图标
    箭头函数参数解构
    h5项目(特别是vue)缓存严重的解决方案,配合nginx
    springboot中配置urlrewrite实现url伪静态强化网站seo
    使用docker创建mongodb
    mac下sourcetree创建git分支和合并分支
    在系统下文件上传报错:The temporary upload location [/tmp/tomcat.xxx/work/Tomcat/localhost/ROOT] is not valid
    解决Mac下SourceTree每次都让输入密码的问题
    快速生成mysql上百万条测试数据
    10年前错过比特币,如今有斯坦福区块链项目pi币,对标btc,手机免费挖矿详细教程。
  • 原文地址:https://www.cnblogs.com/operationhome/p/10075290.html
Copyright © 2011-2022 走看看