Elasticsearch 分布式部署

环境说明

  1. 操作系统 CentOS 7,软件版本 Elasticsearch 7.12.2。

  2. 三台服务器,详情如下:

ip 节点名
192.168.3.100 node-01
192.168.3.101 node-02
192.168.3.102 node-03
  1. 以下步骤如无特殊说明,均为三台服务器上同样执行。

准备工作

创建 Elasticsearch 用户

因为 Elasticsearch 不允许通过 root 用户运行,需要首先创建用于运行 Elasticsearch 的用户。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建用户组 elastic
groupadd elastic
# 创建用户
adduser -g elastic elastic
# 设置密码
passwd elastic
# 赋予 sudo 权限
chmod +w /etc/sudoers
vi /etc/sudoers
# 在打开的文件中添加如下行
elastic ALL=(ALL) ALL
# 修改完成后恢复 /etc/sudoers 文件的原始权限
chmod -w /etc/sudoers

创建 Elasticsearch 相关目录

为了方便管理,可以提前建好 Elasticsearch 相关目录。

1
2
3
4
5
6
# data 目录
mkdir /opt/elastic/data
# logs 目录
mkdir /opt/elastic/logs
# 更改所有者
chown -R elastic:elastic /opt/elastic

防火墙相关

保证端口开放可以访问即可,具体操作可查看各发行版防火墙文档。

安装 Elasticsearch

安装

因为 Elasticsearch 解压即可运行,无需安装,为了方便管理,我们把 Elasticsearch 放到 /opt 目录下。

1
2
3
4
5
6
cd /opt
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.2-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.12.2-linux-x86_64.tar.gz.sha512
tar -xzf elasticsearch-7.12.2-linux-x86_64.tar.gz
chown -R elastic:elastic /opt/elasticsearch-7.12.2

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cd /opt/elasticsearch-7.12.2
vi config/elasticsearch.yml
# Cluster 段
cluster.name: my_elastic_cluster
# Node 段,三台服务器根据自己的节点名字配置
node.name: node-01
# Path 段,配置相关目录,用到准备工作提前建好的目录
path.data: /opt/elastic/data
path.logs: /opt/elastic/logs
# Network 段,三台服务器根据自己的网络进行配置
network.host: 192.168.3.100
# http 协议端口
http.port: 9200
# tcp 端口,可用于节点间交互
transport.tcp.port: 9300
# Discovery 段
discovery.seed_hosts: ["192.168.3.100:9300", "192.168.3.101:9300", "192.168.3.102:9300"]
cluster.initial_master_nodes: ["node-01"]

启动与停止

1
2
3
4
5
6
7
# 切换到 elastic 用户
su elastic
cd /opt/elasticsearch-7.12.2
# 后台运行并将进程 id 保存到 /opt/elasticsearch-7.12.2/pid 文件
./bin/elasticsearch -d -p pid
# 停止
pkill -F pid

启动后,即可访问 http://192.168.3.100:9200 查看运行状态信息。

开启基础用户认证

证书的创建与配置

以下所有操作都是在 elastic 用户下。

192.168.3.100
  1. 创建一个放证书的目录,统一管理。
1
2
cd /opt/elasticsearch-7.12.2
mkdir config/certs
  1. 生成 ca 证书。
1
./bin/elasticsearch-certutil ca --out config/certs/my-elastic-ca.p12
  1. 为本节点生成证书。
1
2
./bin/elasticsearch-certutil cert --ca config/certs/my-elastic-ca.p12 --ip 192.168.3.100 --out config/certs/node-01.p12
# 在接下来的交互中,当设置密码时,留空直接回车
  1. 配置证书,在配置文件 config/elasticsearch.yml 中添加如下配置:
1
2
3
4
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.keystore.path: certs/${node.name}.p12
xpack.security.transport.ssl.truststore.path: certs/${node.name}.p12

${node.name} 变量为当前节点的名称。如果你的证书并没有这样命名,这里修改成实际的证书文件名。

  1. 为其它节点生成证书,该操作会在当前目录下生成一个压缩文件 certificate-bundle.zip
1
2
./bin/elasticsearch-certutil cert --ca config/certs/my-elastic-ca.p12 --multiple
# 在接下来的交互中,当设置密码时,留空直接回车
  1. 解压文件会得到以其它节点名称命名的文件夹,把各个节点的证书放到各个节点服务器上待处理。
1
2
3
unzip certificate-bundle.zip
scp -r node-02 root@192.168.3.101:/
scp -r node-03 root@192.168.3.102:/
192.168.3.101 及 192.168.3.102
  1. 创建一个证书文件目录,参考主节点上操作,并将传送过来的证书文件放在此处。

  2. 配置证书,参考主节点上的证书配置。

为 Elasticsearch 内部用户设置密码

1
./bin/elasticsearch-setup-passwords interactive

服务重启后,再次访问 Elasticsearch 将会弹出用户认证界面。

上次更新 2022-05-11