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 网络设置

相关推荐
小牛马爱写博客12 小时前
ELK 企业级日志分析系统部署与实践
elk·elasticsearch·kibana·logstash
SKYDROID云卓小助手12 小时前
无人设备遥控器之数字图传技术
运维·服务器·单片机·嵌入式硬件·fpga开发
努力努力再努力wz12 小时前
【Linux进阶系列】:线程(上)
java·linux·运维·服务器·数据结构·c++·redis
java 乐山12 小时前
蓝牙网关(备份)
linux·网络·算法
2301_8035545213 小时前
面试后查缺补漏--cmake,makefiles,g++,gcc(自写精华版)
linux·运维·服务器
煤球王子13 小时前
浅学任务调度
linux
1024002413 小时前
ubuntu系统中 jupyter Kernel 频繁崩溃原因
linux·运维·服务器
玥轩_52113 小时前
Git命令速查手册
大数据·git·elasticsearch·gitee·github·命令速查
深圳市恒讯科技13 小时前
使用站群服务器做SEO,如何避免被搜索引擎判定为“站群作弊”?
服务器·搜索引擎·php
LilySesy14 小时前
ABAP+如果在join的时候需要表1的字段某几位等于表2的字段的某几位,需要怎么做?
服务器·前端·数据库·sap·abap·alv