最底层是通信层corosync/openais

负责cluster中node之间的通信

上一层是Resource Allocation Layer,包含下面的组件:

CRM Cluster Resouce Manager

是总管,对于resource做的任何操作都是通过它。每个机器上都有一个CRM。

CIB Cluster Information Base

CIB由CRM管理,是在内存中的XML数据库,保存了cluster的配置和状态。我们查询出来的configuration都是保存在CIB里面的。nodes, resources, constraints, relationship.

DC Designated Coordinator

每个node都有CRM,会有一个被选为DC,是整个Cluster的大脑,这个DC控制的CIB是master CIB,其他的CIB都是副本。

PE Policy Engine

当DC需要进行一些全局配置的时候,首先由PE根据当前的状态和配置,计算出将来的状态,并生成一系列的action,使得cluster从初始状态变为结果状态。PE仅仅在DC上运行。

LRM Local Resource Manager

本地的resource管理,调用resource agent完成操作,启停resource,将结果返回给CRM

再上一层是Resource Layer

包含多个resource agent。resource agent往往是一些shell script,用来启动,停止,监控resource的状态。

root@pacemaker01:~# ps aux | grep pace
root      3363  0.0  0.1  81812  3748 ?        Ss   Jul28   0:06 /usr/lib/pacemaker/lrmd
haclust+  3365  0.0  1.1 114428 23808 ?        Ss   Jul28   0:03 /usr/lib/pacemaker/pengine
root     20103  0.0  0.2 107496  4532 pts/2    S    10:06   0:00 pacemakerd
haclust+ 20105  0.0  0.6 110244 12560 ?        Ss   10:06   0:00 /usr/lib/pacemaker/cib
root     20106  0.0  0.3 107248  6680 ?        Ss   10:06   0:00 /usr/lib/pacemaker/stonithd
haclust+ 20107  0.0  0.2  96640  4148 ?        Ss   10:06   0:00 /usr/lib/pacemaker/attrd
haclust+ 20108  0.0  0.4 166536  9172 ?        Ss   10:06   0:00 /usr/lib/pacemaker/crmd

流程

比如要添加一个Cluster IP

  1. 命令行将Cluster IP加入CIB
  2. DC将CIB的修改同步到所有的crmd
  3. DC上的PE计算如何部署这个Cluster IP,在哪个node上,做什么操作
  4. DC将操作列表同步到所有的crmd
  5. 每个crmd调用本地的lrmd做真正的部署
  6. lrmd调用resource agent来启动或者停止一些操作
  7. lrmd操作完,将结果返回给DC

High Availability手册(2): 架构的更多相关文章

  1. Data Center手册(1):架构

    如图是数据中心的一个基本架构 最上层是Internet Edge,也叫Edge Router,也叫Border Router,它提供数据中心与Internet的连接. 连接多个网络供应商来提供冗余可靠 ...

  2. libguestfs手册(1): 架构

    要编辑一个image,则运行下面的命令 guestfish -a ubuntutest.img ><fs> 会弹出一个命令行工具 运行run ><fs> run 我 ...

  3. Openvswitch手册(1): 架构,SSL, Manager, Bridge

    Openvswitch是一个virutal swtich, 支持Open Flow协议,当然也有一些硬件Switch也支持Open Flow协议,他们都可以被统一的Controller管理,从而实现物 ...

  4. High Availability手册(3): 配置

    各种配置在命令行状态下,多用crm进行 Global Cluster Options 这个类型是全局配置,主要包含下面两个: no-quorum-policy quorum的意思是最低法定人数,pac ...

  5. High Availability手册(1): 环境

    三台KVM虚拟机 首先我们得有一个pacemaker的环境,需要三台机器,如果没有那么多物理机器,可以用kvm虚拟机 创建一个bridge ovs-vsctl add-br ubuntu_br ifc ...

  6. 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(2)

    二.nova-api 步骤3:nova-api接收请求 nova-api接收请求,也不是随便怎么来都接收的,而是需要设定rate limits,默认的实现是在ratelimit的middleware里 ...

  7. 高可用(HA)架构

    http://aokunsang.iteye.com/blog/2053719   浅谈web应用的负载均衡.集群.高可用(HA)解决方案 http://zhuanlan.51cto.com/art/ ...

  8. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  9. 【转】【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    原文地址:http://www.cnblogs.com/baiboy/p/orc1.html 阅读目录 目录 集群概念介绍 什么是集群 为什么搭建数据库集群 数据库集群的分类 可扩展的分布式数据库架构 ...

随机推荐

  1. springboo+nginx测试反向代理01

    操作环境:centos7,springboot2.1,nginx1.8.1 boot程序链接地址 : https://github.com/zgq7/nginxDemo nginx下载地址: http ...

  2. Flask路由&视图

    1 路由  1.1app.url_map 查看所有路由 from flask import Flask app = Flask(__name__) @app.route('/') def hello_ ...

  3. Linux系统基本结构——摘自《循序渐进linux》

    系统与硬件 系统资源管理器 查看系统PCI设备 lspci 列出所有的pci设备如主板.声卡.显卡.网卡.usb接口设备 lspci -v 更详细的pci信息 查看cpu信息 more /proc/c ...

  4. XmlReader 使用

    <Root> <Phone Name="Oppo手机"> <BackGround Description="颜色">白色 黑 ...

  5. angular2报错

    1.运行ng serve的时候卡在95% emitting LicenseWebpackPlugin 放弃使用cnpm,使用yarn 删除node_modules (不需要删除project目录重新n ...

  6. Netty5客户端源码解析

    Netty5客户端源码解析 今天来分析下netty5的客户端源码,示例代码如下: import io.netty.bootstrap.Bootstrap; import io.netty.channe ...

  7. Codeforces 258D Little Elephant and Broken Sorting (看题解) 概率dp

    Little Elephant and Broken Sorting 怎么感觉这个状态好难想到啊.. dp[ i ][ j ]表示第 i 个数字比第 j 个数字大的概率.转移好像比较显然. #incl ...

  8. DS博客作业01-日期抽象数据类型设计和实现

    1.思维导图及学习体会 1.1第一章绪论知识点思维导图 1.2 学习体会 这周刚刚学习了数据结构绪论和一部分线性表的知识,因为寒假提前预习了一会儿,在课堂上可以较快理解老师讲的内容.但是在c++语法上 ...

  9. linux使用storcli64查看硬盘信息

    使用storcli查看硬盘信息: rpm -ivh storcli--.noarch.rpm cd /opt/MegaRAID/storcli/ ./storcli64 /c0(零) show 链接: ...

  10. golang struct 和 byte互转

    相比于encoding, 使用unsafe性能更高 type MyStruct struct { A int B int } var sizeOfMyStruct = int(unsafe.Sizeo ...