Linux中快速部署Elasticsearch(基础&TLS配置)

Linux快速部署Elasticsearch用于服务对接(基础&TLS配置)

  • [部署 Elasticsearch 服务](#部署 Elasticsearch 服务)
    • [下载 Elasticsearch 服务](#下载 Elasticsearch 服务)
    • [安装 Elasticsearch 服务](#安装 Elasticsearch 服务)
    • 创建用户和组
  • [配置 Elasticsearch 服务](#配置 Elasticsearch 服务)
  • [启动 Elasticsearch 服务](#启动 Elasticsearch 服务)
    • [作为守护进程运行启动 Elasticsearch 服务](#作为守护进程运行启动 Elasticsearch 服务)
    • 可能的错误
    • [关闭 Elasticsearch](#关闭 Elasticsearch)
    • 修改用户密码
  • [连接到 Elasticsearch 服务](#连接到 Elasticsearch 服务)
  • 相关链接

本文目标是部署基础可用的Elasticsearch服务,场景在于时间并不充足的情况下,需要快速部署一套Elasticsearch服务用于开发或者服务器初始化的情况,所以配置或不满足高可用、高安全等,以效率为主,后续使用过程中可以通过进阶配置完善

  • 文章最后也会附加官方文档链接,用于大家进阶配置,学习细节内容

部署 Elasticsearch 服务

下载 Elasticsearch 服务

所有Elasticsearch版本下载页面,选择需要的版本,点击蓝色Download

然后在该页面选择对应的架构,如Linux X86_64

右键复制链接,或者直接点击下载,再上传到服务器

复制地址如:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-9.1.5-linux-x86_64.tar.gz

安装 Elasticsearch 服务

在 Linux 的机器执行wget 复制的地址,下载 Elasticsearch 服务安装文件。或者将前面下载的文件上传到自己的目录,就不用wget,离线环境亦可用上传的方式

bash 复制代码
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-9.1.5-linux-x86_64.tar.gz
tar -xzf elasticsearch-9.1.5-linux-x86_64.tar.gz
cd elasticsearch-9.1.5/

后续elasticsearch-9.1.5此目录称为 $ES_HOME

创建用户和组

创建用户和组并将ES_HOME分配给该用户,因为ES不允许root用户运行,后续都将使用es-user操作

bash 复制代码
sudo groupadd -r es-user
sudo useradd -M -r -g es-user es-user

# 分配目录权限
sudo chown -R es-user:es-user path/to/elasticsearch-9.1.5

# 切换用户
su es-user

配置 Elasticsearch 服务

配置elasticsearch.yml

  • 编辑config/elasticsearch.yml
bash 复制代码
vi config/elasticsearch.yml
  • 取消注释行 #cluster.name: my-application
  • 为 Elasticsearch 实例指定你得集群名
yaml 复制代码
cluster.name: elasticsearch-cluster

在多节点 Elasticsearch 集群中,所有 Elasticsearch 实例都需要具有相同的名称,记住当前配置的,以后会用到

  • 取消注释行 #network.host: 192.168.0.1
  • network改为0.0.0.0使其他主机网络可以访问
yaml 复制代码
network.host: 0.0.0.0

生产环境中,您可能希望使用其他值,例如静态 IP 地址或主机网络接口的引用,可以以后再改,先起来再说💪🏻

  • 取消注释行 #transport.host: 0.0.0.0
  • transport改为0.0.0.0使其他主机网络可以访问
yaml 复制代码
transport.host: 0.0.0.0

管理 TLS(自动)

当您首次启动第一个 Elasticsearch 节点时,它会自动执行以下安全设置,所以按上面操作的新Elasticsearch,无需操作此步,知晓即可

  • 传输层和 HTTP 层生成TLS 证书
  • 将 TLS 配置设置应用于elasticsearch.yml
  • 为 elastic 超级用户设置密码 (目前不用管)
  • 创建用于安全连接 Kibana 和 Elasticsearch 的注册令牌 (目前不用管)

某些情况下,由于节点启动过程检测到该节点已是集群的一部分,或者安全已配置或显式禁用,因此无法自动配置安全。

启动后日志中可以看到以下样子的内容,就表示自动配置成功

启动 Elasticsearch 服务

作为守护进程运行启动 Elasticsearch 服务

bash 复制代码
./bin/elasticsearch -d

日志消息可以在 $ES_HOME/logs/ 目录中找到

可能的错误

如果提示max virtual memory areas vm.max_map_count [65530] is too low,表示系统的内核参数 vm.max_map_count 过低,无法满足应用需求。

临时修改

bash 复制代码
sudo sysctl -w vm.max_map_count=262144

永久修改,编辑配置文件 /etc/sysctl.conf,添加以下行:

bash 复制代码
vm.max_map_count=262144

执行以下命令生效

bash 复制代码
sudo sysctl -p

关闭 Elasticsearch

要关闭 Elasticsearch,直接kill进程即可

bash 复制代码
kill -9 pid

修改用户密码

需要自己配置符合要求的密码

bash 复制代码
./bin/elasticsearch-reset-password -u elastic

随后输入超级用户elastic要设置的密码即可

连接到 Elasticsearch 服务

检查 Elasticsearch 是否正在运行

bash 复制代码
curl --cacert $ES_HOME/config/certs/http_ca.crt
-u elastic:$ELASTIC_PASSWORD https://localhost:9200

--cacert:HTTP 层生成的 http_ca.crt 证书的路径

$ELASTIC_PASSWORD 替换为 elastic 超级用户密码。请确保在调用中使用 https,否则请求将失败

调用将返回类似这样的响应

bash 复制代码
{
  "name" : "Cp8oag6",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
  "version" : {
    "number" : "9.1.5-SNAPSHOT",
    "build_type" : "tar",
    "build_hash" : "f27399d",
    "build_flavor" : "default",
    "build_date" : "2016-03-30T09:51:41.449Z",
    "build_snapshot" : false,
    "lucene_version" : "10.0.0",
    "minimum_wire_compatibility_version" : "1.2.3",
    "minimum_index_compatibility_version" : "1.2.3"
  },
  "tagline" : "You Know, for Search"
}

业务系统按需连接即可

将客户端连接到 Elasticsearch

相关链接

在自托管集群中为原生用户和内置用户设置密码
将新节点加入现有 Elasticsearch 集群
在 Linux 或 MacOS 安装 Elasticsearch
Elasticsearch 集群通信的 TLS 加密
首次启动 Elasticsearch 自动安全设置
在生产环境中运行 Elasticsearch
配置 Elasticsearch 包括jvm配置优化等

为集群安装其他节点,则需要 生成一个注册令牌,并在首次启动 Elasticsearch 时传递它
Elasticsearch 网络设置

相关推荐
小猿姐1 小时前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
七歌杜金房6 小时前
我终于又有了自己的 Linux 电脑
linux·debian·mac
Elasticsearch19 小时前
使用 Elastic Agent Builder 和 Sarvam AI 构建多语言语音 agent
elasticsearch
tntxia1 天前
linux curl命令详解_curl详解
linux
扛枪的书生1 天前
Linux 网络管理器用法速查
linux
顺风尿一寸2 天前
Java Socket 内核之旅:从 SocketChannel.read() 到 tcp_recvmsg 与 epoll 的完整调用链路
linux
XIAOHEZIcode2 天前
Ubuntu 终端美化全栈指南:Bash 到 Kitty 踩坑实录
linux·ubuntu·命令行
唐青枫2 天前
别再只会用 cron:Linux systemd Timer 定时任务实战详解
linux
AlfredZhao4 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
武子康5 天前
调查研究-197 FAISS vs Elasticsearch 全面对比:从向量检索、全文搜索到 RAG 选型指南
人工智能·elasticsearch·agent