目录
Dedicate Coordinating Only Node (Client Node)
常见集群部署方式
节点类型
节点参数配置
单一职责的节点
单一角色:职责分离的好处
Dedicate Coordinating Only Node (Client Node)
Dedicate Master Node
基本部署:增加节点,水平扩展
水平扩展:Coordinating Only Node
读写分离
在集群中部署 Kibana
Hot & Warm 架构 与 rack
通常情况下,数据节点采用的都是相同的配置,但有的时候,需要对部署的节点使用不同的硬件,这种情况下,hot warm架构就可以满足我们的需求
日志类应用的部署架构
什么是 Hot & Warm Architecture
Hot Nodes
Warm Nodes
配置 Hot & Warm Architecture
- 标记节点 (Tagging)
- 配置索引到 Hot Node
- 配置索引到 Warm 节点
标记节点
- 需要通过 “node.attr” 来标记⼀一个节点
- 节点的 attribute可以是任何的 key/value
- 可以通过 elasticsearch.yml 或者通过 –E 命令 指定
# 标记一个 Hot 节点
bin/elasticsearch -E node.name=hotnode -E cluster.name=geektime -E path.data=hot_data -E node.attr.my_node_type=hot
# 标记一个 warm 节点
bin/elasticsearch -E node.name=warmnode -E cluster.name=geektime -E path.data=warm_data -E node.attr.my_node_type=warm
# 查看节点
GET /_cat/nodeattrs?v
配置 Hot 数据
创建索引时候,指定将其创建在 hot 节点上
# 配置到 Hot节点
PUT logs-2019-06-27
{
"settings":{
"number_of_shards":2,
"number_of_replicas":0,
"index.routing.allocation.require.my_node_type":"hot"
}
}
PUT my_index1/_doc/1
{
"key":"value"
}
GET _cat/shards?v
旧数据移动到 Warm 节点
Index.routing.allocation 是一个索引级的 dynamic setting,可以通过 API 在后期进行设定
# 配置到 warm 节点
PUT PUT logs-2019-06-27/_settings
{
"index.routing.allocation.require.my_node_type":"warm"
}
Rack Awareness
主副分片分散到rack1,rack2上
标记 Rack 节点 + 配置集群
# 标记一个 rack 1
bin/elasticsearch -E node.name=node1 -E cluster.name=geektime -E path.data=node1_data -E node.attr.my_rack_id=rack1
# 标记一个 rack 2
bin/elasticsearch -E node.name=node2 -E cluster.name=geektime -E path.data=node2_data -E node.attr.my_rack_id=rack2
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.awareness.attributes": "my_rack_id"
}
}
PUT my_index1
{
"settings":{
"number_of_shards":2,
"number_of_replicas":1
}
}
PUT my_index1/_doc/1
{
"key":"value"
}
GET _cat/shards?v
DELETE my_index1/_doc/1
Forced Awareness
# Fore awareness
# 标记一个 rack 1
bin/elasticsearch -E node.name=node1 -E cluster.name=geektime -E path.data=node1_data -E node.attr.my_rack_id=rack1
# 标记一个 rack 2
bin/elasticsearch -E node.name=node2 -E cluster.name=geektime -E path.data=node2_data -E node.attr.my_rack_id=rack1
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.awareness.attributes": "my_rack_id",
"cluster.routing.allocation.awareness.force.my_rack_id.values": "rack1,rack2"
}
}
GET _cluster/settings
# 集群黄色
GET _cluster/health
# 副本无法分配
GET _cat/shards?v
GET _cluster/allocation/explain?pretty
```
分片设定及管理
单个分片
两个分片
集群增加一个节点后,Elasticsearch 会自动进行分片的移动,也叫 Shard Rebalancing