Elasticsearch 集群

news/2024/12/27 10:28:32/

集群结构

        以三台物理机为例。在这三台物理机上,搭建了 6 个 ES 的节点,三个 data 节点,三个 master 节点(每台物理机分别起了一个 data 和一个 master),3 个 master 节点,目的是达到(n/2) +1 等于 2 的要求,这样挂掉一台 master 后(不考虑 data),n 等于 2,满足参数,其他两个 master 节点都认为 master 挂掉之后开始重新选举.
master 节点上
node.master = true
node.data = false
discovery.zen.minimum_master_nodes = 2
data 节点上
node.master = false
node.data = true

集群搭建

所有之前先运行:sysctl -w vm.max_map_count=262144
我们只是测试,所以临时修改。永久修改使用下面
#防止 JVM 报错
echo vm.max_map_count=262144 >> /etc/sysctl.conf
sysctl -p

准备 docker 网络

Docker 创建容器时默认采用 bridge 网络,自行分配 ip,不允许自己指定。

在实际部署中,我们需要指定容器 ip,不允许其自行分配 ip,尤其是搭建集群时,固定 ip
是必须的。
我们可以创建自己的 bridge 网络 : mynet,创建容器的时候指定网络为 mynet 并指定 ip
即可。
 
#查看网络模式
docker network ls;
#创建网络
docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1
mynet
#查看网络信息
docker network inspect mynet
以后使用--network=mynet --ip 172.18.12.x 指定 ip

docker-compose

设置权限:chmod -R 777 /

  elasticsearch1:

    # 使用elasticsearch:7.5.1镜像

    image: elasticsearch:7.17.2

    container_name: elasticsearch1

    # 设置环境变量:集群名称为elasticsearch,以确保节点互相发现

    environment:

      ES_JAVA_OPTS: "-Xms251m -Xmx251m"

    # 将9200端口映射到主机端口

    ports:

      - "9201:9201"

      - "9301:9301"

    # 挂载elasticsearch数据目录

    volumes:

      - /docker/elasticsearch1/data:/usr/share/elasticsearch/data

      - /docker/elasticsearch1/plugins:/usr/share/elasticsearch/plugins

      - /docker/elasticsearch1/logs:/usr/share/elasticsearch/logs

      - /docker/elasticsearch1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

    restart: always

    network_mode: "host"

  elasticsearch2:

    # 使用elasticsearch:7.5.1镜像

    image: elasticsearch:7.17.2

    container_name: elasticsearch2

    # 设置环境变量:集群名称为elasticsearch,以确保节点互相发现

    environment:

      ES_JAVA_OPTS: "-Xms251m -Xmx251m"

    # 将9200端口映射到主机端口

    ports:

      - "9202:9202"

      - "9302:9302"

    # 挂载elasticsearch数据目录

    volumes:

      - /docker/elasticsearch2/data:/usr/share/elasticsearch/data

      - /docker/elasticsearch2/plugins:/usr/share/elasticsearch/plugins

      - /docker/elasticsearch2/logs:/usr/share/elasticsearch/logs

      - /docker/elasticsearch2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

    restart: always

    network_mode: "host"

  elasticsearch3:

    # 使用elasticsearch:7.5.1镜像

    image: elasticsearch:7.17.2

    container_name: elasticsearch3

    # 设置环境变量:集群名称为elasticsearch,以确保节点互相发现

    environment:

      ES_JAVA_OPTS: "-Xms251m -Xmx251m"

    # 将9200端口映射到主机端口

    ports:

      - "9203:9203"

      - "9303:9303"

    # 挂载elasticsearch数据目录

    volumes:

      - /docker/elasticsearch3/data:/usr/share/elasticsearch/data

      - /docker/elasticsearch3/plugins:/usr/share/elasticsearch/plugins

      - /docker/elasticsearch3/logs:/usr/share/elasticsearch/logs

      - /docker/elasticsearch3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

    restart: always

    network_mode: "host"

elasticsearch.yml

master节点的配置

cluster.name: my-es #集群的名称,同一个集群该值必须设置成相同的

node.name: es-master-1 #该节点的名字

node.master: true #该节点有机会成为 master 节点

node.data: false #该节点可以存储数据

network.host: 0.0.0.0

http.host: 0.0.0.0 #所有 http 均可访问

http.port: 9201

transport.tcp.port: 9301

#discovery.zen.minimum_master_nodes: 2 #设置这个参数来保证集群中的节点可以知道其它 N 个有 master 资格的节点。官方推荐(N/2)+1

discovery.zen.ping_timeout: 10s #设置集群中自动发现其他节点时 ping 连接的超时时间

discovery.seed_hosts: ["192.168.1.145:9301", "192.168.1.145:9302", "192.168.1.145:9303"] #设置集群中的 Master 节点的初始列表,可以通过这些节点来自动发现其他新加入集群的节点,es7 的新增配置

cluster.initial_master_nodes: ["es-master-1", "es-master-2", "es-master-3"] #新集群初始时的候选主节点,es7 的新增配置

slave节点的配置 

cluster.name: my-es #集群的名称,同一个集群该值必须设置成相同的

node.name: es-master-1 #该节点的名字

node.master: false #该节点有机会成为 master 节点

node.data: true#该节点可以存储数据

network.host: 0.0.0.0

http.host: 0.0.0.0 #所有 http 均可访问

http.port: 9204

transport.tcp.port: 9304

#discovery.zen.minimum_master_nodes: 2 #设置这个参数来保证集群中的节点可以知道其它 N 个有 master 资格的节点。官方推荐(N/2)+1

discovery.zen.ping_timeout: 10s #设置集群中自动发现其他节点时 ping 连接的超时时间

discovery.seed_hosts: ["192.168.1.145:9301", "192.168.1.145:9302", "192.168.1.145:9303"] #设置集群中的 Master 节点的初始列表,可以通过这些节点来自动发现其他新加入集群的节点,es7 的新增配置

cluster.initial_master_nodes: ["es-master-1", "es-master-2", "es-master-3"] #新集群初始时的候选主节点,es7 的新增配置

 测试集群

http://192.168.1.145 :9201/_nodes/process?pretty 查看节点状况
http://192.168.1.145 :9201/_cluster/stats?pretty 查看集群状态
http://1192.168.1.145 :9201/_cluster/health?pretty 查看集群健康状况
http://192.168.1.145 :9202/_cat/nodes 查看各个节点信息
$ curl localhost:9200/_cat
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}

 


http://www.ppmy.cn/news/1558501.html

相关文章

纯css 实现呼吸灯效果

开始效果 呼吸效果 实现代码 <div class"container"><div class"breathing-light"></div> </div><style>html,body {height: 100%;background-color: white;}.container {padding: 100px;}.container .breathing-light {wi…

MySQL为什么选择使用B+树作为索引结构?

1. 可以先分析B树的优势 矮胖&#xff1a; 随着数据量的增长&#xff0c;B树的高度增长不会太快&#xff0c;使得磁盘的I/O次数减少自平衡性&#xff1a; B树是一种自平衡的二叉树&#xff0c;在新增和删除节点会进行分裂合并操作&#xff0c;以保证树的平衡&#xff0c;删除效…

K8S--“ Failed to create pod sandbox: nameserver list is empty“

原因是因为宿主机的/etc/resolv.conf 文件 有残缺&#xff0c; 填写一半&#xff0c;这个问题 cat /etc/resolv.conf填写好后&#xff0c;重启pod或等待一下再查看即可

Chromium GN 目标指南 - view_example 表单示例 (八)

1. 引言 在前面的文章中&#xff0c;我们学习了如何创建计数器示例&#xff0c;了解了如何使用 Label 和 Button 控件进行交互以及更新 UI 状态。在本篇文章中&#xff0c;我们将创建一个更复杂的示例 —— 表单&#xff0c;以学习如何使用 Textfield、Combobox 和 Checkbox 等…

spring cloud gateway 3

**Spring Cloud Gateway 3** 是 Spring Cloud 生态系统中的一个重要组件&#xff0c;用于构建 API 网关&#xff0c;提供路由、监控、安全等关键功能。以下是关于 Spring Cloud Gateway 3 的详细介绍&#xff1a; ## 1. 什么是 Spring Cloud Gateway&#xff1f; **Spring Clou…

牛客网刷题 ——C语言初阶——BC114 小乐乐排电梯

1.牛客网 &#xff1a;BC114 小乐乐排电梯 题目描述&#xff1a; 小乐乐学校教学楼的电梯前排了很多人&#xff0c;他的前面有n个人在等电梯。电梯每次可以乘坐12人&#xff0c;每次上下需要的时间为4分钟&#xff08;上需要2分钟&#xff0c;下需要2分钟&#xff09;。请帮助…

(补)算法刷题Day26:BM63 跳台阶

题目链接 描述 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法&#xff08;先后次序不同算不同的结果&#xff09;。 数据范围&#xff1a;1≤n≤40 要求&#xff1a;时间复杂度&#xff1a;O(n) &#xff0c;空间复杂度…

【LeetCode】9、回文数

【LeetCode】9、回文数 文章目录 一、数学: 除法和取模1.1 数学: 除法和取模 二、多语言解法 一、数学: 除法和取模 1.1 数学: 除法和取模 例如 15251, offset 也是五位数的 10000 先判断首1和尾1, 再变为 525, offset 变为 100 再判断首5和尾5, 再变为 2, offset 变为 1 整个…