Elasticsearch 集群安装

这篇具有很好参考价值的文章主要介绍了Elasticsearch 集群安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

集群节点

我通常认定一个单独运行的 es 服务为一个 es 节点。

es 的节点通过 elasticsearch.yml 的 node.roles 参数来定义,如果不设置 node.roles,则默认如下的角色

  • master 具有主节点资格
  • data 数据节点
  • data_content 内容数据节点
  • data_hot 热点数据节点
  • data_warm 温数据节点
  • data_cold 冷数据节点
  • data_frozen 冻结数据节点
  • ingest 摄取节点
  • ml 机器学习节点
  • remote_cluster_client 符合远程集群的节点
  • transform 变换节点

master

master 表示具有主节点资格:拥有该角色,表示当前节点有资格被选举为主节点。一个高可用的集群中,应至少包含三个符合主节点资格的节点。

主节点负责轻量级集群范围内的操作,例如创建或删除索引、跟踪哪些节点是集群的一部分以及决定将哪些分片分配给哪些节点。拥有稳定的主节点对于集群健康非常重要。

主节点必须有一个path.data目录,其内容在重新启动后仍然存在,就像数据节点一样,因为这是存储集群元数据的地方。集群元数据描述了如何读取存储在数据节点上的数据,因此如果丢失则存储在数据节点上的数据将无法读取。

  • 专用主节点

对于整个集群来说,主节点非常重要,主节点负责的集群事物也很多,意味着主节点要消耗更多的资源,为避免主节点因其他事物而过载,我们可以设置主节点为专用主节点。(注:此设置一般在大型集群中使用,其实我们一般的项目中通常是不用设置专用主节点的)。专用主节点,设置:

node.roles: [ master ]
  • 仅投票主节点

仅投票的主节点是参与 主节点选举但不会充当集群选举主节点的节点。仅投票主节点设置,需要同时设置 master 和 voting_only 。注:仅投票节点也是符合主节点资格的节点,只是不会成为主节点。

只要有一半以上的投票节点可用,群集仍可以正常工作。这意味着如果有三个或四个主资格节点,群集可以容忍其中一个不可用。如果有两个或更少的主资格节点,则它们必须都保持可用。所以我们的节点至少需要 3 个。

群集中的主资格节点通常应该是奇数。如果是偶数,Elasticsearch会将其中一个节点排除在投票配置之外,以确保其大小为奇数。这种省略并不会降低集群的容错能力。

node.roles: [ data, master, voting_only ]

data 数据节点

数据节点保存数据并执行数据相关操作,例如 CRUD、搜索和聚合等这些 I/O、内存和 CPU 密集型操作。具有该角色的节点可以担任任何专门的数据节点角色。

ES 可以单节点集群、两节点集群、三节点甚至更多节点的集群,单节点集群和两节点集群都有其局限性,我们就不做过多的讨论了。

可以使用专门的数据角色将数据节点分配到特定层:data_content、data_hot、data_warm、 data_cold或data_frozen。一个节点可以属于多个层,具有这些角色的节点不能具有 data 角色。

仅协调节点

仅协调节点就像负载均衡器一样,负责路由请求、处理搜索和分发批量索引。

符合远程条件的节点

符合远程条件的节点充当跨集群客户端并连接到 远程集群。连接后,您可以使用跨集群搜索来搜索远程集群。您还可以使用跨集群复制在集群之间同步数据。

node.roles: [ remote_cluster_client ]

集群配置

关于 ES 应用的安装,请移步本专栏的 Elasticsearch 简介与安装 一文。

ES 大部分都配置都在 $ES_HOME/config/elasticsearch.yml 文件中配置。

path.data

每个数据和主节点都需要访问存储分片、索引和集群元数据的数据目录。默认为 $ES_HOME/data 但可以在配置文件中配置 elasticsearch.yml 绝对路径或相对路径。

path.logs

ES 的日志路径。默认为 $ES_HOME/logs。建议data 和 logs 目录和 ES 主目录分开。

cluster.name 集群名称

cluster.name一个节点只有在与集群中的所有其他节点共享集群时才能加入集群。默认名称为 elasticsearch。为避免任意的 ES 服务加入集群,我们需要自定义设置集群的名称。同一个集群应该配置同样的集群名称

node.name 节点名称

Elasticsearch 启动时节点名称默认为服务器的主机名。

相关网络配置

network.host

设置此节点的 HTTP 和传输流量地址。该节点将绑定到该地址,并将其用作其发布地址。默认情况下,Elasticsearch 仅绑定到环回地址,例如127.0.0.1和 [::1]。要配置集群,则此地址需要修改为网络地址。接受 IP 地址、主机名或特殊值。
特殊值包括如下几个:

  • local
    系统上的任何环回地址,例如127.0.0.1。
  • site
    系统上的任何站点本地地址,例如192.168.0.1。
  • global
    系统上的任何全局范围的地址,例如8.8.8.8。
  • _[networkInterface]_
    使用名为 的网络接口的地址[networkInterface]。en0例如,如果您希望使用名为then set的接口的地址network.host: en0
  • 0.0.0.0
    所有可用网络接口的地址。

network.host 配置是 http.host、transport.host 等的默认配置。

http.port

HTTP 客户端通信绑定的端口。接受单个值或范围。如果指定了范围,则节点将绑定到该范围中的第一个可用端口。默认为9200-9300。

transport.port

节点之间的通信而绑定的端口。接受单个值或范围。如果指定了范围,则节点将绑定到该范围中的第一个可用端口。将此设置设置为每个符合主节点资格的节点上的单个端口,而不是一个范围。默认为9300-9400。

更多的网络相关设置,可以查看官网 网络设置 比如跨域设置、请求正文最大大小设置等

集群发现配置

当 ES 集群任务主节点发生故障 或 启动当前节点时,ES 会进行一个集群的发现过程。

  • 如果是主节点发生故障,则持续到选举出新的主节点为止
  • 如果是新启动 ES 节点,则持续到当前节点找到主节点为止

discovery.seed_hosts

此设置提供集群中其他符合主节点资格且处于活动状态的节点列表。每个地址可以是 IP 地址,也可以是通过 DNS 解析为一个或多个 IP 地址的主机名。

discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11 
   - seeds.mydomain.com 
   - [0:0:0:0:0:ffff:c0a8:10c]:9301 

ES 集群时会依次尝试和探测该列表地址并验证其是否具有主节点资格。如果此地址不具备主节点资格,则继续向下执行发现过程。直到发现主节点或者发现足够多的具有主节点资格的节点来进行并完成选举。

示例最后为 IPv6 的地址,IPv6地址必须括在方括号中

如果不配置端口,会使用 transport.port 配置覆盖

更多的服务发现的配置请查看官网 服务发现设置

引导集群配置

cluster.initial_master_nodes

配置符合主节点资格的节点名称 node.name 列表。默认为空。第一次启动 Elasticsearch 集群需要在集群中的一个或多个符合主资格的节点上显式定义一组初始符合主资格的节点,这称为集群引导。仅在集群第一次启动时才需要这样做。如果是加入正在运行的集群的新启动节点,从集群选出的主节点获取此信息。

集群搭建

注:这里我们的集群为多台不同的服务器集群(192.168.1.10、192.168.1.11、192.168.1.12),本地多节点集群我们这里就略过不说了。

为什么是3台?请注意 ES 集群至少需要 3 个节点。

注意安装版本,我们文章的版本为 elasticsearch-8.6.2-linux-x86_64.tar.gz (8.6.2)

安装第一个节点 myNode1

请参考 Elasticsearch 简介与安装 一文

请在首次启动之后,保存账号密码登信息,再进行下面的步骤。如需修改密码请参考 Elasticsearch 用户管理 一文。

建议在此节点就添加好用户,比我我们示例中的 myuser 用户

集群基础配置

在 elasticsearch.yml 配置中添加如下配置:(注意是添加,不要修改启动时自动生成的配置)

# 数据目录(最好在 ES 的安装目录之外)
path.data: /DATA/es/data
# 日志目录(最好在 ES 的安装目录之外)
path.logs: /DATA/es/logs
# 集群名称
cluster.name: myTestEs
# 节点名称
node.name: myNode1

# 当前节点绑定到的ip地址(之后的 http.host、transport.host等都默认使用该配置)
# 一般为当前节点所在服务器的ip
network.host: 192.168.1.10

# 节点访问端口
http.port: 9200

# 集群间通信端口
transport.port: 9300

# 此设置提供集群中其他符合主节点资格且处于活动状态的节点列表。每个地址可以是 IP 地址,也可以是通过 DNS 解析为一个或多个 IP 地址的主机名
discovery.seed_hosts:
   - 172.2.1.168.1.10:9300
   - 172.2.1.168.1.11:9300
   - 172.2.1.168.1.12:9300

配置添加之后重启即可,这样我们就启动了集群的一个节点。

将新节点加入集群

  1. 解压安装包,解压后不要做任何修改和配置(请一定保持是全新的节点应用,否则会有已经使用等的错误出现)
  2. 在现有集群的任意节点上执行如下命令
./bin/elasticsearch-create-enrollment-token -s node

执行后会生成token字符串

  1. 在新节点的安装目录中执行如下命令(注意拷贝token字符串到命令中)
./bin/elasticsearch --enrollment-token <token>

执行后 Elasticsearch 会在 config/certs 目录下自动生成证书和密钥,并自动添加 SSL 相关的配置,并启动,但启动是会报错的,因为并没有进行集群相关的配置。

  1. 添加和修改 elasticsearch.yml 配置

按照我们上面的 <集群基础配置> 修改当前节点的集群配置即可,这里我们就不详细说明了。

  1. 修改成功之后重新启动节点应用即可(此时请使用后台运行)
./bin/elasticsearch -d -p pid

新节点不用再次添加用户,使用集群已创建的用户即可访问。

查看集群的状态

注意:新节点启动之后,还会有集群间的分配平衡过程,此过程会消耗一定的时间,所以在一定的时间范围内,我们可能得到yellow 的状态,这是正常现象

GET /_cluster/health

{
    "cluster_name": "myTestEs", // 集群名称
    "status": "green", // 集群状态
    "timed_out": false, // 是否超时
    "number_of_nodes": 2, // 节点数
    "number_of_data_nodes": 2,// 数据节点数
    "active_primary_shards": 9,// 活动的主分片数
    "active_shards": 18,// 活动的总分片数
    "relocating_shards": 0,// 正在重新定位的分片数
    "initializing_shards": 0, // 正在初始化的分片数
    "unassigned_shards": 0, // 未分配的分片数
    "delayed_unassigned_shards": 0, // 其分配被超时设置延迟的分片数
    "number_of_pending_tasks": 0, // 尚未执行的集群级更改数
    "number_of_in_flight_fetch": 0, // 未完成的提取数
    "task_max_waiting_in_queue_millis": 0,// 自最早启动的任务等待执行以来的时间(以毫秒为单位)
    "active_shards_percent_as_number": 100.0 // 集群中活动分片的比率,以百分比表示
}

按照同样的方式再添加其他节点即可。

集群启动常见错误

文件描述符和虚拟内存过小

bootstrap check failure [1] of [2]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
bootstrap check failure [2] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

修改 /etc/security/limits.conf 配置(请使用 root 或 有 sudo 权限的账号修改)

查看limits.conf,文件中有配置说明,此处不做详解。新增配置如下:

* soft nofile 65536
* hard nofile 65536
* hard stack  65536
* soft stack  65536
* soft nproc  65536
* hard nproc  65536

此方式为永久修改,修改后需要重启系统。也可以使用如下命令临时修改,在重启后会失效

ulimit -n 65536

修改 /etc/sysctl.conf 配置(请使用 root 或 有 sudo 权限的账号修改)

添加如下配置:

vm.max_map_count=262144

此方式为永久修改,修改后需要重启系统。也可以使用如下命令临时修改,在重启后会失效文章来源地址https://www.toymoban.com/news/detail-600762.html

sysctl -w vm.max_map_count=262144

到了这里,关于Elasticsearch 集群安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据学习初级入门教程(十七) —— Elasticsearch 8.7.0 完全分布式集群的安装、配置、启动和测试

    好久没用 Elasticsearch 集群了,参考以前写的《大数据学习初级入门教程(八) —— Elasticsearch 7.6.2 单节点的安装、启动和测试_elasticsearch 7.6.2需要专属网络_孟郎郎的博客-CSDN博客》、《大数据学习初级入门教程(九) —— Elasticsearch 7.6.2 伪分布式集群的安装、配置、启动和测

    2024年02月04日
    浏览(40)
  • Elasticsearch跨集群检索配置

    跨集群检索字面意思,同一个检索语句,可以检索到多个ES集群中的数据,ES集群默认是支持跨集群检索的,只需要动态的增加入节点即可,下面跟我一起来体验下ES的跨集群检索的魅力。 Elasticsearch 跨集群检索推荐的是不同集群版本是相同的。 对于 Elasticsearch 的 8.1.3 版本,

    2024年02月07日
    浏览(34)
  • Elasticsearch 8 集群配置

    Centos 8 安装 Elasticsearch 8 ES集群至少需要三台服务器: 启动过程如果有报错,先把elasticsearch/data目录下的文件全部删除,再试试。

    2024年02月12日
    浏览(30)
  • elasticsearch 6.8集群配置(推荐)

    版本 6.8.23 elasticsearch下载 kibana 下载 elasticsearch IK分词器下载 elasticsearch 比较全的下载地址(https://elasticsearch.cn/download/#seg-3),所有历史版本包括 kibana、logstash等等 系统: linux centos7 ${ES_HOME}为ES安装目录 下载安装包 可选-生成证书(要安装xpack才是必须的) elasticsearch 配置 可选

    2024年02月05日
    浏览(38)
  • ElasticSearch集群服务器配置

    一、环境介绍与安装准备 1、环境说明 2台虚拟机,OS为ubuntu13.04,ip分别为xxx.xxx.xxx.140和xxx.xxx.xxx.145。 2、安装准备 ElasticSearch(简称ES)由java语言实现,运行环境依赖java。ES 1.x版本,官方推荐至少使用jdk1.6的环境,建议使用oracle java,可以去官网下载,本文使用jdk-7u51-linux-i586.

    2023年04月21日
    浏览(74)
  • Elasticsearch8 集群搭建(二)配置篇:(1)节点和集群配置

    安装完Elasticsearch后,需要对其进行配置,包括以下几部分:节点和集群配置、系统配置、安全配置。 此篇记录节点和集群配置的内容,后续将更新系统配置和安全配置。 通过编辑/usr/local/elasticsearch-8.10.2/config/elasticsearch.yml文件进行配置,在集群内每个节点上都要进行配置。

    2024年01月18日
    浏览(38)
  • Elasticsearch 集群安装

    我通常认定一个单独运行的 es 服务为一个 es 节点。 es 的节点通过 elasticsearch.yml 的 node.roles 参数来定义,如果不设置 node.roles,则默认如下的角色 master 具有主节点资格 data 数据节点 data_content 内容数据节点 data_hot 热点数据节点 data_warm 温数据节点 data_cold 冷数据节点 data_fro

    2024年02月16日
    浏览(31)
  • Elasticsearch & Kibana 8.6.1 集群配置

    Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。 Elasticsearch可以看做一个便于搜索的数据库,相比传统关系型数据库如下 Mysql ‐ Databases ‐ Tables ‐ Rows ‐ Columns Elasticsearch ‐ Indices ‐ Types ‐ Documents

    2024年02月14日
    浏览(37)
  • Elasticsearch8 集群搭建(二)配置篇:(2)系统配置

    此篇记录Elasticsearch8的一些 系统配置。 1、更改文件描述符的限制 Elasticsearch使用了大量的文件描述符,它用于表示系统打开的文件的标识符。文件描述符是非负整数,它在操作系统层面被用来唯一标识一个打开的文件、套接字或其他 I/O 资源。每个进程都有一组文件描述符,

    2024年01月19日
    浏览(43)
  • elasticsearch集群安装+安全验证+kibana安装

    修改limits.cong配置 /etc/security/limits.conf 修改如下 echo \\\"* soft nofile 65536 hard nofile 131072 soft nproc 4096 hard nproc 4096 soft memlock unlimited hard memlock unlimited\\\" /etc/security/limits.conf 修改sysctl配置 /etc/sysctl.conf 修改如下 echo “vm.max_map_count = 262145” /etc/sysctl.conf #生效 sysctl -p 修改es占用内存 /opt/

    2024年04月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包