前言

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. Java秒杀实战 (六) 服务级高并发秒杀优化(RabbitMQ+接口优化)

    转自:https://blog.csdn.net/qq_41305266/article/details/81146716 一.思路:减少数据库访问 1.系统初始化,把商品库存数量加载到Redis 2 ...

  2. Nginx安装与配置【转】

    原文:linux之nginx 作者;海燕. 一.nginx Ngix是web服务器,跟apache一样,它可以做动态请求转发.web端负载均衡.反向代理等等: tomcat是应用服务器,当然如果非用逼 ...

  3. Mac下安装Redis及Redis Desktop Manager

    1.简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表 ...

  4. 简单的flask对象

    简单的flask对象 # coding:utf-8 # 导入Flask类 from flask import Flask #Flask类接收一个参数__name__ app = Flask(__nam ...

  5. VUE【二、选项和生命周期】

    vue对象,类似于一个viewModel,是处理页面显示的数据模型的对象 其中会有很多选项,以下为较常用的: 选项 1.data-数据 vue实例会代理其data对象里的所有属性 2.methods- ...

  6. 理解 chroot

    什么是 chroot chroot,即 change root directory (更改 root 目录).在 linux 系统中,系统默认的目录结构都是以 `/`,即是以根 (root) 开始的. ...

  7. mmap:内存映射文件

    介绍 建立一个文件的内存映射将使用操作系统虚拟内存来直接访问文件系统上的数据,而不是使用常规的I/O函数访问数据. 内存映射通常可以提高I/O性能,因为使用内存映射时,不需要对每一个访问都建立一个单独 ...

  8. STM32——CAN总线波特率和位时序详解

    本人用的单片机是STM32F407,其它型号的单片机类似,可做参考! 一.标准CAN协议位时序概念 由于CAN属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间 ...

  9. K8S搭建过程随笔_系统初始化

    组件 Kubernetes 1.14.2 Docker 18.09.6-ce Etcd 3.3.13 Flanneld 0.11.0 基础环境设置 192.168.11.188 k8s-master ...

  10. 01_Redis简述

    一:关系型数据库和非关系型数据库的区别: 1:关系型数据库(SQL):数据和数据之间,表和字段之间,表和表之间是存在关系的: 优点:数据之间有关系,进行数据的增删改查时非常方便的:关系型数据库有事务操 ...