ElasticSearch安装部署

本地安装部署

以下以ubantu22.04系统为例,详解本地安装部署ElastickSearch-8.3.2以及Kibana-8.3.2过程

单节点

集群

本地部署集群有以下两种方式

  1. 多节点多项目
  2. 单节点多项目

多节点多项目

概念

集群中配置几个节点就有几个文件夹。一个节点(ElasticSearch实例)占一个文件夹,每个节点单独配置

(base) lucifer@lucifer-ElasticStack:~/service/ElasticStack/8.3/c1_5nodes_<ip_address>_9201-9205$ tree -L 2
.
├── kibana-8.3.2
│   ├── bin
│   ├── config
│   ├── data
│   ├── LICENSE.txt
│   ├── logs
│   ├── node
│   ├── node_modules
│   ├── NOTICE.txt
│   ├── package.json
│   ├── plugins
│   ├── README.txt
│   ├── src
│   └── x-pack
├── node-1
│   ├── bin
│   ├── config
│   ├── data
│   ├── jdk
│   ├── lib
│   ├── LICENSE.txt
│   ├── logs
│   ├── modules
│   ├── NOTICE.txt
│   ├── plugins
│   └── README.asciidoc
├── node-2
│   ├── bin
│   ├── config
│   ├── data
│   ├── jdk
│   ├── lib
│   ├── LICENSE.txt
│   ├── logs
│   ├── modules
│   ├── NOTICE.txt
│   ├── plugins
│   └── README.asciidoc
├── node-3
│   ├── bin
│   ├── config
│   ├── data
│   ├── jdk
│   ├── lib
│   ├── LICENSE.txt
│   ├── logs
│   ├── modules
│   ├── NOTICE.txt
│   ├── plugins
│   └── README.asciidoc
├── node-4
│   ├── bin
│   ├── config
│   ├── data
│   ├── jdk
│   ├── lib
│   ├── LICENSE.txt
│   ├── logs
│   ├── modules
│   ├── NOTICE.txt
│   ├── plugins
│   └── README.asciidoc
├── node-5
│   ├── bin
│   ├── config
│   ├── data
│   ├── jdk
│   ├── lib
│   ├── LICENSE.txt
│   ├── logs
│   ├── modules
│   ├── NOTICE.txt
│   ├── plugins
│   └── README.asciidoc
└── start_cluster.sh

55 directories, 20 files

步骤
  1. 从官网下载对应系统和架构的安装包

    1. 下载ElasticSearch-8.3.2
    2. 下载Kibana-8.3.2(ElasticSearch和Kibana两者版本必须一致
  2. 建立项目文件夹,将解压的ElasticSearch和Kibana安装包放入该文件夹

    1. 注意项目文件夹命名规范(不强制要求,但可以提醒避免某些错误)。格式: c<cluster_num>_<num>nodes_<ip_address>_<startnode_port>-<endnode_port>
c:表示集群标识符cluster
<cluster_num>:表示集群编号
<num>nodes:表示集群中包含的节点数量
<ip_address>:表示主机地址
<startnode_port>:表示节点的http-port的起始编号
<endnode_port>:表示节点的http-port的终止编号

  1. 需要几个节点就复制几个解压后的ElasticSearch文件,并将文件名称重命名为node-num,num从1开始编号

  2. 打开各个节点文件夹的config/elasticsearch.yml文件进行以下初始化配置,以下配置在集群启动后不能二次更改

    1. cluster.name:集群名称(唯一)默认配置为elasticsearch。如果手动修改,则集群中所有节点的配置文件也要修改为一致
    2. node.name:该节点的名称。建议与节点文件夹名称一致。eg. node-1
    3. node.roles:该节点的角色。默认是所有角色,除了启动的第一个节点(active_master)不能设置该属性,其余节点都可以设置
    4. http.port:默认是9200
    5. transport.port:默认是9300
  3. 开启第一个节点(ElasticSearch实例)。第一个节点默认是active_master

    1. 打开cmd,进入到node-1/bin目录下,按以下命令操作
(base) lucifer@lucifer-ElastickStack:~/service/ElasticStack/8.3/c1_5nodes_<ip_address>_9201-9205/node-1/bin$ ./elasticsearch

图1 集群中第一个节点启动

  1. 打开另一个终端在node-1/bin目录下运行以下命令
(base) lucifer@lucifer-ElasticStack:~/service/ElasticStack/8.3/c1_5nodes_<ip_address>_9201-9205/node-1/bin$ ./elasticsearch-create-enrollment-token -s node

  1. 打开另一个终端在kibana/bin目录下运行以下命令
(base) lucifer@lucifer-ElasticStack:~/service/ElasticStack/8.3/c1_5nodes_<ip_address>_9201-9205/kibana-8.3.2/bin$ ./kibana

图2 kibana启动

  1. 根据节点个数开启终端,在每个终端中进入剩余节点的bin/目录下,运行以下命令
# 以node-2加入node-1所在集群演示
# <token> 指4.2中运行 node-1/bin/elasticsearch-create-enrollment-token -s node 的结果
(base) lucifer@lucifer-ElasticStack:~/service/ElasticStack/8.3/c1_5nodes_<ip_address>/node-2/bin$ ./elasticsearch --enrollment-token <token>
  1. 修改各个节点的配置文件node-num/config/elasticsearch.yml
    1. 本例中node-1节点作为active_master节点,在第一次启动后配置文件elasticsearch.yml会自动设置cluster.initial_master_nodes: ["node-1"]。这项配置在之后再次启动集群是不建议的(可能会造成数据丢失),把它注释掉
# Create a new cluster with the current node only
# Additional nodes can still join the cluster later
cluster.initial_master_nodes: ["node-1"]  # 之后不需要此配置,需手动注释掉
  1. 在所有节点(包括active_master,本例中暂时为node-1)的配置文件中加入或修改discovery.seed_hosts配置
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]

# 根据候选master节点的transport.port进行配置
discovery.seed_hosts: ["127.0.0.1:9301", "127.0.0.1:9302", "127.0.0.1:9303"]
  1. 在项目根目录下写一个bash脚本,用于后续批量启动集群中的节点
# 编辑脚本 start_cluster.sh
(base) lucifer@lucifer-ElasticStack:~/service/ElasticStack/8.3/c1_5nodes_<ip_address>_9201-9205$ vim start_cluster.sh


# 注意修改为你自己的路径
# -d 表示以守护进程的方试运行
/service/ElasticStack/8.3/c1_5nodes_<ip_address>_9201-9205/node-1/bin/elasticsearch -d
/service/ElasticStack/8.3/c1_5nodes_<ip_address>_9201-9205/node-2/bin/elasticsearch -d
/service/ElasticStack/8.3/c1_5nodes_<ip_address>_9201-9205/node-3/bin/elasticsearch -d
/service/ElasticStack/8.3/c1_5nodes_<ip_address>_9201-9205/node-4/bin/elasticsearch -d
/service/ElasticStack/8.3/c1_5nodes_<ip_address>_9201-9205/node-5/bin/elasticsearch -d


注意事项

如果集群中任意节点启动报错,注意查看node-num/logs/elasticsearch.log文件,定位错误

vm.max_map_count

如果报错,需修改/etc/sysctl.conf系统配置文件,按照报错提示设置vm.max_map_count值。官网参考

heap size
  • 如果加入节点到集群时,ElasticSearch意外退出,检查对应节点文件夹/logs/elasticsearch.logheap size大小
    1. 如果heap size值很大或很小,说明elastic占用系统内存较多或分配的内存不够,需修改jvm配置。在node-num/config/jvm.options.d目录下新增以.options为拓展名的文件,例如jvm.options
    2. jvm.options.d/jvm.options中设置XmsXmx的值(这两个参数需设置成一样),按以下格式设置
# 表示堆内存占用1G
-Xms1g
-Xmx1g
cluster.name和node.name
  • 第一次启动节点前可修改节点名称和所属的集群名称
    1. 一个集群中所有节点的集群名cluster.name要相同,默认配置为elasticsearchnode.name默认配置为主机名称(可手动修改以区分不同的节点)
    2. 如果手动修改了集群名称,集群中的其他节点也需要手动修改一致,否则报错
  • 节点角色配置
    1. 集群的首个节点会被当做active_master,不能在配置文件elasticsearch.ymlroles.yml中指定角色node.roles,其余节点可配置角色
discovery.seed_hosts
  • 此配置用于发现集群上存在的节点配置
  • discovery.seed_hosts不能在首个启动的节点上配置,只能在其余节点启动后更新elasticsearch.yml文件后,再自行修改此配置(默认是127.0.0.1:9300)
kibana加入集群
  • 当elasticsearch.security开启时,kibana的启用检查很严格
  • 先前已加入一个集群的kibana不能再加入另一个集群(原先的集群节点更改配置后则不能启动kibanna)
  • 集群的ip_address变化后,原来的kibana也不能启动。一个ElasticSearch集群,Kibana的部署和主机IP有关,IP变动后,ElasticSearch和Kibana之间的认证(node-num/config/certs目录下的文件)无效,需重新认证,官网参考链接如下
  • 因此,一个集群对应一个ip_address一个kibana对应一个集群
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值