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

相关推荐
我星期八休息3 分钟前
Linux系统编程—库制作与原理
linux·运维·服务器·数据结构·人工智能·python·散列表
William.csj6 分钟前
服务器——交互式 NVIDIA GPU 监控工具
运维·服务器
Elastic 中国社区官方博客21 分钟前
Elasticsearch 下采样方法:最后值采样 vs. 聚合采样
大数据·运维·elasticsearch·搜索引擎·全文检索
一个在高校打杂的27 分钟前
honeypot之opencanary(轻量化蜜罐)
linux·网络安全·网络攻击模型·安全威胁分析·策略模式
大明者省28 分钟前
Ubuntu22.04 宝塔面板与 XFCE 远程桌面端口兼容性分析
运维·服务器·数据库·笔记
s_w.h34 分钟前
【 linux 】认识make和makefile
linux·运维·bash
不怕犯错,就怕不做1 小时前
ARM设备异常断电容易造成数据损坏,硬件如何设计
linux·驱动开发·嵌入式硬件
Harm灬小海1 小时前
【云计算学习之路】学习Centos7系统-Linux软件包管理
linux·运维·服务器·学习·云计算·yum·rpm
189228048611 小时前
NY379固态MT29F32T08GSLBHL8-36QA:B
大数据·服务器·人工智能·科技·缓存
caicai_xiaobai1 小时前
Ubuntu上Git安装步骤
linux·git·ubuntu