集群-基础知识(1)

背景

随着互联网访问量的急剧增加,单台服务器的能力已严重不能满足需求。则需要从两个方面考虑提高服务能力:1、向上扩展,2、向外扩展

向上扩展的缺点:

1、造价高

2、随着性能的提高,会在某个临界点遇到瓶颈,导致性能随后降低。

向外扩展的优点:

1、造价低

2、提供高并发能力和高可用性

3、可扩展性好。

分类

负载均衡集群(Load Balance)

高可用集群(High Availability Cluster)

高性能集群(High performance computing)

负载均衡集群:由于电信运行商dns的原因,所以不能靠dns来做负载均衡,必须通过前端调度器将请求分发至后端的服务器,以提高并发访问量。但随着访问量的提高,调度器和存储等的限制,访问速度会成为瓶颈,所以需对网站进行功能切分,分别做集群,例如门户网站的分类。为了保证后端服务器提供的内容一致性,网页的静态内容使用rsync+inotify的机制做同步。一个web页面包含多个web对象,而目前的浏览器都支持多线程,所以来自客户端的请求,可能并发多个请求,调度器分发至多个后端服务器,可以提高网页的打开速度。而调度器具有health check的能力,能将挂了的主机移除,也能将恢复的主机加进集群。

优点:提高并发处理能力

高可用集群:可以提高服务的在线能力、服务可用性。例如有两台主机提供web服务,A作为正常提供服务的主机,B作为备用的主机,A不断地将自己的心跳信息用组播的方式传递给B,而B也能去检查A的心跳信息。当B不能得到A的心跳后,则会通过电源交换机关闭A的电源,并将A的ip地址夺过来,启动A之前提供的服务,以提高服务的在线能力。若是多台主机的高可用集群,还可以设置备节点的优先级,来响应主节点挂掉后的动作。

高可用集群传递的不只是心跳信息,还有事务信息(优先级等)。而负责协调完成事务的节点叫做DC(节点中的一台),若DC挂了,则其他主机间推选一个即可。

负载均衡集群和高可用集群的主要区别:

负载均衡集群提供并发处理能力,提供health check

高可用集群提供服务的始终在线能力,提供heartbeat

高性能集群:利用分布式文件系统将复杂问题分解为小问题并行处理。

由于高可用集群的效率不是很高(备份的主机会造成资源浪费),所以需要提高。例如web服务和邮件服务分别在A、B主机启动,然后它俩互为主备,则可以提高效率。但高可用集群在某一时刻资源只能在一台主机上启动。

脑裂:是因为cluster分裂导致的,cluster集群中节点因为处理器忙或者其他原因暂时停止响应时,其他节点可能误认为该节点“已死”,从而夺取共享磁盘(即资源)的访问权,此时极有可能假死节点重新对共享文件系统产生读写操作,从而导致共享磁盘文件系统损坏。

stonith:爆头,shoot the other node in the head通过电源交换机切断检测不到心跳信息的主机的电源。

隔离:fancing,拒绝某个节点访问某个资源。分为节点隔离(stonith)和资源隔离。

为了防止集群脑裂,集群节点应该为3或3个以上的奇数个。

其他知识:

DAS:直接附加存储。内核直接操作块设备的数据。若不同主机同时访问同一文件,则会造成写错误。但效率高。

NAS:网络附加存储。是文件级别的操作,第一个主机写数据时会施加锁,第二个主机就不能写。性能要比DAS差。


原创文章,作者:黑白子,如若转载,请注明出处:http://www.178linux.com/9468

(0)
黑白子黑白子
上一篇 2015-11-26 16:39
下一篇 2015-11-26 16:41

相关推荐

  • 正则表达式详解​

      正则表达式详解 一、概述   GREP(global search regular expression(RE) and print out theline),是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。利用这些返回值就可进行一些自动化的文本处…

    Linux干货 2015-05-11
  • sed命令实战

    1、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符  [root@centos7 ~]# sed -r 's#^[[:space:]]+##g' /etc/grub2.cfg # # DO NOT EDIT THI…

    Linux干货 2016-08-15
  • 初识shell脚本编程

    shell脚本基础 shell脚本是包含一些命令或声明,并符合一定格式的文本文件 一般格式要求: 1.首行shebang机制 #!/bin/bash #!/bin/python #!/usr/bin/perl 2.注释信息 以#开头,可写明脚本用途,作者,版本,时间等 3.脚本正文内容, 创建shell脚本 以bash为例 第一行定格#!/bin/bash …

    Linux干货 2016-08-15
  • N26-第五周作业-邢岩

    马哥门徒-N26-邢岩    我要继续今天的博客,《一万小时天才理论》里提到了髓鞘质,我是不是正在慢慢的给自己包裹一层髓鞘质呢?如果还没有,那么继续吧。    第一题:显示当前系统上root、fedora或user1用户的默认shell。      ~]# grep -E &#8…

    2017-02-24
  • OPENSSL&DNS

      1、详细描述一次加密通讯的过程,结合图示最佳。 Client 从互联网下载CA的公钥,用于验证Server身份 Server 通过加密算法生成一对密钥,将公钥发给CA认证机构,做数字证书 CA 通过自己的私钥加密 Server 公钥并加上自己的数字签名后,将生成的数字证书发给Server Client 与 Server 通TCP的三次握手建立连…

    Linux干货 2016-12-05
  • 学习伊始宣言

    学习后的状态 以人事相宜为追求,优化职业资质 以胜任愉快为目标,保持职业体能 以创造绩效为主导,开发职业意识 以适应市场为基点,修养职业道德 学习宣言 如果不踏出第一步就永远也不可能到达目的地,让我们从此刻出发

    Linux干货 2016-11-28