前言

Elasticsearch 是一个非常值得学习和使用的分布式存储

此次部署将采用 centos6.9

一、初步了解 ES

简谈概念

Elasticsearch 是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。
Elasticsearch 也使用 Java 开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。

运维角度个人理解

Lucene 是一个相当好的开源的搜索框架,但是其原理对于运维比较难于理解,ES 在 Lucene 基础上进行开发,降低了这类搜索引擎的操作难度,
运维需要做的就是部署,简易使用以及了解会有何种问题出现,并预防将会出现的问题。

二、安装 ES 前准备工作

同一系统以及内核版本

[root@web01 ~]# uname -r
2.6.32-696.el6.x86_64
[root@web01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)

提前准备所需 tar 包

1.下载 jdk8
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2.下载新版 ES
http://pub.datahunter.cn/elastic/elasticsearch-6.4.0.tar.gz

安装 jdk

1.创建专属目录
mkdir -p /application/java
将 jdk 的 tar 包传入
2.解压 tar 包
tar -zxvf jdk-8u60-linux-x64.tar.gz
3.简化复杂目录
ln -s /application/java/jdk1.8.0_60/ /application/jdk
4.配置环境变量
vim /etc/profile
在文本的末尾添加如下内容:
JAVA_HOME=/application/jdk
CLASSPATH=JAVAHOME/lib/PATH=PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
5.生效配置内容
source /etc/profile
6.查看安装情况
java -verison
看到此行说明成功:java version “1.8.0_60”
7.有可能出现的问题
bash: ./java: cannot execute binary file
问题原因:系统位数与安装 jdk 不同
uname -m 查看系统位数

三、开始安装 ES

同一目录并解压 tar 包

将下载好的 tar 包放到 /application 下
tar xf elasticsearch-6.4.0.tar.gz
解压完成后删掉原 tar 包

简化目录并直接运行 ES

ln -s /application/elasticsearch-6.4.0  /application/elasticsearch
cd /application/elasticsearch/bin
./elasticsearch

四、运行过程中遇到的问题以及解决办法

问题一:can not run elasticsearch as root

ES 必须使用非 root 用户启动
原因:这是出于系统安全考虑设置的条件。由于 ElasticSearch 可以接收用户输入的脚本并且执行,为了系统安全考虑, 建议创建一个单独的用户用来运行 ElasticSearch
解决方法:
groupadd elsearch #创建ES用户组
useradd elsearch -g elsearch -p elasticsearch #创建ES用户并归于ES用户组
chown -R elsearch:elsearch /application/elasticsearch #赋予其权限
su elsearch #切换账户
cd /application/elasticsearch/bin
./elasticsearch

问题二:ERROR: bootstrap checks failed(此问题解决中囊括多个类似问题,可以一步到位)

分别加大打开文件的最大数目和进程的最大数目
vim /etc/security/limits.conf 添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

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

elasticsearch 用户拥有的内存权限太小,至少需要262144(这里只是需要这些内存权限,但不会都用到,还是要看业务)
vim /etc/sysctl.conf
在最后一行添加如下内容:
vm.max_map_count=655360
执行命令使生效:
sysctl -p

问题四:不能后台运行问题

ES 在执行后会夯住,我们需要将它调整至后台运行,一般采用&实现
ES 较特殊,这里使用 nohup 命令
nohup ..../bin/elasticsearch &

问题五:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000e5330000, 449642496, 0) failed; error='Cannot allocate memory' (errno=12)

ES 内存分配不足
解决办法:
1、进入/application/elasticsearch-6.4.0/config
2、修改jvm.options 的配置 vim jvm.options
3、修改为 -Xms512m
-Xmx512m

问题六:如何设置外网访问

使用 find 搜索 elasticsearch.yml
vim elasticsearch.yml
将原来默认 ip 更换为0.0.0.0
network.host: 0.0.0.0
http.port: 9200
再次启动后即可外网访问

Elasticsearch 部署以及报错解决的更多相关文章

  1. Elasticsearch聚合操作报错解决办法

    1. 当根据一个类型为text的字段idc进行聚合操作时,查询语句如下: { "aggs": { "top_10_states": { "terms& ...

  2. 部署php程序报错解决---TP框架

    1.TP框架中 出现如下错误: 访问网站 http://192.168.0.204/ STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/51620d75af91aa7 ...

  3. Maven-008-Nexus 私服部署发布报错 Failed to deploy artifacts: Failed to transfer file: ... Return code is: 4XX, ReasonPhrase: ... 解决方案

    我在部署构件至 maven nexus 私服时,有时会出现 Failed to deploy artifacts: Failed to transfer file: ... Return code i ...

  4. CentOS 6.5 Maven 编译 Apache Tez 0.8.3 踩坑/报错解决记录

    最近准备学习使用Tez,因此从官网下载了最新的Tez 0.8.3源码,按照安装教程编译使用.平时使用的集群环境是离线的,本打算这一次也进行离线编译,无奈一编译就开始报缺少jar包的错,即使手动下载ja ...

  5. MyEclipse Server view报错解决方法

    MyEclipse Server view报错解决方法 方法/步骤     启动MyEclipse,弹出一个框,报错. ---------------------------------------- ...

  6. 【spring boot】【elasticsearch】spring boot整合elasticsearch,启动报错Caused by: java.lang.IllegalStateException: availableProcessors is already set to [8], rejecting [8

    spring boot整合elasticsearch, 启动报错: Caused by: java.lang.IllegalStateException: availableProcessors ], ...

  7. sphinx :undefined reference to `libiconv' 报错解决办法

    sphinx :undefined reference to `libiconv' 报错解决办法   2013-11-30 21:45:39 安装sphinx时不停报错...郁闷在make时报错,错误 ...

  8. redis运用连接池报错解决

    redis使用连接池报错解决redis使用十几小时就一直报异常 redis.clients.jedis.exceptions.JedisConnectionException: Could not g ...

  9. linux下启动dbca或netmgr类的图形界面报错解决

    linux下启动dbca或netmgr类的图形界面报错解决    Xlib: connection to ":0.0" refused by server Xlib: No pro ...

随机推荐

  1. 数据分析基础之pandas & numpy

    一.jupyter的常用快捷键 - 插入cell: a, b   a是after从后插入  a是before 从前插入 - 删除cell: dd, x 都可以 - 修改cell的模式:m, y - t ...

  2. js获取div基础元素

    1.js获取div元素 clientHeight 获取对象的高度,不计算任何边距.边框.滚动条,但包括该对象的补白. clientLeft 获取 offsetLeft 属性和客户区域的实际左边之间的距 ...

  3. Canvas对画布及文字控制基础API学习

    这次纯API练习,比较简单,但是是为了之后的结合项目打基础的,所以也不能忽视它,下面开始: Canvas的平移.旋转.缩放 这里还是以上次画那个青春痘的DEMO为例[http://www.cnblog ...

  4. 【JOISC2012】fish

    Description 有 \(n\) 条鱼,第 \(i\) 条鱼的长度为 \(L_i\),颜色是 \(C_i\)(\(C_i\) 只能是 'R','G','B'). 你需要从中挑出至少一条鱼,要求挑 ...

  5. getSuperclass与getGenericSuperclass区别

    声明三个类class Person<T, V> {}class Teacher {}class Student extends Person<Student, Teacher> ...

  6. RHEL8 创建本地YUM存储库

    yum 的好处及本地yum的好处不在本文讨论范畴,本文针对rhel8中的新功能yum做简要介绍和配置,在 RHEL 8中分为两个存储库: BaseOS 应用程序流(AppStream) BaseOS中 ...

  7. NativeRenderingPlugin IOS

    https://bitbucket.org/Unity-Technologies/graphicsdemos/src/77f014c12161e5c25d902e2c5697dd0c45ce3e35/ ...

  8. 我对line-height及vertical-align的一点理解

    张鑫旭老师在文章<我对CSS vertical-align的一些理解与认识(一)>中提到: vertical-align:middle属性的表现与否,仅仅与其父标签有关,至于我们通常看到的 ...

  9. python镜像

    国内镜像列表豆瓣: http://pypi.doubanio.com/simple清华: https://pypi.tuna.tsinghua.edu.cn/simple科大: https://mir ...

  10. docker自定义镜像仓库

    创建私有仓库 vim /etc/docker/daemon.json //使用私有仓库运行容器 , 宿主机ip { "insecure-registries" : ["1 ...