高可用集群概念

HA cluster: 高可用集群

集群类型:

  • LB(lvs、nginx(http_upstream/stream_upstream))
  • HA
    • 数据库、Zookeeper、Redis
    • SPoF(解决单点故障)
  • HP
  • HPC:High Performance Computing 高性能集群

系统高可用性

SLA:Service-Level Agreement 服务等级协议(提供服务的企业与客户之间就服务的品质、水准、性能等方面所达成的双方共同认可的协议或契约)

公式

A=MTBF/(MTBF+MTTR)
A=平均无故障时间/(平均无故障时间+平均修复时间)

指标

99.9%, 99.99%, 99.999%,99.9999%
99.95%=(602430)*(1-0.9995)=21.6分钟 一般按一个月停机时间统计

实现高可用

提升系统高可用的解决方案: 降低MTTB
解决方案: 冗余(redundant)

active/passive(主备)、active/active(双主)
active-->心跳-->passive
active-->心跳-->axtive

高可用相关技术:

高可用的服务:
  • HA server:vip、server process、shared storage
    • 资源: 组成一个高可用服务的组件,也就是各个服务,如vip、服务进程、共享存储
  • 共享存储:
    • NAS 网络附加存储,基于网络的共享文件系统
    • SAN 存储区域网络,基于网络的块级别的共享
  • keepalived
  • heartbeat、corosync(专业级别的高可用)
高可用模型分三层:

高可用本身是需要通过软件来完成,在服务器上运行一个额外的软件,该软件的主机组成一个高可用集群

第一层(最低层): messaging layer(消息层) 、heartbeat layer(心跳层)、基础架构层

用来实现各个主机通信、相互监听、传递健康状态

第二层: cluster resource manager(crm)

只能基于在本地工作的心跳层,给出的信息来判断,别的节点是否故障了、挂了。本身不具备与其他主机通信的能力,且只能用来根据信息判断后,做决策、做计划,但不能执行

第三层: local resource manager(LRM)

根据第二层的资源管理器做出的决策、来启动本地的某服务,但不会自己亲自启动,而是交给第四层的代理启动

第四层: resource agent(RA)

通过启动用户手动指定内容,具体的资源、服务用户决定(systedm、init进程代理启动)

高可用的资源判定:
网络分区network partition:

一般高可用集群要奇数,A、B、C三个主机,B和C不能与A通信时,会判定A故障,没有挂掉也会把A隔离起来,然后B和C再选举,少数服从多数,谁来当老大,把资源都拿过来,或做主集群

隔离: 用来避免A主机挂了,结果是误判,A还会回来抢资源

手段:

  • STONITH:节点隔离。爆头机制。所有的集群主机都连接到一个电源主控,A挂掉时,B和C选举后的老大,发送信号,断了A主机的电源、或让A重启
  • FENCE:资源隔离。三个主机都使用一个块设备共享存储时,避免A挂掉时,没有卸载块设备,还在对存储设备进行写操作,B和C选出来的老大,会限制存储设备对A主机的访问。然后老大拿到A的资源后,请求的内容、操作继续

注意:选举方式根据协议来,更多协议可查看论文:《paxos》、《raft》
参考资料:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/high_availability_add-on_reference/s1-unfence-haar

高可用服务集群的规划:
N(主机)/M(服务)

A主机可httpd、B主机可mysql、C主机备用。当A挂了,C的httpd开始启用
一般服务会设置优先级,httpd服务更优先在A主机运行,mysql服务更优先在B主机运行

N(主机)/N(服务)

A运行nginx,B运行nfs,C运行ftp。当A挂了,可以把nginx服务资源转给C主机,等A修复后,可以再把资源转回来

HA Cluster实现方案:

AIS:

Applicaiton Interface Specification 应用程序接口规范

RHCS:Red Hat Cluster Suite 红帽集群套件, 参考资料:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/5/html/cluster_suite_overview/ch.gfscs.cluster-overview-cso
heartbeat: 基于心跳监测实现服务高可用
pacemaker+corosync: 资源管理与故障转移

VRRP(Virtual Router Redundancy Protocol):

虚拟路由冗余协议,解决静态网关单点风险
物理层: 路由器、三层交换机
软件层: keepalived

VRRP网络层硬件实现:

参考链接:

vrrp原理:

两个路由器,在本地虚拟出一个ip,将两个路由器绑定,只提供一个ip地址,A路由挂了,ip自动转移到B路由接手

通告方式:

心跳、优先级。周期性进行

VRRP术语:
  • VR: 虚拟路由器的ip地址
  • VIP: 虚拟路由器的ip地址
  • VRID: 虚拟路由器的标识,4块网卡,一个网卡可以单独设置一个虚拟路由器,也可以全部组成一个虚拟路由器,也可以一个网卡多ip多虚拟路由器、各个通过VRID区分
  • Master路由器: 当前正在工作的虚拟路由器
  • Backup路由器: 非工作状态的,可一主多备、一主一备
  • VMAC虚拟MAC地址: A路由挂了,VIP转到B路由,但tcp通信是基于mac地址的,服务器的的ARP缓存中还是A路由的mac地址,所以,每次VIP转移后,master路由都必须主动发起一次主动、免费的ARP广播,告诉所有人,后端服务器会发现VIP对应的MAC地址已经变动,就更新arp缓存。只有极少数配置情况下,才会用主机的物理网卡mac地址
  • 优先级: VRRP根据优先级来确定虚拟路由器中每台路由器的地位
  • 抢占式: 如果backup路由器在抢占式状态下工作,当她收到arp报文后,比较自己于master的优先级,如果高,则会主动抢占成为master,否则不变
  • 非抢占式: 只要master不故障,backup就不会抢资源
安全认证:
  • 无认证
  • 简单字符认证(最长8字符的混淆),预共享密钥
  • MD5(keepalived不支持)
工作方式:
  • 主/备:单虚拟路由器
  • 主/主:A主机1号ip做虚拟器一,2号ip做虚拟器二
posted @ 2023-11-25 22:36  suyanhj  阅读(35)  评论(0)    收藏  举报