elasticsearch2.1部署

Ubuntu下Elasticsearch 2.1集群部署过程与遇到的问题及解决方法(开机自启动、root用户启动)

SEO:ES 2.0 2.1 Elastic Elasticsearch Linux Ubuntu root start stop 开机启动 开机自启动  安装 部署 使用 脑裂 无法 不能 发现 集群 节点

 (本文适合有一定Linux基础的读者阅读。由于几乎是按流水账过程记录,而不是教程,建议操作之前读完一遍)

 

本人在部署ES2.1集群时,遇到了诸多问题,花了很大功夫,才解决,特在此记录解决过程及方法,希望帮到有需要的人。

据使用者的讨论,ES在2.0版本之后发生了很大变化,因此网上的一些资料已经不再适用,在查阅资料时需要根据版本判断,灵活变通方法。

 

操作系统:Ubuntu 14.04.1 64位

jdk:1.8.0_20 64位

Elasticsearch 2.1

 

ES部署步骤:
(1)下载目前(2015年12月18日)最新版的ES 2.1的tar.gz包,解压,放至wsn用户目录,修改config\elasticsearch.yml配置文件,添加(或对已有的但被注释掉的语句,取消注释并修改)以下语句:

cluster.name: groupname(设定的集群名称)
node.name: node_10.10.2.145(设定的当前节点名称)
network.host: 10.10.2.145(可以理解为监听/绑定的IP,本人设置为本机在局域网中的IP,尝试过如果设置127.0.0.1,之后在本机可以访问ES但在局域网中不能访问)
index.number_of_shards: 9(分片数量)
http.max_content_length: 2000mb(使用中发现,如果使用默认值,使用curl post插入300M以上的txt时会报错)
http.compression: true

【注意】每行语句前不能有空格,冒号后必须有一个空格,否则可能启动报错

【注意】可使用 bin/elasticsearch 启动,此时不是服务形式。root用户不能以此方式启动,否则会报错
其中node.name network.host需要根据每台机器的IP等修改(本人是在一台服务器部署好之后将该服务器复制为3台,复制后需要根据机器修改部分配置)

(2)(也可以不进行此步骤,详见下)将elasticsearch添加入系统服务service
/etc/init.d/ 下建立软连接,操作步骤为:

使用cd命令进入/etc/init.d/ ,然后

ln -s /home/wsn/wshare/es/elasticsearch-2.1.0/bin/elasticsearch elasticsearch
sudo update-rc.d elasticsearch defaults 95 10 //按照官方说法,这是适用于Ubuntu的方法,猜测为加入服务,参考Running as a Service on Linux https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-service.html#using-systemd

加入服务后,经过测试,仍然无法使用start stop等命令,报错(如下图):

需使用service elasticsearch 启动服务,与直接使用bin/elasticsearch效果相同。

因此,本人决定不使用将其加入服务的方法(加入服务除了启动时输命令方便,别的好像没什么卵用),采用手动配置启动脚本与开机自启动方式,因此加入服务部分的操作(2)可不进行。

(3)配置开机自启动

【2016-5-26更新:发现root用户也可以启动ElasticSearch,方法是在启动时添加Des.insecure.allow.root参数,如下:

bin/elasticsearch -Des.insecure.allow.root=true(参考 How to run Elasticsearch 2.1.1 as root user in Linux machine - Stack Overflow http://stackoverflow.com/questions/34920801/how-to-run-elasticsearch-2-1-1-as-root-user-in-linux-machine)】

本人使用的Ubuntu中,语句放入/etc/init.d/rc.local文件中,即可在开机时运行。
/etc/init.d/rc.local 文件,最后一行后加入:

sh /home/wsn/wshare/auto_start.sh

便能够开机启动auto_start.sh

在/home/wsn/wshare/auto_start.sh中写入:

sh /home/wsn/wshare/es/elasticsearch-2.1.0/start_es.sh

便能够开机时执行start_es.sh。

 

start_es.sh是启动Elasticsearch并后台运行的脚本,内容为:

su -c “/home/wsn/wshare/es/elasticsearch-2.1.0/bin/elasticsearch &” – wsn
# ↑ 临时切换为wsn用户执行-c后的命令,执行后切换为原用户

(wsn用户是Ubuntu系统中建立的另一个用户)

即临时切换为wsn用户并执行”-c”后的命令语句,因此root用户可使用此脚本启动ES(注意第一行后可能需要添加空格,否则有报错)。

通过以上操作,部署ES和开机自启动便完成了。同时,root用户也可使用如上的start_es.sh脚本启动ES,一定程度地避免了root不能直接启动ES带来的不便。

 

停止ES使用查找进程并kill的方法(ps -ef|grep elastic),尚未找到更好的方法。但使用kill进程方法停止时,ES能感知到并写入ES关闭的日志,因此推测kill进程时ES可以正常退出而非被强制结束。

(4)其它注意事项
①期间遇到的问题:开机启动无法成功,并且看不到脚本执行过程的输出,因此将输出重定向到/tmp/debug3.log(tmp目录下不易产生权限问题),即/etc/init.d/rc.local中加入的语句改为

sh /home/wsn/wshare/auto_start.sh < /tmp/debug3.log

之后,如果开机时执行上述命令有报错,便可以在/tmp/debug3.log文件中看到运行过程的输出。

 

②另外,jdk配置需要位于/etc/profile文件中,对所有用户都生效。配置方法为,在/etc/profile文件末尾添加

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_20
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

(具体的JAVA_HOME路径需要按实际情况填写)

如果配置jdk的方法是将上述语句添加到针对某个用户的~/.bashrc(使用vim ~/.bashrc编辑添加),则ES无法开机启动,错误为启动时没有JAVA环境变量。

 

③ES启动时有关于log4j的日志文件权限报错,因此将logs文件夹及其子目录权限设置为777(chmod -R 777 logs 针对所有人都可读可写可执行,是个懒方法),启动时不再有报错。

 

④一定程度地防止脑裂(无法发现部分节点)问题,因此ES配置文件中加入:

discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 10s

即最少需要2个节点才会选举master节点(即产生集群)。在配置文件的注释中看到官方的建议是,数字设置为【节点个数/2+1】,向上取整,本人的是3个节点,因此设置为2;

发现集群的超时时间为10s。

配置启用多播discovery.zen.ping.multicast.enabled: true,但无效,无法发现节点,因此使用单播,添加配置

discovery.zen.ping.unicast.hosts: [“10.10.2.143″, “10.10.2.144”, “10.10.2.145”, “10.10.2.10”]

如此配置之后,该节点便会访问列表中的几个IP,找到这几个IP的机器中的节点,组成集群。

(后查证为ES2.0之后版本已删除了多播功能,如果使用需要安装multicast插件)

 

本人使用ES也是新手,只是总结了一些自己的经验,文中如有错误、不准确、遗漏之处,希望各位不吝赐教指出,或者解答本人遇到的一些疑虑,以及共同讨论探讨,谢谢! 

 

转载时请注明出处:

Ubuntu下Elasticsearch 2.1集群部署过程与遇到的问题及解决方法(开机自启动、root用户启动) - 张冬 - 博客园

时间: 2024-10-06 13:22:07

elasticsearch2.1部署的相关文章

ElasticSearch-2.0.0集群安装配置与API使用实践

ElasticSearch是基于全文搜索引擎库Lucene构建的分布式搜索引擎,我们可以直接使用ElasticSearch实现分布式搜索系统的搭建与使用,都知道,Lucene只是一个搜索框架,它提供了搜索引擎操作的基本API,如果要实现一个能够使用的搜索引擎系统,还需要自己基于Lucene的API去实现,工作量很大,而且还需要很好地掌握Lucene的底层实现原理. ElasticSearch是一个完整的分布式搜索引擎系统,它的一些基本特性包括如下: 全文检索 提供插件机制,可以共享重用插件的功能

tomcat 和 jboss的热部署(热发布)问题

所谓的热部署(热发布)(下面称为"热部署"),就是说,在web工程发布之后,不可避免的,会遇到修改BUG的问题.现在的热部署就是为了解决这个问题,其功能就是说:在不停止web服务的同时,对jsp和java类进行修改,修改后的效果同时还能够在页面上显示出来.节省了调试时间,提高了效率.不过,修改配置文件是个例外,如果对配置文件做修改,一定要重启web服务.         常用的web服务器一般为tomcat和jboss,现一一做介绍.         1.tomcat热部署      

高速通道部署实践:跨地域云上私网互通

随着企业的扩张,如何快速构建一个适应业务需求的跨地域云上私有网络(VPC),是许多IT管理者关系非常关心的问题.跨地域连接必须做到安全.高速和稳定可靠,这样才能充分保证业务连续和数据安全.阿里云网络产品高速通道可以实现不同地域的VPC间私网通信,既可以解决绕行公网带来的网络质量不稳定问题,又可以避免数据在传输过程中被窃取的风险.VPC间带宽可以达到10Gbps甚至更高,保证海量数据实时传输. 连接稳定可靠 高性能有保障 数据传输安全 今天,我给大家介绍一下如何通过高速通道来实现跨地域VPC网络互

学习tomcat之tomcat单机多实例部署

想要获得更多的文章,可以关注我的微信ilanniweb 为了有效的利用服务器的资源,我们现在需要在一台服务器上部署多个tomcat,这也就是我们经常所说的tomcat单机多实例部署. PS:本次实验的测试OS为centos6.5 64bit. 一.配置JAVA_HOME路径 要配置JAVA_HOME路径,我们就要首先安装jdk.jdk的安装在此我们使用的是yum方式,没有使用源码方式安装. 1.1 yum安装jdk jdk我们现在是使用的yum方式进行安装的,首先我们先来查看能够安装的jdk版本

微软拒透IE11部署计划

在最近不断曝光的Windows 8.1更新中大部分的焦点都在开始按钮上微软对于IE 11缄口不言,那么我们不经产生一个疑问:Windows 7系统上的IE浏览器是否将止步至版本10?为此外媒不断向微软探听,微软表示不会的在Windows 8.1更新之前谈论IE 11.微软发言人表示:"目前我们不会向外界透露任何关于IE 11的部署计划."       通常微软在发布新的浏览器版本的时候会考虑到大部分消费者的需求进而对新产品的兼容性进行考虑,不过最近发布的IE 10显然已经不再支持Win

tomcat-为什么我的myeclipse2014使用自己配置的Tomcat时,无法部署项目

问题描述 为什么我的myeclipse2014使用自己配置的Tomcat时,无法部署项目 配置文件和错误信息如上,尝试百度的好多方法,都得不到解决,谁能帮我看看,谢谢啦. 解决方案 感谢大家,我找到问题了,myeclipse2014配置自己安装的tomcat要把tomcat安装在某盘(我安装在C盘)根目录,如:C:Tomcat 7.0.以前安装在默认路径下,老出错.现在好啦,如果还有其他朋友遇到这个问题,就试试重新安装tomcat到根目录吧. 解决方案二: tomcat中无法部署myeclips

WebSphere反向投资者: 用于加速应用程序部署的选项

在每篇专栏文章中,"WebSphere 反向投资者"将回答问题.提供指导和讨论与 WebSphere 产品相关的基础主题,经常会给出与流行的看法相悖的经过实践验证的建议. 送给您的礼物 又到假日了,这意味着每个人都在忙着完成当年的项目.购物,以及各种各样的传统年终任务.所有这些活动可能意味着您会欢迎任何节省时间的技巧,因为您可能有太多的事情需要处理,但是却只有太少的时间去全部完成.为了尽自己的一份力量帮助您提高效率,我将在本月的专栏中花些时间提供一些用于加速 IBM WebSphere

xml-关于jboss项目部署的问题

问题描述 关于jboss项目部署的问题 Errors occurred during the build.Errors running builder 'Integrated External Tool Builder' on project 'koyoo-MySQL'.Launch configuration type id ""org.maven.ide.eclipse.Maven2BuilderConfigurationType"" does not exis

Microsoft Deployment Toolkit 2010之快速部署Windows

最近MS出的东西可真多.什么都是2010了..哈哈.. MDT2008,以前本菜菜给大家介绍过,如何去部署Winxp,不过只是肤浅的.MDT2010 Beta也出来了- 跟我继续去瞧瞧- 写了些,没什么技术含量的东西.高手,还是别笑话了.. Quick Start Guide for Lite Touch Installation 我比较懒,省略了很多--嘿嘿! 环境很简单.1台win2008:dc+dhcp+dns+mdt2010+waik 看图操作就OK!! MDT2010新增加些什么呢?