Centos安装Elasticsearch教程

网上相关的安装教程有很多,基本是官网下载、解压、启动完事了,本文主要记录个人在实际安装过程终于到的问题,如果你刚好也刷到了这篇文档,希望对你有所帮助。

		操作系统版本:Centos7
		Elasticsearch版本:7.9.3

为了方便启动,这里我添加了启动脚本start-elasticsearch.sh,将启动日志输出到指定的日志文件中,内容如下:

#!/bin/bash
cd /opt/software/elasticsearch/elasticsearch-7.9.3/bin
nohup ./elasticsearch>/opt/software/elasticsearch/logs/start-elasticsearch.log 2>&1 &
问题1:can not run elasticsearch as root

执行脚本后,日志文件输出了错误提示:

[2024-11-14T14:45:03,392][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

这意思很明显了,不能使用root账户启动,ok,那我们通过如下添加子用户并给其赋予权限:

adduser elasticsearch

passwd elasticsearch

密码:rootes

chown -R elasticsearch /opt/software/elasticsearch/
问题2:提示日志文件目录不存在

切换到子账户继续启动后提示日志目录不存在,这个比较好解决。通过mkdir 创建即可。修改后我们继续尝试启动,结果日志文件里仍然存在错误提示。

问题3:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]]

文件描述符是操作系统用来追踪打开文件和网络连接的资源。Elasticsearch 作为一个需要处理大量文件和网络连接的服务,对文件描述符的需求可能会非常高,我们通过如下命令增加文件描述符的限制。

vim /etc/security/limits.conf
# 在文件的最后加上两行,关闭保存文件重启ES
elasticsearch soft nofile 65535
elasticsearch hard nofile 65535
问题4: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

错误信息提示你的系统虚拟内存区域的最大数量(vm.max_map_count)设置过低,这可能会影响 Elasticsearch 的性能,因为它需要创建大量的内存映射来存储其数据。vm.max_map_count 参数限制了进程可以拥有的虚拟内存区域(VMA)的数量,这包括内存映射文件和其他类型的VMA。
我们通过如下命令进行修改:

vim /etc/sysctl.conf
# 在文件最后添加一行
vm.max_map_count = 262144
# 应用该配置
sysctl -p
# 验证配置是否生效
sysctl vm.max_map_count
# 这里会输出262144
问题5:the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

这个错误信息是 Elasticsearch 在启动时的一个警告,提示你当前的发现设置不适合生产环境使用。在生产环境中,你需要配置集群发现设置,以确保 Elasticsearch 节点能够相互发现并形成集群。以下是一些关键的配置项,你需要至少配置其中之一:

  1. discovery.seed_hosts:这是一个列表,包含用于发现的初始节点的地址。这些节点将被用来启动集群发现过程。
  2. discovery.seed_providers:这是一个列表,包含用于发现的种子提供者。种子提供者可以是云服务提供商,如AWS、GCE 或 Azure。
  3. cluster.initial_master_nodes:这是一个列表,包含初始的主节点(master-eligiblenodes)的地址。这些节点将被选举为集群的初始主节点。
    我这里只是单机测试,所以将配置文件精简如下:
# 节点名称
node.name: node-1

# 集群名称
cluster.name: my-application

# 禁用自动发现
discovery.type: single-node

# 单节点发现设置
discovery.seed_hosts: ["localhost", "127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]

# HTTP 端口
http.port: 9200

# 绑定到所有接口
network.host: 0.0.0.0

# 禁用跨集群请求
cluster.remote.connect: false

修改后再执行启动脚本,日志没有错误提示了,这时打开浏览器,输入对应ip:9200,会看到如下信息

{
  "name": "node-1",
  "cluster_name": "my-application",
  "cluster_uuid": "lKSKlOoQT0SHUVv0Lnfv0g",
  "version": {
    "number": "7.9.3",
    "build_flavor": "default",
    "build_type": "tar",
    "build_hash": "c4138e51121ef06a6404866cddc601906fe5c868",
    "build_date": "2020-10-16T10:36:16.141335Z",
    "build_snapshot": false,
    "lucene_version": "8.6.2",
    "minimum_wire_compatibility_version": "6.8.0",
    "minimum_index_compatibility_version": "6.0.0-beta1"
  },
  "tagline": "You Know, for Search"
}
posted @ 2024-11-14 15:34  河岸飞流  阅读(39)  评论(0编辑  收藏  举报

那片笑声让我想起我的那些花儿
在我生命每个角落静静为我开着
我曾以为我会永远守在她身旁
今天我们已经离去在人海茫茫
她们都老了吧 她们在哪里呀
幸运的是我曾陪她们开放