你还为集群部署ES发愁吗?

523 阅读5分钟

ES集群部署 8.4.3

手把手教你部署ES集群,拒绝踩坑!

零、准备工作

准备至少三个节点,配置至少为4核心8G内存

节点名称节点IP
node1192.168.0.1
node2192.168.0.2
node3192.168.0.3

关闭三个节点的防火墙

#必须关闭防火墙,否则无法正常启动集群
#三个节点分别执行以下命令
systemctl stop firewalld

一、修改操作系统配置

​ 1、添加ES用户 es不允许root启动

#添加用户 es
useradd es
#设置es密码  密码为:elasticsearch
passwd es

2、创建安装目录并授权

#创建目录
mkdir /app/elasticsearch
#授权
chown -R es:es elasticsearch/

3、修改操作系统配置

#-------修改es用户最大文件描述符------------
vim /etc/security/limits.conf 
#插入以下配置
es soft nofile 65536
es hard nofile 65536
#----------保存并退出----------------

#----------修改最大虚拟内存-------------------
vim /etc/sysctl.conf
#追加以下配置并保存
vm.max_map_count=655360
#执行如下命令
sysctl -p
# 显示 vm.max_map_count = 655360 就OK了

二、ES集群配置

​ 注意:请严格按照安装顺序来,否则都是坑

以下步骤都在用户es下进行。切换用户为:es

#切换用户
su es

1、安装包准备

  • 将elasticsearch-8.4.3-linux-x86_64.tar.gz 分别拷贝到三个节点

2、配置 node-1

  • 解压安装包:tar -zxvf xxxx.gar.gz

  • 配置 elasticsearch.yml 【关键】

cd /app/elasicsearch/elasticsearch-8.4.3/config
vim  elasticsearch.yml
# 只配置以下选项,其他不能动,因为es会自行配置,我们只配置基础必须的项。否则各种坑。
#集群名称:自定义,三个节点都必须配置为相同
cluster.name: udss-es
#该节点名称:唯一不重复
node.name: node-1
#该节点对外能提供访问的IP,如果填写ip不能被访问,则集群无法加入。
network.host: 10.248.190.176

#只配置以上三个项目,其他别动
  • 配置jvm.options文件

    vim jvm.options
    #将内存最大最小配置为4G 其他不动
    -Xms4g
    -Xmx4g
    

3、启动node-1,记录日志

#启动该节点并记录启动日志
cd /app/elasicsearch/elasticsearch-8.4.3
#启动es节点,第一次启动不能后台启动
bin/elasticsearch
#正常启动,关注如下日志:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ Elasticsearch security features have been automatically configured!
✅ Authentication is enabled and cluster connections are encrypted.
#生成默认用户:elastic   密码:Z8Scc-c0KGoJV3QPg++S
ℹ️  Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
  Z8Scc-c0KGoJV3QPg++S

ℹ️  HTTP CA certificate SHA-256 fingerprint:
  d673d6c209a69753a82ded21ccb7791aa667761619a865ca58929f3f2edb7f14
#生成kibana链接es的token,有效时间:30分钟  如果失效,往下看第五步
ℹ️  Configure Kibana to use this cluster:
• Run Kibana and click the configuration link in the terminal when Kibana starts.
• Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjQuMyIsImFkciI6WyIxMC4yNDguMTkwLjE3Njo5MjAwIl0sImZnciI6ImQ2NzNkNmMyMDlhNjk3NTNhODJkZWQyMWNjYjc3OTFhYTY2Nzc2MTYxOWE4NjVjYTU4OTI5ZjNmMmVkYjdmMTQiLCJrZXkiOiI4czY0UFlRQkEyYkIza3RQYnJ3Mjp0amx1ZzNaVFNHS2dPbURScW5wVXpRIn0=
#生成es其他节点加入该集群的token,有效时间:30分钟  如果失效,往下看第五步
ℹ️ Configure other nodes to join this cluster:
• Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token <token>` (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjQuMyIsImFkciI6WyIxMC4yNDguMTkwLjE3Njo5MjAwIl0sImZnciI6ImQ2NzNkNmMyMDlhNjk3NTNhODJkZWQyMWNjYjc3OTFhYTY2Nzc2MTYxOWE4NjVjYTU4OTI5ZjNmMmVkYjdmMTQiLCJrZXkiOiI5TTY0UFlRQkEyYkIza3RQYnJ3NDp6VTByVFp3bVR3S1R4MUk5TzRNVS1nIn0=

  If you're running in Docker, copy the enrollment token and run:
  `docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.4.3`
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#启动后,ES会自动配置集群配置、安全配置,并追加到elasticsearch.yml文件中
#ssl证书等配置,生成到config/certs目录中。
#后续节点加入集群,会自动同步该节点的配置,不要人工手动配置。
#记录日之后,kill进程,重启该节点,后台启动:bin/elasticsearch -d

4、启动node-2

  • 配置node-2

    基础配置与配置node-1相同【不要启动】

    注意使用用户:es 非root

    解压安装包,配置elasticsearch.yml与jvm.options

    不要把ip与节点名称配置重复了。

    其余不要动

  • 启动node-2

    #node2启动与node1不同,node2启动通过node-1提供的token直接加入集群,同步node-1的所有默认配置。
    cd /app/elasicsearch/elasticsearch-8.4.3
    #第一次启动node-2 es节点,后台启动
    bin/elasticsearch -d --enrollment-token 复制日志中的node-token
    #启动成功后,es自动配置elasticsearch.yml中集群以及安全等,不要去改动配置。
    #如果后续关闭节点重启,则使用以下命令:
    bin/elasticsearch -d
    
  • 查看node-1日志

    #查看日志确认节点加入集群
    #node-1节点操作
    cd /app/elasicsearch/elasticsearch-8.4.3
    cat logs/udss-es_server.json
    #发现 node add日志则表示加入成功
    
  • node-3配置与启动,与node-2相同,按照步骤操作即可。token可重复使用。

  • 证书配置

    /app/elasicsearch/elasticsearch-8.4.3/config/certs/http_ca.crt 文件,下载拷贝至需要链接ES的应用服务器。

    并执行以下命令,安装到jdk证书目录中,使机器能够链接ES服务。

    #将http_ca.crt文件拷贝到服务器并安装:
     keytool -import -alias es_cert -keystore "$JAVA_HOME/jre/lib/security/cacerts" -file http_ca.crt
    #输入密码:
    changeit
    #回车,输入yes,安装完成。该服务器可以使用https链接es.否则无法链接。
    

5、token失效

​ ES提供了token生成工具进行生成对应的token,在失效时刻随时生成。

#进入es目录
cd /app/elasicsearch/elasticsearch-8.4.3
#生成node 加入集群的token
bin/elasticsearch-create-enrollment-token -s node

#生成kibana接入的token
 bin/elasticsearch-create-enrollment-token -s kibana

6、配置安装kibana

  • 下载kibana安装包:8.4.3并上传到服务器

  • 解压安装包:tar -zxvf xxxx.tar.gz

  • 配置kibana.yml文件

    cd /app/kibana/kibana-8.4.3/config
    vim kibana.yml
    #host修改为如下:
    # Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
    # The default is 'localhost', which usually means remote machines will not be able to connect.
    server.host: "0.0.0.0"
    
    
  • 保存配置文件并启动kibana

    cd /app/kibana/kibana-8.4.3/
    nohup bin/kibana --allow-root &
    
  • 浏览器登陆kibana首页:

    输入上面日志中的token或命令生成的kibana token,进行首次配置。

    配置完毕后,即可登录使用

    用户名:elastic

    密码:上述日志中的用户密码