文档章节

centos 7( linux )下搭建elasticsearch踩坑记

j
 java_龙
发布于 2018/10/17 14:32
字数 1519
阅读 490
收藏 2

目录

  • 概述

  • 环境准备

  • elasticsearch配置

  • 启动踩坑记
  • 彩蛋

概述

    公司最近在做全文检索的项目,发现elasticsearch踩了不少坑,百度点进去又是坑,在此记录一下自己的踩坑历程。

本文旨在单机版的elasticsearch环境搭建踩坑记录,后续会把整个全文检索涉及到的项目和技术分享出来.

上一篇博文记录了elasticsearch安装方式  ,RPM安装简单,坑点少,但自由度低,本人生产使用的tar包安装方式,本文主要记录tar包踩坑记

如有错误或者更好的方案,欢迎批评指正

环境准备

  1. 全新最小化安装的centos 7.5
  2. elasticsearch 6.4.0

elasticsearch配置

    elasticsearch安装方式 中tar包安装方式配置文件在 /opt/apps/elasticsearch-6.4.0/config/ 下

elasticsearch配置文件主要是 es配置文件elasticsearch.yml 和 es jvm配置文件jvm.options两个

jvm.options

内存大小配置

    jvm.options配置文件首先是内存大小内存,es默认内存大小配置为1G,此配置需要根据实际数据大小进行配置,建议最大分配内存为机器可用内存大小的一半,最大不超过32G,因为es自身有个压缩功能在32G以内会启用,修改此配置项操作如下:

# sudo vim /opt/apps/elasticsearch-6.4.0/config/jvm.options

将以上默认配置项修改为4G,本人机器内存9G,数据大小为1.8G

GC配置

    gc配置如下图: 每行最前面的数字是指jdk的版本,8代表jdk1.8,本人这里使用了默认配置不变

elasticsearch.yml

    elasticsearch.yml配置文件主要包含集群配置,节点配置,数据以及日志路径配置,启动内存配置,网络配置

集群相关配置

# sudo vim /opt/apps/elasticsearch-6.4.0/config/elasticsearch.yml

cluster.name: test-cluster
node.name: node-1

network.host: 172.16.0.1
http.port: 9200

discovery.zen.ping.unicast.hosts: ["172.16.0.100", "172.16.0.101","172.16.0.102"]       
discovery.zen.minimum_master_nodes: 2

配置详解:

cluster.name: es集群的名称
node.name: 当前es节点名称,主要区分集群中哪个节点

network.host:  当前节点(服务器)的IP地址,此项必须配置,否则其他服务器无法访问到es
http.port: es服务的端口,默认就是9200

discovery.zen.ping.unicast.hosts:  集群每个节点的IP地址,同样可以配置可解析的域名,单机环境可以忽略此配置

discovery.zen.minimum_master_nodes: 集群节点存活最少数,建议配置为集群机器数/2+1 ,单机环境可以忽略

路径配置

    为了规避对es打包到其他机器继续使用时把数据和日志也打包进去,建议将数据和日志保存到非es安装目录的其他目录下,

如果改变数据和日志路径需要提前创建好存放目录,本文存放目录如下:

# sudo mkdir -p /data/es/data
# sudo mkdir -p /var/log/es
# sudo vim /opt/apps/elasticsearch-6.4.0/config/elasticsearch.yml

path.data: /data/es/data
path.logs: /var/log/es

配置详解:

path.data: es数据存放路径
path.logs: es日志存放路径

启动踩坑记

    es后台启动命令如下:

# /opt/apps/elasticsearch-6.4.0/bin/elasticsearch -d -p pid

root用户启动失败

    本人使用root用户执行启动命令后,发现没有es进程,开始查看es日志:

# tail -fn 500 /var/log/es/elasticsearch.log

很幸运的看到了错误提示: Caused by: java.lang.RuntimeException: can not run elasticsearch as root

提示的很明显,es不能使用root用户启动,此刻本人的内心在呐喊:"瓦特?",呐喊完毕后,还是要屈服于它,开始创建es启动用户elasticsearch:

# sudo groupadd elasticsearch 
# sudo useradd -g elasticsearch -d /usr/local/elasticsearch -m -n elasticsearch
# su elasticsearch

再次启动将会遇到各种账号权限问题,此时需要给用户elasticsearch分配es的权限:

切换到root账号执行以下命令,需要切换到具有管理员权限的用户下,当然也可以分配用户elasticsearch为管理员以及免密码等配置(具体配置自行百度)

# sudo chown -R elasticsearch:elasticsearch /opt/apps/elasticsearch-6.4.0
# sudo chown -R elasticsearch:elasticsearch /var/log/es
# sudo chown -R elasticsearch:elasticsearch /data/es/data
# sudo chown -R elasticsearch:elasticsearch /usr/local/elasticsearch

权限分配完毕后,切换到elasticsearch用户下继续执行启动命令,查看es日志,就会发现新的错误提示:  max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

此错误意思也很明显es启动进程要求文件描述符最小为65536, 但是目前系统配置的最大为4096,继续填坑

切换到root用户,修改elasticsearch文件描述符,第一列的elasticsearch是指的启动es的用户

#  vim /etc/security/limits.conf

在文件末尾添加:
elasticsearch   hard    nofile  65536
elasticsearch   soft    nofile  65536

切换到用户elasticsearch继续启动,查看es日志会发现新的错误: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

错误的意思是es启动内存权限最低 262144,继续填坑, 切换到root用户,修改配置:

# vim /etc/sysctl.conf

在最后一行添加如下内容:
vm.max_map_count=262144

# sysctl -p
可以查看到如下内容:
vm.max_map_count=262144

ok,切换到elasticsearch用户,继续执行启动命令,查看es日志,就可以如下内容:

以上日志无任何错误,通过浏览器访问: http://172.16.0.1:9200 ,可以看到下图内容:

再次就说明es正式启动完成,可以正常使用了,如果url无法访问需要检查服务器防火墙端口是否已经开放

centos7 防火墙使用的firewall,基于本文开放端口方式为,切换到root用户,执行以下命令:

# firewall-cmd --zone=public --add-port=9200/tcp --permanent
# firewall-cmd --zone=public --add-port=9300/tcp --permanent
# firewall-cmd --reload

彩蛋

    下一篇将写关于es插件安装相关的教程以及踩坑记,欢迎关注和收藏

© 著作权归作者所有

j
粉丝 73
博文 104
码字总数 138429
作品 0
成都
程序员
私信 提问
加载中

评论(4)

MGL_TECH
MGL_TECH

引用来自“晒太阳的小猪”的评论

又是Java,放在Oracle的地里,怕怕

openjdk
晒太阳的小猪
晒太阳的小猪

引用来自“java_龙”的评论

引用来自“晒太阳的小猪”的评论

又是Java,放在Oracle的地里,怕怕
😂 小公司使用,oracle不会入法眼😉

是的,让你升级Java你就傻啦
j
java_龙 博主

引用来自“晒太阳的小猪”的评论

又是Java,放在Oracle的地里,怕怕
😂 小公司使用,oracle不会入法眼😉
晒太阳的小猪
晒太阳的小猪
又是Java,放在Oracle的地里,怕怕
centos 7( linux )下安装elasticsearch教程

目录 概述 环境准备 elaticsearch简介 安装elasticsearch 彩蛋 概述 很久没有写博客了,最近在做全文检索的项目,发现elasticsearch踩了不少坑,百度点进去又是坑,在此记录一下自己的踩坑历程。...

java_龙
2018/10/15
537
0
ElasticSearch2.3.3离线搭建(windows+Linux)

1、ElasticSearch介绍 ElasticSearch 是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch 是用Java开发的,并作为Apache许可条...

AmCoder
2017/05/23
963
3
CentOS7 上搭建多节点 Elasticsearch集群

本文内容脑图如下: 文章共 747字,阅读大约需要 2分钟 ! --- 概 述 最近学 Elasticsearch,既然学之,怎么能没有实际的集群来把玩呢,因此自己必须动手搭一个! 注: 本文首发于 My Perso...

CodeSheep
2018/11/06
86
0
Elasticsearch 基础入门

原文地址:Elasticsearch 基础入门 博客地址:www.extlight.com 一、什么是 ElasticSearch ElasticSearch是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于...

moonlightL
2017/09/27
0
0
如何在 Linux 上安装 Elasticsearch 和 Kibana

获取我们关于安装两者的简化说明。 如果你渴望学习基于开源 Lucene 库的著名开源搜索引擎 Elasticsearch,那么没有比在本地安装它更好的方法了。这个过程在 Elasticsearch 网站中有详细介绍,...

作者: Seth Kenlon
08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为构建社交关系链手淘都做了啥?

作者|王卫(泓冰) 出品|阿里巴巴新零售淘系技术部 01、淘宝社交关系推荐的背景 1、互联网下半场到来:互联网的下半场,人口红利消失,各大平台需要对用户做精细化运营,用户的增长和留存是每一...

阿里云官方博客
25分钟前
4
0
Iaas/Paas/Saas有何区别,一个故事告诉你

云计算有三种服务模式,IaaS,PaaS和SaaS。单从英文全称去理解,他们分别是“基础设施即服务”“平台即服务”和“软件即服务”。 这样翻译过来可不好理解,但是我们可以举个例子。现在我们就以...

JEPaaS云平台
33分钟前
4
0
温度传感器怎么测好坏

  温度传感器也就是负温度系数热敏电阻,温度越高,电阻越小,测量时先看其阻值能不能根据温度的变化而变,再看其变化的阻值是不是在标定的范围之内。   有以下四种方法;   1、若是有...

仙溪
33分钟前
4
0
zk中ZooKeeperServer解析

内部类 ChangeRecord 处理PrepRP和FinalRP之间的信息 static class ChangeRecord { ChangeRecord(long zxid, String path, StatPersisted stat, int childCount, List<ACL> acl) {......

writeademo
43分钟前
3
0
LNMP---安装worrdpress、discuz,域名重定向,用户认证,nginx访问日志

4.34 安装wordpress 4.35 安装discuz 4.36 域名重定向 4.37 用户认证 4.38 nginx访问日志 一、安装wordpress 创建博客: 添加一个博客的虚拟主机 blog.tobe.com.conf 做如下更改 安装博客wor...

tobej
45分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部