题目
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
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/
- 节点状态为 yellow
- 原因: 3个分片为分配
- 集群连个节点中只有一个数据节点(node 1), 但是 elastic 每个主分片有 1 个副本, 导致副本fen片无法分配.
task 2
查询集群中索引数量
GET _cat/indices?v
查看当前集群健康状态
GET /_cat/health?v
GET /_cluster/health/
查看集群中节点信息
GET /_cat/nodes?v
参考
官网地址: 集群节点角色介绍