非常好奇,服务器集群是怎么实现的,比如IIS

非常好奇,服务器集群是怎么实现的,比如IIS,第1张

集群,无非就是一大波服务器而已

高可用集群<HA>:简单的就是一台服务器坏掉了,服务可以自动切换到另外一台,比如keeplive热备

负载均衡集群<LB>:就是把流量分到n台服务器,访问人数多时会用,先访问分发服务器,然后分发根据自己的算法分给后面的服务器,比如nginx、LVS

科学计算机集群HPC:就是讲好多好多好多服务器连在一起执行任务,比如.........这个没有玩过

至于这么实现,都是软件啦,还有一种叫高可用负载均衡集群,就是将12都做到

查看集群健康状况:URL+ /GET _cat/health

Cluster

代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

Shards

代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

replicas

代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

Recovery

代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

(2)、ES为什么要实现集群

在单台ES服务器节点上,随着业务量的发展索引文件慢慢增多,会影响到效率和内存存储问题等。

我们可以采用ES集群,将单个索引的分片到多个不同分布式物理机器上存储,从而可以实现高可用、容错性等。

ES集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本。通过将一个单独的索引分为多个分片,我们可以处理不能在一个单一的服务器上面运行的大型索引,简单的说就是索引的大小过大,导致效率问题。不能运行的原因可能是内存也可能是存储。由于每个分片可以有多个副本,通过将副本分配到多个服务器,可以提高查询的负载能力。

(3)、ES是如何解决高并发

ES是一个分布式全文检索框架,隐藏了复杂的处理机制,内部使用 分片机制、集群发现、分片负载均衡请求路由。

Shards 分片:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

Replicas分片:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

1、每个索引会被分成多个分片shards进行存储,默认创建索引是分配5个分片进行存储。每个分片都会分布式部署在多个不同的节点上进行部署,该分片成为primary shards。

注意:索引的主分片primary shards定义好后,后面不能做修改。

2、为了实现高可用数据的高可用,主分片可以有对应的备分片replics shards,replic shards分片承载了负责容错、以及请求的负载均衡。

注意: 每一个主分片为了实现高可用,都会有自己对应的备分片,主分片对应的备分片不能存放同一台服务器上。主分片primary shards可以和其他replics shards存放在同一个node节点上。

3、documnet routing(数据路由)

当客户端发起创建document的时候,es需要确定这个document放在该index哪个shard上。这个过程就是数据路由。

路由算法:shard = hash(routing) % number_of_primary_shards

如果number_of_primary_shards在查询的时候取余发生的变化,无法获取到该数据

注意:索引的主分片数量定义好后,不能被修改

高可用视图分析(下图所示:上面的图,如果节点1与节点2宕机了,es集群数据就不完整了。下面图,如果节点1与节点2宕机了,es集群数据还是完整的)

(1)、服务器环境

准备三台服务器集群

| 服务器名称 | IP地址 |

| node-1 | 192.168.212.182 |

| node-2 | 192.168.212.183 |

| node-3 | 192.168.212.184 |

(2)、关闭防火墙

(3)、**** http://192.168.212.185:9200/_cat/nodes?pretty

*号表示为master节点

注意:

注意克隆data文件会导致数据不同步

报该错误解决办法 :

failed to send join request to master

因为克隆导致data文件也克隆呢,直接清除每台服务器data文件。

不⽤安装:AppArmor和 32-bit runtime environment

仅安装以下四项即可:

修改每台服务器的主机名,示例如下

【可选】配置服务器的⽹络,如IP、 bondyast lan

建议重启,确保主机名修改成功

本⽂档使⽤本地⽂件模式,不依赖额外的设备与服务,但是会在每个节点占⽤约15GB的本地磁盘空间

1.sles⽬录⽤于原版SLES 12 sp3操作系统的⽂件存放

2.ses⽬录⽤于原版SES 5.0的⽂件存放

修改 /etc/hosts ⽂件,新增记录,示例如下注意:系统会⾃动添加⼀条本机的记录,注意不要重复,避免冲突

192.168.1.102 node1.fiberhome.com node1

192.168.1.103 node2.fiberhome.com node2

192.168.1.104 node3.fiberhome.com node3

192.168.1.105 node4.fiberhome.com node4

【可选】集群节点数检查,默认需要4台服务器,每台8个OSD

deepsea stage run ceph.stage.0 等同于 salt-run state.orch ceph.stage.0

【必选】配置服务器的⻆⾊

编辑 /srv/pillar/ceph/proposals/policy.cfg

推荐policy.cfg第⼀⾏添加如下内容:

【可选】修改SES集群的⽹络配置

编辑 /srv/pillar/ceph/proposals/config/stack/default/ceph/cluster.yml

【可选】⽣成新的配置⽅案(不同的硬件配置会有不同的配置⽅案,以达到最优效果)

示例如下

查看上述命令的具体含义


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/287412.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-23
下一篇2023-04-23

发表评论

登录后才能评论

评论列表(0条)

    保存