ElasticSearch 单机多节点部署

419 阅读4分钟

题目

image.png

Elastic 多节点部署 (task 1)

说明: elastic 集群在家里虚拟机部署, 本次作业是通过单台ECS上部署两个 elastic 集群完成

方式1: 直接在elastic 安装包内启动两次

./elasticsearch -E path.data=data1 -E path.logs=log1 -E node.name=node1 -E cluster.name=msb_teach
./elasticsearch -E path.data=data2 -E path.logs=log2 -E node.name=node2 -E cluster.name=msb_teach

缺点: 不能修改配置文件, 默认绑定127.0.0.1, 只能本机访问 注意事项:

  • 启动时需要指定数据存放目录, 日志存放目录,节点名称等, 避免多个节点存储在相同的目录, 数据冲突

方式2: 安装包拷贝出多份后直接启动

/node1/bin/elasticsearch
/node2/bin/elasticsearch
/node3/bin/elasticsearch

缺点: 不能修改配置文件, 默认绑定127.0.0.1, 只能本机访问. 如果修改配置文件则认为是生产环境,会进行配置检查, 启动会失败

方式3: 安装包拷贝出多份并进行配置

node 1 配置

yaml 配置

配置文件路径: /usr/local/elastic_stack/elasticsearch_node1/config/elasticsearch.yml

# ---------------------------------- Cluster -----------------------------------
# 配置集群名称
cluster.name: elastic
# ------------------------------------ Node ------------------------------------
# 配置节点名称
node.name: node-1
# 配置节点角色. 作业要求 node1 只有master-eligible 和 data 角色
node.roles: [master, data]
# ---------------------------------- Network -----------------------------------
# 配置 elastic 绑定的 ip 地址配置, 否则默认绑定 127.0.0.1
network.host: 0.0.0.0
# 配置 elastic http 端口 (因为在同一台 ECS 上部署两个节点所以需要配置端口,避免端口冲突)
# elastic http 端口范围 9200-9300
http.port: 9200
# elastic 集群节点间通信端口 (因为在同一台 ECS 上部署两个节点所以需要配置端口,避免端口冲突)
# elastic 集群节点间通信端口 9300-9400
transport.port: 9300
# --------------------------------- Discovery ----------------------------------
# 配置集群节点信息, 只需要配置集群中具有 master-eligible 的节点
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
# 配置默认的主节点, 在集群刚启动时的主节点
cluster.initial_master_nodes: ["node-2"]

配置 elastic heap size

说明: ECS 配置为 2C4G, 如果不配置 elastic 的 heap size , 启动第一个节点后, 第二个节点启动时会报内存不足.所以需要设置 elastic 的 heap size

配置文件地址:/usr/local/elastic_stack/elasticsearch_node1/config/jvm.options.d /heap.options

-Xms1g
-Xmx1g

node 2 配置

yaml配置

配置文件路径: /usr/local/elastic_stack/elasticsearch_node2/config/elasticsearch.yml

# ---------------------------------- Cluster -----------------------------------
# 配置集群名称
cluster.name: elastic
# ------------------------------------ Node ------------------------------------
# 配置节点名称
node.name: node-2
# 配置节点角色. 作业要求 node2 只有master-eligible 角色
node.roles: [master]
# ---------------------------------- Network -----------------------------------
# 配置 elastic 绑定的 ip 地址配置, 否则默认绑定 127.0.0.1
network.host: 0.0.0.0
# 配置 elastic http 端口 (因为在同一台 ECS 上部署两个节点所以需要配置端口,避免端口冲突)
# elastic http 端口范围 9200-9300
http.port: 9201
# elastic 集群节点间通信端口 (因为在同一台 ECS 上部署两个节点所以需要配置端口,避免端口冲突)
# elastic 集群节点间通信端口 9300-9400
transport.port: 9301
# --------------------------------- Discovery ----------------------------------
# 配置集群节点信息, 只需要配置集群中具有 master-eligible 的节点
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
# 配置默认的主节点, 在集群刚启动时的主节点
cluster.initial_master_nodes: ["node-2"]

配置 elastic heap size

说明: ECS 配置为 2C4G, 如果不配置 elastic 的 heap size , 启动第一个节点后, 第二个节点启动时会报内存不足.所以需要设置 elastic 的 heap size

配置文件地址:/usr/local/elastic_stack/elasticsearch_node1/config/jvm.options.d /heap.options

-Xms1g
-Xmx1g

错误处理

文件描述符设置太小

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

解决方法

sudo vi /etc/security/limits.conf

下面这行代码就添加到这个配置文件的末尾就好

*                soft    nofile          65536
*                hard    nofile          65536

最大虚拟内存设置太小

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方法:

sudo sysctl -w vm.max_map_count=262144

image.png

kibana安装

配置文件路径: /usr/local/elastic_stack/kibana-7.13.4-linux-x86_64/config/kibana.yml

server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200","http://localhost:9201"]

创建索引

创建 elastic 索引, 3个主分片, 每个主分片1个副本

PUT /elastic
{
  "settings": {
    "index": {
      "number_of_shards": 3,  
      "number_of_replicas": 1
    }
  }
}

检查健康状态

GET /_cluster/health/

image.png

  • 节点状态为 yellow
  • 原因: 3个分片为分配
  • 集群连个节点中只有一个数据节点(node 1), 但是 elastic 每个主分片有 1 个副本, 导致副本fen片无法分配.

task 2

查询集群中索引数量

GET _cat/indices?v

image.png

查看当前集群健康状态

GET /_cat/health?v

image.png

GET /_cluster/health/

image.png

查看集群中节点信息

GET /_cat/nodes?v

image.png

参考

官网地址: 集群节点角色介绍

集群发现配置-配置master节点和集群中node信息

集群网络配置-配置每个节点的监听端口

CAT API - 集群状态检查