1 个解决方案
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 用户了: