赞
踩
目录
集群和分布式:
集群:多个人做一样的事。
分布式:多个人做不一样的事
集群解决的问题:
让系统高可用
分担请求压力
分布式解决的问题:
分担存储和计算的压力,提速
解耦
集群和分布式架构往往是并存的
es 集群:
ES集群相关概念:
vim kibana-7.4.0-linux-x86_64-cluster/config/kibana.yml
kibana.yml
#支持中文
i18n.locale: "zh-CN"
#5602避免与之前的冲突
server.port: 5602
server.host: "0.0.0.0"
server.name: "kibana-itcast-cluster"
elasticsearch.hosts: ["http://localhost:9201","http://localhost:9202","http://localhost:9203"]
elasticsearch.requestTimeout: 99999
PUT cluster_test
{
"mappings": {
"properties": {
"name":{
"type": "text"
}
}
}
}GET cluster_test
GET cluster_test/_searchPOST /cluster_test/_doc/1
{
"name":"张三"
}
测试类
- @Resource(name="clusterClient")
- RestHighLevelClient clusterClient;
-
- /**
- * 测试集群
- * @throws IOException
- */
- @Test
- public void testCluster() throws IOException {
-
-
- //设置查询的索引、文档
- GetRequest indexRequest=new GetRequest("cluster_test","1");
-
- GetResponse response = clusterClient.get(indexRequest, RequestOptions.DEFAULT);
- System.out.println(response.getSourceAsString());
-
- }
ElasticSearchConfig
- private String host1;
-
- private int port1;
-
- private String host2;
-
- private int port2;
-
- private String host3;
-
- private int port3;
-
- //get/set ...
-
- @Bean("clusterClient")
- public RestHighLevelClient clusterClient(){
- return new RestHighLevelClient(RestClient.builder(
- new HttpHost(host1,port1,"http"),
- new HttpHost(host2,port2,"http"),
- new HttpHost(host3,port3,"http")
- ));
- }
application.yml
elasticsearch:
host: 192.168.140.130
port: 9200
host1: 192.168.140.130
port1: 9201
host2: 192.168.140.130
port2: 9202
host3: 192.168.140.130
port3: 9203
分片配置
#分片配置
#"number_of_shards": 3, 主分片数量
#"number_of_replicas": 1 主分片备份数量,每一个主分片有一个备份
# 3个主分片+3个副分片=6个分片
PUT cluster_test1
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"name":{
"type": "text"
}
}
}
}
1.三个节点正常运行(0、1、2分片标号)
2.itcast-3 挂掉
3.将挂掉节点的分片,自平衡到其他节点
4.itcast-3 恢复正常后,节点分片将自平衡回去(并不一定是原来的分片)
分片与自平衡
注意:分片数量一旦确定好,不能修改。
索引分片推荐配置方案:
1.每个分片推荐大小10-30GB
2.分片数量推荐 = 节点数量 * 1~3倍
思考:比如有1000GB数据,应该有多少个分片?多少个节点
1.每个分片20GB 则可以分为40个分片
2.分片数量推荐 = 节点数量 * 1~3倍 --> 40/2=20 即20个节点
查询id为5的文档:假如hash(5)=17 ,根据算法17%3=2
ElasticSearch 集群正常状态:
脑裂现象:
脑裂产生的原因:
1.网络原因:网络延迟
2.节点负载
3.JVM内存回收
避免脑裂:
1.网络原因:discovery.zen.ping.timeout 超时时间配置大一点。默认是3S
2.节点负载:角色分离策略
候选主节点配置为
数据节点配置为
3.JVM内存回收:修改 config/jvm.options 文件的 -Xms 和 -Xmx 为服务器的内存一半。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。