在Linux上启动服务

为了在Linux上启动ES服务,官方提供的包尽可能让你在升级或重启集群的时候轻松地启停集群。

目前我们有构建debian和rpm两种安装包,都可以在下载页获取。包本身没有依赖,但是你必须确认你安装了JDK。

每个包都有个配置文件,它允许你设置如下配置参数:

参数

说明

ES_USER

启动ES使用的用户,默认是elasticsearch

ES_GROUP

启动ES使用的用户的群组,默认是elasticsearch

ES_HEAP_SIZE

启动时堆内存大小

ES_HEAP_NEWSIZE

年轻带大小

ES_DIRECT_SIZE

直接内存大小

MAX_OPEN_FILES

最大文件打开数,默认是 65535

MAX_LOCKED_MEMORY

最大的锁内存大小。如果你配置了bootstrap.mlockall选项,把它设置为unlimited。而且必须设置ES_HEAP_SIZE

MAX_MAP_COUNT

最大虚拟地址映射空间。如果你使用mmapfs作为索引存储类型,确保这个值设置的高一点。更多信息请看这里 linux kernel documentation的max_map_count项,启动elasticsearch之前通过 sysctl 设置,默认是65535

LOG_DIR

日志目录,默认是 /var/log/elasticsearch

DATA_DIR

数据目录,默认是 /var/lib/elasticsearch

CONF_DIR

配置文件目录(目录中必须包含elasticsearch.yml 和logging.yml 文件),默认是 /etc/elasticsearch

ES_JAVA_OPTS

所有的JAVA启动参数都可以设置。当你需要修改node.name属性,但不想修改elasticsearch.yml配置文件的时候这一点十分有用,因为它是通过类似 puppet 或chef等配置管理工具分发到系统中的。例如:ES_JAVA_OPTS="-Des.node.name=search-01"

RESTART_ON_UPGRADE

配置Elasticsearch是否在包升级时重启。默认被配置为false,这意味着你需要在安装新包或者升级包时手动重启。这样做的目的是确保集群升级的时候不会因为索引分片分配导致网络延迟,会降低集群响应时间

ES_GC_LOG_FILE

GC日志的绝对路径,通过JVM配置,注意GC日志可能涨得很快随意默认是禁止的。

Debian/Ubuntu

Debian软件包有你需要的一切,它使用标准的debian工具,类似改变update-rc.d来改变服务运行级别一样。初始化脚本如你预期,放在/etc/init.d/elasticsearch下,配置文件放在/etc/default/elasticsearch下。

debian安装包安装后默认不会启动服务,目的是防止实例在配置不当的情况下意外的加入集群。使用dpkg -i安装后确保Elasticsearch能开机自启,并启动Elasticsearch。

sudo update-rc.d elasticsearch defaults 95 10

sudo /etc/init.d/elasticsearch start

使用Debian 8或Ubuntu 14以上版本的用户需要使用systemd代替update-rc.d。这些情况下,请参考使用Systemd章节

安装Oracle JDK

通常建议大家在使用Oracle JDK安装Elasticsearch。然而Ubuntu和Debian因为许可证的问题只提供Oracle JDK。你可以很轻松的安装oracle的安装包。以防你在Debian系统下漏加了add-apt-repository命令,确认至少要有Debian的 Jessie源并且安装了python-software-properties包:

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java8-installer

java -version

最后一条命令验证你的oracle JDK是否成功安装。

基于RPM包的安装

使用chkconfig

有些基于RPM包安装的发行版需要chkconfig启用禁用服务。初始化脚本在/etc/init.d/elasticsearch,配置文件放在/etc/sysconfig/elasticsearch。类似debian的安装包,RPM包默认安装后是不启动的。你需要手动输入如下命令:

sudo /sbin/chkconfig --add elasticsearch

sudo service elasticsearch start

使用systemd

有些发行版类似Debian Jeessie(译者批注:Jessie系列就是Debian 8),Ubuntu 14还有一些SUSE的衍生版本不使用chkconfig注册服务,而是使用systemd,命令是/bin/systemctl,,来启停服务(至少是新版本,否则使用chkconfig)。基于RPM安装的配置文件也是放在/etc/sysconfig/elasticsearch下,如果是deb包的话在/etc/default/elasticsearch中。安装好RPM包后,你需要修改systemd的配置并启动elasticsearch。

sudo /bin/systemctl daemon-reload

sudo /bin/systemctl enable elasticsearch.service

sudo /bin/systemctl start elasticsearch.service

注意在 /etc/sysconfig/elasticsearch 中修改MAX_MAP_COUNT并不起作用,你需要在/usr/lib/sysctl.d/elasticsearch.conf配置文件中修改,确保启动生效。