分布式梳理(一)

一.分布式availably

1.容错

1.1定义

Mesh Network Fault Tolerant

网络容错(Failover) 应用单一效劳器来搜集网络上各种不同装备的零碎记载,将能提供企业更无效 率的数据治理及平安稽核。

1.2本质

2.故障

2.1网络故障

网络主要问题有 延时,分割,丢包等

1.网络延时

2.网络切割参考

https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E5%88%87%E5%89%B2/11038967?fr=aladdin

有建网需求,就有网络产品或解决方案的销售行为,这里我们直接忽略销售环节,现在假设所有的售前 和销售环节都定下来了。那么接下去就是新网实施。网络建成后,一般来说服务交付中还有一块,就是给客户培 训,培训内容是关于网络就相关产品的实施、使用情况、维护方法等。紧接着网络就开始用了,使用过程中,可 能会有些小的调整性需求,例如 VLAN、IP 地址段的新增等,这就是网络维护。再有,网络难免出现故障,那么 就需要做故障处理。

那么如果网络在运行一段时间后,需要对网络进行改造、升级、迁移等变更,同时这些网络操作行为,又是 发生在一个正在承载业务流量的网络上,那么这种行为,就称为割接。

网络割接动作,可能是为了调整网络结构、新增或者替换网络设备、更换线路、更改设备配置或者其他针对 网络的变更需求。

3.网络丢包的四大原因和修复方法

  • 网络链接阻塞

    • [解决方法]

  • (路由器/交换机/防火墙/等等)的设备性能

    • [解决方法]

  • 网络设备上的软件问题(bug)

    • [解决方法]

  • 硬件或网络缆线的毛病

    • [解决方法]

2.11网络链接阻塞

数据在网络传输的过程中会经过很多设备和网路链接。 只要其中一个网路链接在数据传输过来之前已经满负载了,那么数据将会在这里阻塞一段时间,然后在经过网络线路传送(这也就是所谓的排队)。

解决方法

   我们可以通过以下两种方法来降低由网络链接阻塞引起的丢包的影响。

  • 增加阻塞链接的带宽

  • 使用Qos(流量优先级和资源保留控制机制)优先处理实时应用.尽管这种方法并不能缓解网络链接阻塞情况,但是它可以优先处理语音和视频来降低断线的可能性。

2.12网络设备上的软件问题(bug)

   我们可能都希望我们网络设备上的软件是完美的,但是我可以肯定的告诉你事实并不是如此。这些网络设备十分复杂.你遇到bug只是时间问题而已。   当你部署的新功能的时候,这些bug可能会导致新功能无法工作,或者你在没发现网络性能问题之前的一段时间,你可能无法察觉这些bug的存在。

解决方法

   你必须更新受软件问题影响的设备上的软件。

2.13硬件或网络缆线的毛病

   你的网络报告显示,你的网络链接并没有过载,硬件也没有违规使用。另外一个常见的导致丢包的问题可能是由物理组件的故障引起的。   如果硬件故障,那么它通常会在设备终端上或者系统日志中输出错误信息。   如果是网络链接错误,一般是网络接口出错。这可以在铜缆线和光纤上检测到。

解决方法

   故障的硬件必须更换, 故障的网络链接必须修复。   这些是网络丢包的常见原因。但是其他很多原因也会导致丢包。确定根源的最好的方法就是通过网络评估和彻底的故障排查。   一个擅长于发现的各种网络的问题的伙伴可以帮助你制定补救策略, 让你免受糟糕的网络的困扰。

2.2节点故障

2.21.节点crash

如何诊断RAC环境中节点重启问题进行了介绍。适用于10gR2和11gR1.

首先我们对能够导致节点重启的CRS进程进行介绍。

1.ocssd : 它的主要功能是节点监控(Node Monitoring)和组管理(Group Management),它是CRS的核心进程之一。节点监控是指监控集群中节点的健康,监控的方法是通过网络心跳(network heartbeat)和磁盘心跳(disk heartbeat)实现的,如果集群中的节点连续丢失磁盘心跳或网络心跳,该节点就会被从集群中驱逐,也就是节点重启。组管理导致的节点重启,我们称之为node kill escalation(只有在11gR1以及以上版本适用),我们会在后面的文章进行详细介绍。重启需要在指定的时间(reboot time,一般为3秒)内完成。

网络心跳:ocssd.bin进程每秒钟向集群中的各个节点通过私网发送网络心跳信息,以确认各个节点是否正常。如果某个节点连续丢失网络心跳达到阀值,misscount(默认为30秒,如果存在其他集群管理软件则为600秒),集群会通过表决盘进行投票,使丢失网络心跳的节点被主节点驱逐出集群,即节点重启。如果集群只包含2个节点,则会出现脑裂,结果是节点号小的节点存活下来,即使是节点号小的节点存在网络问题。

磁盘心跳:ocssd.bin进程每秒钟都会向所有表决盘(Voting File)注册本节点的状态信息,这个过程叫做磁盘心跳。如果某个节点连续丢失磁盘心跳达到阀值,disk timeou(一般为200秒),则该节点会自动重启以保证集群的一致性。另外,CRS只要求[N/2]+1个表决盘可用即可,其中N为表决盘数量,一般为奇数。

2.oclsomon:这个进程负责监控ocssd是否挂起,如果发现ocssd.bin存在性能问题,则重启该节点。

3.oprocd:这个进程只在Linux和Unix系统,并且第三方集群管理软件未安装的情况下才会出现。如果它发现节点挂起,则重启该节点。

接下来是诊断节点重启问题是经常搜集的信息。

1.操作系统日志

2.<crs主目录>/log/<节点名称>/cssd/ocssd.log

3.oprocd.log(/etc/oracle/oprocd/.log. 或 /var/opt/oracle/oprocd/.log.)

4.<crs主目录>/log/<节点名称>/cssd/oclsomon/oclsomon.log

5. Oracle OSWatcher 报告

2.22节点断电

一般来说,文件系统有以下的几种策略:

\1. 完全不管错误的事情,错了就错了;

\2. 打标记位的方式,如果怀疑有错,通过磁盘检测功能恢复;

\3. 在设计上保证文件系统结构上可恢复,但不保证用户数据可恢复;

\4. 能在用户数据层面上保证数据的绝对正确。

方案1:Copy-On-Write,写数据的时候不在原来的位置写,而是先读一份,然后写到另外一个位置,当确认写成功时,把文件系统的指针指向新的位置

方案2:日志(Journal)技术

你在文件后面新添加一段数据,其实一个文件就是一个链表,因此你有两种选择: 1、开辟空间 -> 链接上去 -> /断电/ -> 往最后一个节点写数据 2、开辟空间 -> 往最后一个节点写数据 -> /断电/ -> 链接上去

2.23节点磁盘损坏

核心:有效数据恢复,环境重建

3.冗余

3.1是否有中心

3.11中心化和去中心化

中心化去中心化的唯一区别就是有没有中心机构(central authority),讨论的其实是集中式分布式的区别(主要在于有没有单点失效),而臧大为的回答里“去中心化主要的优点就是躲避政府和法律监管”是加密不加密匿名不匿名的破事。中心化和去中心化也没有明显的界限,例如微信,从服务器的角度看来是去中心化分布式系统(消息传递的过程中没有中心机构,也没有单点失效),但是从用户的角度看来就是中心化集中式系统(腾讯就是中心机构嘛)。电子邮件和 XMPP 的 federated server 模式一般来说属于去中心化集中式系统,因为对一个用户来说,为他提供服务的实体存在单点失效的问题,但是从整个网络来看,每个服务器都管不着其他服务器,用户也可以随时切换服务提供者。即使是完全分布式系统也分为几种,有的系统是结构化系统, 一直说要搞的双曲 DHT 知乎也是结构化系统,总有一些节点无可取代),每个节点承担专门的角色,重新分配可能需要特殊的选举过程,例如所有的 DDBMS 都依赖于 Paxos 之类的结构化算法,而 I2P 和 Gnutella 一类的网络属于半结构化网络(比特币在这里是个特例,网络本身是无结构的,但是又极度依赖于矿工这个角色),节点之间存在角色差异,但是每个节点可以决定自己的角色。比特信(Bitmessage)网络则是无结构网络,每个节点能做的事情完全相同,就是(当然不一定只是)转发消息。

3.12中心化

3.121设计思想

中心化的设计思想很简单,分布式集群中的节点机器按照角色分工,大体上氛围两种角色: “领导”和“干活的”,“领导”通常负责分发任务并监督“干活的” 。

其中微服务架构Kubernetes就恰好采用了这一设计思路。

3.122优缺点

优点:控制简单


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值