linux(centos7) 中如何安装 Elasticsearch

linux(centos7) 中如何安装 Elasticsearch ?

1 个解决方案

AllenJiang
中间件研发,关注微信公众号 : 小哈学Java, 回复"666", 即可免费领取10G学习&面试资料

1. 首页你需要下载 tar.gz 包,可以去官网下载:

https://www.elastic.co/downloads/elasticsearch

我这里以 Elasticsearch 5.5.2 为例,获取到下载地址后,通过 wget 下载到指定目录:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz

2. 解压

tar -zxvf elasticsearch-5.5.2.tar.gz

3. 进入解压后文件目录,修改 config/elasticsearch.yml

vim config/elasticsearch.yml

添加相关配置:

cluster.name: test
node.name: master
network.host: 127.0.0.1

配置说明:

  • cluster.name: 集群名称
  • node.name: 节点名称,这里定义为 master 主节点
  • network.host:访问的 host

3. 进入解压后文件目录,启动

sh ./bin/elasticsearch

当你看到 started 输出时,表明启动成功.

elasticsearch 集群安装请参考后面连接:http://www.exception.site/question/10

Note: 你可能遇到的错误如下:


1. 内存不足:

    Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
    #
    # There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.
    # An error report file with more information is saved as:
    # /packages/elasticsearch-5.5.2/hs_err_pid25799.log

我的机器是 2G 内存,而 elasticsearch 5.5.2 默认分配的内存是 2G,显然不够分配的,我们需要修改其初始分配的内存:

修改 elasticsearch jvm.options 文件:

vim config/jvm.options

2.can not run elasticsearch as root

不能通过 root 用户来启动 elasticsearch, 我们需要新建一个用户, 这里我添加一个名为 es 的用户

[root@iZbp1j8y1bab0djl9gdp33Z ~]# useradd es

然后,切换到 es 用户,再启动:

[root@iZbp1j8y1bab0djl9gdp33Z ~]# su es

3. 权限不足的问题

    Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
            at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
            at java.lang.SecurityManager.checkPermission(SecurityManager.java:585)
            at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.checkMBeanTrustPermission(DefaultMBeanServerInterceptor.java:1848)
            at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:322)
            at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
            at org.apache.logging.log4j.core.jmx.Server.register(Server.java:389)
            at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:167)
            at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:140)
            at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:556)
            at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:261)
            at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:206)
            at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:221)
            at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:197)
            at org.elasticsearch.common.logging.LogConfigurator.configureStatusLogger(LogConfigurator.java:175)
            at org.elasticsearch.common.logging.LogConfigurator.configureWithoutConfig(LogConfigurator.java:99)
            at org.elasticsearch.cli.Command.main(Command.java:85)
            at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
            at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)
    
    Exception in thread "main" SettingsException[Failed to load settings from /packages/elasticsearch-5.5.2/config/elasticsearch.yml]; nested: AccessDeniedException[/packages/elasticsearch-5.5.2/config/elasticsearch.yml];
            at org.elasticsearch.node.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:102)
            at org.elasticsearch.cli.EnvironmentAwareCommand.createEnv(EnvironmentAwareCommand.java:72)
            at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67)
            at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
            at org.elasticsearch.cli.Command.main(Command.java:88)
            at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
            at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)
    Caused by: java.nio.file.AccessDeniedException: /packages/elasticsearch-5.5.2/config/elasticsearch.yml
            at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
            at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
            at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
            at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
            at java.nio.file.Files.newByteChannel(Files.java:361)
            at java.nio.file.Files.newByteChannel(Files.java:407)
            at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
            at java.nio.file.Files.newInputStream(Files.java:152)
            at org.elasticsearch.common.settings.Settings$Builder.loadFromPath(Settings.java:1033)
            at org.elasticsearch.node.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:100)
            ... 6 more

我们需要更改解压后的 elasticsearch 文件夹的所有者为我们刚刚创建的新用户, 切换到 root 用户后,执行:

chown -R es:es elasticsearch-5.5.2

Note: es 是我新创建的用户名

可以看到 elasticsearch 文件夹的所有者已经更改为了新创建的 es 用户了: