Linux快速部署Elasticsearch用于服务对接(基础&TLS配置)
- [部署 Elasticsearch 服务](#部署 Elasticsearch 服务)
-
- [下载 Elasticsearch 服务](#下载 Elasticsearch 服务)
- [安装 Elasticsearch 服务](#安装 Elasticsearch 服务)
- 创建用户和组
- [配置 Elasticsearch 服务](#配置 Elasticsearch 服务)
-
- 配置elasticsearch.yml
- [管理 TLS(自动)](#管理 TLS(自动))
- [启动 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 集群
在 Linux 或 MacOS 安装 Elasticsearch
Elasticsearch 集群通信的 TLS 加密
首次启动 Elasticsearch 自动安全设置
在生产环境中运行 Elasticsearch
配置 Elasticsearch 包括jvm配置优化等
为集群安装其他节点,则需要 生成一个注册令牌,并在首次启动 Elasticsearch 时传递它
Elasticsearch 网络设置