如果你只是学习elasticsearch的增、删、改、查等相关操作,那么在windows上安装一个ES就可以了。但是你如果想在你的生产环境中使用Elasticsearch提供的强大的功能,那么还是建议你使用Linux操作系统。
本文以在Ubuntu 2204 server中安装elasticsearch 8.11为例向同学们演示如何在Linux操作系统中安装并配置Elasticsearch.
0.前置条件
0.1 准备三台服务器
可以是物理机也可以是虚拟机,三台服务器安装好ubuntu 2204 server,我的三台服务器都是在虚拟机中,以下是我的相关配置。
IP地址 | 节点 | 服务器配置 |
---|---|---|
192.168.50.5 | node1 | Elasticsearch[master/data] kibana 8C 16G ubuntu2204 |
192.168.50.6 | node2 | Elasticsearch [master/data]8C 8G ubuntu2204 |
192.168.50.7 | node3 | Elasticsearch [master/data] 8C 8G ubuntu2204 |
0.2 配置好系统时区,保证3台服务器的时区一致。
0.3 关闭交换内存
修改/etc/fstab
文件,将/swap.img
那行注释掉,然后重启系统。
0.4.重命名系统主机名分别为node1,node2,node3,node4
hostnamectl set-hostname <node1>
检查自己的配置。
从上图可以看到我的准备好了三台服务器,分别为node1,node2,node3,三台服务器都在CST时区,并且关闭了交换内存。
0.5 修改sshd_config配置,允许root远程登录。
1.安装elasticsearch
在每个节点上执行下面的操作,使用deb包安装的elasticsearch 8.11.
⚠️ 安装elasticsearch需要使用普通用户。安装完成后,会在系统中自动添加一个elasticsearch用户和用户组。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.1-amd64.deb
sudo dpkg -i elasticsearch-8.11.1-amd64.deb
安装非常顺利,由于我们使用的deb包安装,所以安装非常的友好,并且安装完成后可以使用systemctl
来管理我们的elasticsearch,下图是我三个节点安装成功的截图,大家一定要仔细阅读安装完成的信息。
在安装完成输出信息中同学们一定要注意以下几点信息。
- 默认安装启用身份验证和授权,并自动配置了传输层和HTTP层的TLS.
- 为内置超级用户生成了密码。
- 加入节点的命令。
- 为kibana实例生成注册令牌的命令。
- 启动systemctl服务的命令。
按照提示,我们在每个节点执行以下命令重载systemctl守护并将elasticsearch服务加入开机自启。
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
2.配置node1上的elasticsearch
接下来的操作都是一些配置工作,所以这里我直接切换成root用户了。通过前面安装方式安装的elasticsearch配置文件为/etc/elasticsearch/elasticsearch.yml
,接下来我们要经常和这个配置文件打交到。
vim /etc/elasticsearch/elasticsearch.yml
在节点1的elasticsearch配置我们主要修改以下几个配置项。
-
集群名称: cluster.name
cluster.name: es-cluster
集群中的每个节点的集群名称要保持一致。
-
节点名称:node.name: node-1
node.name: node-1
集群中每个节点的节点名称要保持唯一,比如分别为:node-1,node-2,node-3。
-
网络地址:network.host:
network.host: 192.168.50.5
network.host使用本机的IP地址
-
端口号:http.port:
http.port: 9200
这里保持默认的9200即可,也可以自定义这个端口,注意要大于1024小于65535,并且是系统未使用的端口。
-
集群初始化主节点:cluster.initial_master_nodes:
cluster.initial_master_nodes: ["192.168.50.5"]
这里默认使用主机名作为初始化主节点的配置,建议修改成主机IP。
修改好以上5个配置后,保存配置文件,其它的配置,同学们可以通过阅读配置说明自行修改。
3.启动node1上的elasticsearch
前面我们修改了node1上的配置文件,接下来使用下面的命令启动elasticsearch.
systemctl start elasticsearch
如果启动过程没有报错信息,就OK了,也可以使用以下命令查看elasticsearch的状态。
systemctl status elasticsearch
4.使用浏览器查看ES状态
在浏览器地址栏中输入https://<node-1.ip>:9200,就会打开ES的登录界面。
这里的用户名就是elastic,密码就是安装完成时输出信息中给出的密码,如果你不想使用默认密码,也可以使用下面的命令自定义elastic的密码。
/usr/share/elasticsearch/bin/elasticsearch-reset-password -i -u elastic
刷新es的登录页面,使用新的自定义密码就能登录了,登录后会显示ES集群的一些信息。
5.配置node2
node2的配置和node1基本相同,以下是node2的配置,按照前面的方法修改node2的elasticsearch.yml文件并保存退出。
vim /etc/elasticsearch/elasticsearch.yml
node2的配置项
cluster.name: es-cluster
node.name: node-2
network.host: 192.168.50.6
http.port: 9200
cluster.initial_master_nodes: ["192.168.50.6"]
⚠️ 配置完成后一定不要启动ES。
6.将node2加入集群
按照ES官方的方式将node2加入集群。
首先在node1上使用下面的命令生成集群令牌令牌。
/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
然后在node2上使用下面的命令将node2加入集群。
/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token>
就是在node1上生成的那串字符。
/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token eyJ2ZXIiOiI4LjExLjEiLCJhZHIiOlsiMTkyLjE2OC41MC41OjkyMDAiXSwiZmdyIjoiZGE3ZjFiZGY1NWEzMGE0NDViNjQ2ZTc1NDc4YmQ0YmIyNjA2YzUwOGJkYmFmZWRmMDg1OTQ1ODdjOThmOWI2MCIsImtleSI6ImwtS2FVWklCU0ZNc1BNTm5haWRvOklRYlNyM29wU2pLZFA1Rk8za19oTmcifQ==
上图是我操作的截图,通过上面的操作我们已经将节点node2加入到集群了。
这里注意有一段非常重要的输出提示,我复制出来,后面还会用到。
This node will be reconfigured to join an existing cluster, using the enrollment token that you provided.
This operation will overwrite the existing configuration. Specifically:
- Security auto configuration will be removed from elasticsearch.yml
- The [certs] config directory will be removed
- Security auto configuration related secure settings will be removed from the elasticsearch.keystore
Do you want to continue with the reconfiguration process [y/N]y
使用下面的命令启动node2上的Elasticsearch。
systemctl start elasticsearch
如果启动过程没有报错信息,说明node2已经加入到集群了,接下来我们就可以在浏览器中我们可以查看集群的状态了。
7.修改node3的配置
修改node3的配置项并保存,需要修改的配置项如下。
cluster.name: es-cluster
node.name: node-3
network.host: 192.168.50.7
http.port: 9200
#cluster.initial_master_nodes: ["node3"]
discovery.seed_hosts: ["192.168.50.5:9300"]
⚠️ 修改完成后保存退出,但是不要启动ES
8.将node3加入集群
我们可以按照node2加入集群的方法将node3加入集群,但是这里我想尝试使用另外一种方法将节点加入到集群。
在使用elasticsearch-reconfigure-node
命令将node2加入节点时,有一段输出信息。
This node will be reconfigured to join an existing cluster, using the enrollment token that you provided.
This operation will overwrite the existing configuration. Specifically:
- Security auto configuration will be removed from elasticsearch.yml
- The [certs] config directory will be removed
- Security auto configuration related secure settings will be removed from the elasticsearch.keystore
Do you want to continue with the reconfiguration process [y/N]y
上面的提示信息告诉我们命令elasticsearch-reconfigure-node
会自动配置elasticsearch.yml,并删除certs目录中的文件以及elasticsearch.keystore.
其实就是使用node1 certs中的文件覆盖了node2 certs中的文件,node1 的elasticsearch.keystore覆盖了node2的elasticsearch.keystore文件。我们按照这个思路,让node1的相关文件覆盖node3相关文件。
scp /etc/elasticsearch/certs/* root@192.168.50.7:/etc/elasticsearch/certs/
scp /etc/elasticsearch/elasticsearch.keystore root@192.168.50.7:/etc/elasticsearch/
启动elasticsearch
systemctl start elasticsearch
如果没有报错信息,说明node3上的ES启动成功。
通过浏览器查看集群状态,发现node3已经加入了集群。
好了,今天的教程就到此为止,要给儿子做饭了,大家有问题可以留言给我,我看到会给大家回复了。