@

1. 问题描述

在项目中使用了Greenplum做分析型数据库,Greenplum自身已经提供了高可用方案,Master节点提供Sdanby备用节点,Segment数据节点每个节点都有对应mirro节点。

但是Greenpplum提供的高可用方案,其实是存在缺陷的,就是master节点出现故障后,standby节点是不会自动启动的,需要人工干预(segment数据节点会自动切换),这样就会导致两个问题:

(1)当Greenpplum的Master节点出现故障后,需要人工干预去激活并切换到Standby节点,一般公司是有运维团队的,会通过进程监控并通知相关人员来处理,但是这个过程是需要一定时间的,假如用户在使用,肯定会有所感知的,会影响实际业务。

(2) 最致命的是将主节点切换到Standby节点后,Greenpplum的访问IP发生了变化,这时候连接Greenpplum的Web服务必须修改连接IP才能访问,一般情况下是需要重启应用服务器的,假如连接Greenpplum的是多个系统,并且是以集群的方式部署启动的的,重启的代价可能会很高。

2. 解决方案

2.1 Greenplum架构简单介绍

2.1.1 Greenplum架构图

​ 数据库连接通过Master节点进行访问,跟oracle、mysql、postgre等关系型数据库连接方式一样

2.1.2 Greenplum提供的高可用方案

主节点Master节点有standby备用节点,数据节点segement存在mirrio(一般存储在临近服务器上)。

2.2 使用keepalived+greenplum实现真正的高可用

2.2.1 keepalived+greenplum架构图

2.2.2 架构图解析

(1) 在Greenplum的master节点和standby节点部署keepalive服务,使用keepalive监控greenplum的进程状态和服务可用性;

(2) 采用keeplived的机制,在master和standby 上面生成一个虚拟IP,应用系统配置的连接地址为该虚拟IP地址,当master节点出现故障后,由Keepalived机制来保证切换到standby节点,需要特别注意的是切换到standby节点的时候,需要首先激活Standby节点,这样就解决了greenplum主备节点的无缝切换

2.3 高可用方案存在的问题

该高可用方案是通过比较成熟的keepalived来保证主从节点的切换,弥补了Greenplum本身高可用架构的不足,基本能解决大部分问题,认为是可行的。

但是也存在不足之处,就是假如主节点上的keepalived出现了故障,但是Greenplum服务正常;这时候虚拟IP已经漂移到Standby对应IP节点,但是因为Greenplum的Master服务其实是正常,Standby服务会激活失败,进而导致服务不可用,但是该情况几率较小,后续可以考虑将keepalived进程增加到运维进程监控中。


Greenplum高可用真的高吗?的更多相关文章

  1. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  2. 15套java架构师、集群、高可用、高可扩 展、高性能、高并发、性能优化Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

  3. 面试连环炮系列(一):如何保证Redis高可用和高并发

    如何保证Redis高可用和高并发? Redis主从架构,一主多从,可以满足高可用和高并发.出现实例宕机自动进行主备切换,配置读写分离缓解Master读写压力. Redis高可用方案具体怎么实施? 使用 ...

  4. HttpClient客户端网络编程——高可用、高并发

    本文是HttpClient的学习博客,RestTemplate是基于HttpClient的封装,feign可基于HttpClient进行网络通信. 那么作为较底层的客户端网络编程框架,该怎么配置使其能 ...

  5. 七、Hadoop3.3.1 HA 高可用集群QJM (基于Zookeeper,NameNode高可用+Yarn高可用)

    目录 前文 Hadoop3.3.1 HA 高可用集群的搭建 QJM 的 NameNode HA Hadoop HA模式搭建(高可用) 1.集群规划 2.Zookeeper集群搭建: 3.修改Hadoo ...

  6. 使用glusterfs 作为 kubernetes PersistentVolume PersistentVolumeClaim 持久化仓库,高可用Rabbitmq,高可用mysql,高可用redis

    glusterfs 怎么集群,网上一搜铺天盖地的 可利用这个特点做单节点高可用,因为K8S 哪怕节点宕机了 master 会在随意一台节点把挂掉的复活 当然我是在自己的环境下跑,经过网络的gluste ...

  7. SpringCloud高可用和高并发

    1 高可用 什么是高可用:(High Availability)在一个长时间内服务不受影响.通俗的讲就是,一个机器挂掉的时候,有其他机器可以继续提供同样的服务. 如何实现高可用:冗余+自动故障转移.冗 ...

  8. springcloud微服务多节点高性能、高可用、高并发部署

    1. 共有三个服务 discovery服务,domain服务,gateway服务. discovery服务是用来注册其他服务的,作为服务治理用. domain服务是主业务服务. gateway服务是所 ...

  9. (5.1)mysql高可用系列——高可用架构方案概述

    关键词:mysql高可用概述,mysql高可用架构 常用高可用方案 20190918 现在业内常用的MySQL高可用方案有哪些?目前来说,用的比较多的开源方案分内置高可用与外部实现,内置高可用有如下: ...

随机推荐

  1. python3 提示No module named _sqlite3

    yum install sqlite-devel 下载python3.6.3  重新编译安装 ./configure --enable-loadable-sqlite-extensions & ...

  2. .Net Core中使用NodeJs加解密DES,MD5,AES,REA

    鉴于使用.net core我们的加解密也同时迁移到了跨平台上,我使用的是NodeJs加解密的.废话不多说了,还是来干活吧. 1.创建Node项目 2.添加package.json {  "n ...

  3. 详解 Java 8 HashMap 实现原理

    HashMap 是 Java 开发过程中常用的工具类之一,也是面试过程中常问的内容,此篇文件通过作者自己的理解和网上众多资料对其进行一个解析.作者本地的 JDK 版本为 64 位的 1.8.0_171 ...

  4. Android Xposed框架出现java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation问题

    第一次玩Xposed框架,按照多个demo的格式写了一个demo发现死活不进入 public abstract void handleLoadPackage(LoadPackageParam lppa ...

  5. 微信小程序把玩(二十九)video组件

    原文:微信小程序把玩(二十九)video组件 视频播放组件与图片加载组件也没啥差别,使用起来也没啥注意的 重要属性: wxml <!--监听button点击事件--> <button ...

  6. mysql自动化安装脚本(二进制安装)

    为了日后安装数据库方便,遂写了一个自动安装MySQL的脚本: 测试可以安装mariadb和MySQL-5.7.X 安装前配置好对应的my.cnf文件放在/tmp路径下 将启动脚本mysql3306放在 ...

  7. 如何在 Linux 中添加一块大于 2TB 的新磁盘?

    你有没有试过使用 fdisk 对大于 2TB 的硬盘进行分区,并且纳闷为什么会得到需要使用 GPT 的警告? 是的,你看到的没错.我们无法使用 fdisk 对大于 2TB 的硬盘进行分区. 在这种情况 ...

  8. Aria2在Windows上如何安装配置使用

    一.下载所需的软件 二.安装与使用 三.Aria2的额外内容 四.Aria2的使用 五.Aria2与其它插件配合使用 一.下载所需的软件 可以从一下地址获取最新版本 GitHub: https://g ...

  9. 深入解析Windows窗口创建和消息分发(三个核心问题:怎么将不同的窗口过程勾到一起,将不同的hwnd消息分发给对应的CWnd类去处理,CWnd如何简单有效的去处理消息,由浅入深,非常清楚) good

    笔记:争取不用看下面的内容,只看自己的笔记,就能记住这个流程,就算明白了: _tWinMain-->AfxWinMain,它调用四个函数: -->AfxWinInit用于做一些框架的初始化 ...

  10. 注册表Demo

    一.获取安装程序信息 #include <windows.h> #include <iostream> #include <string> #include < ...