Postgres 史上最垃圾的高可用软件之 - CLup

news2024/11/17 13:23:48

1. Clup 简介

CLup最大的特色功能是高可用。目前已存在几个开源的高可用软件:

  • keepalived: 是一个较简单的高可用软件,其最早是于用LVS负载均衡软件,现在也常常用于ngnix的高可用,也可以用于数据库领域,但需要自己定制切换脚本才能完成数据库的高可用功能,另keepalived基于VRRP协议实现的,其存在着脑裂的问题。
  • haproxy: 通常是用于http等web应用,较少使用于数据库领域
  • Heartbeatpacemaker+corosync: 这两个软件是通用型高可用软件,并不是专为PostgreSQL设计,安装时需要安装很多依赖包,有很多的配置,比较复杂,如果不是非常精通的人员搭建出来的高可用集群,经常容易出现误切换等问题
  • repmgr:是一个套针对于PostgreSQL数据库的高可用方案,相对其他的高可用方案来说,相对比较简单。不足之处在于没有对VIP的管理,如果要实现VIP的管理,需要自己写脚本来实现。
  • patroni:是另一个套针对于PostgreSQL数据库的高可用方案,相对repmgr来说,复杂一些。不足之处与repmgr类似,没有实现对VIP的管理,如果要实现VIP的管理,需要自己写脚本来实现
  • pgpool-II: 是PostgreSQL数据库领域比较常见的高可用软件,其最早是做为连接池来使用的,pgpool-II除了高可用功能外,设计了一些更复杂的使用模式,对于初学者来说,如果没有深入的学习pgpool-II,根本搞不清楚复制模式、主备模式、并行查询模式的区别。实际上pgpool-II这么多的模式真正在企业中可以使用的模式基本只有“流复制+Standby的主/备模式”,其它模式都有各种各样的缺点,实用性不强。但由于这些绝大多数使用不上的功能,导致pgpool-II的配置很复杂,稍有不慎就容易发生因为配置不合理而导致的重大事故。

但上面这些开源软件无一例外有以下这些问题:

  • 需要自己实现一些脚本才能完整实现高可用的功能
  • HA的切换的配置有一定的复杂度,文档中对一些高可用切换原理性和参数介绍得较少或介绍得晦涩难懂,难以掌握,如果没有深入的学习,容易出现错误的配置,从而导致一些严重得故障
  • 无集中管理的功能,无法一套软件同时管理多套高可用集群,增加了运维工作的难度

所以 中启乘数科技 为PostgreSQL数据库量身定制一套最符合PostgreSQL用户的高可用及监控管理的软件,让企业可以快速搭建一套高可靠、高可用、高性能的数据库,同时满足易管理维护、集中管理的一套数据库解决方案。

2.Clup 安装

2.1 安装基础

CLup程序分两个模块:

  • clup-server: 通常需要一台单独的机器安装此模块,此管理模块提供WEB界面以及其他的管理功能,高可用功能也是由此模块完成。clup-server从这台机器上去探测各个数据库是否正常,如果不正常,会执行相应的高可用切换动作。要求这台机器可以访问所有的数据库主机。
  • clup-agent: 每台数据库主机上都需要安装此模块,clup-server模块是通过向每台数据库主机上的clup-agent程序发送命令来完成对每台机器上的数据库的控制。
    在这里插入图片描述

机器规划

主机IP作用数据目录
Ufo00139.106.66.132部署clup-serverN/A
Ufo00239.106.17.174数据库机器,部署clup-agent/data/pgdata
Ufo00339.106.133.186数据库机器,部署clup-agent/data/pgdata
Ufo00439.107.72.46数据库机器,部署clup-agent/data/pgdata

2.2 环境依赖

CLUP管理模块需要安装到一台独立的机器上,对此机器的配置不需要很高,具体需求如下:

  • X86或ARM64的服务器
  • 对CPU基本没有要求
  • 4G内存以上
  • 硬盘20G以上,如果使用TopSQL的功能,建议200G以上磁盘空间。

CLUP管理机器以及clup-agent部署的数据库库主机上需要安装以下依赖包:

yum install -y tcl tcl-devel tk

注意:clup-agent机器上需要安装ipmitool工具、arping包以及psmisc.x86_64包,clup-agent需要使用ipmitool中的ipmitool命令和arping包中的arping命令来以及psmisc.x86_64包中的fuser命令。

如果在CentOS或Redhat等操作系统下,安装命令如下:

yum install ipmitool.x86_64
yum install psmisc

注意:clup-server和clup-agent模块都需要运行在操作系统的 root 用户下。

CLUP目前支持PostgreSQL9.5以上的版本,不支持PostgreSQL9.5以下的版本。

注意:数据库软件中需要安装 pg_stat_statements 插件。

2.3 安装 clup-server

ufo001 机器上:

安装clupmdb模块,下载clupmdb安装包:

[root@ufo001 ~]# wget https://gitee.com/csudata_admin/clup-community/releases/download/4.2.5/clupmdb4.0.0.el7.x86_64.bin

运行:bash clupmdb4.0.0.el7.x86_64.bin:

[root@ufo001 ~]# bash clupmdb4.0.0.el7.x86_64.bin
==== Installation is starting ...
Loaded plugins: fastestmirror
Determining fastest mirrors

安装clup-server模块,下载clup-server安装包:

[root@ufo001 ~]# wget https://gitee.com/csudata_admin/clup-community/releases/download/4.2.5/clup4.2.5.el7.x86_64.bin

运行:bash clup4.2.5.el7.x86_64.bin:

[root@ufo001 ~]# bash clup4.2.5.el7.x86_64.bin
==== Installation is starting ...
==== Your ip is 39.106.66.132/20
==== register systemd service ...
already register systemd service!
==== register systemd service ok.
==== Installation is complete.

然后我们在浏览器输入 http://39.106.66.132:8090 ,打开WEB界面(如果是云服务器需要设置安全策略,开放端口,允许浏览器访问):
在这里插入图片描述

默认的用户名为:admin
默认密码为:cstech

输入后就可以登陆CLup的管理界面了。WEB界面中可以管理的数据库当前都是空的,还需要在数据库主机中安装clup-agent后,才能进一步的操作。
在这里插入图片描述

2.4 安装clup-agent

在需要部署数据库的主机上安装clup-agent。在本示例是在 ufo002、ufo003、ufo004 机器上安装clup-agent。

下载clup-agent安装程序:

wget https://gitee.com/csudata_admin/clup-community/releases/download/4.2.5/clup-agent4.2.5.el7.x86_64.bin

在这里插入图片描述

运行:bash clup-agent4.2.5.el7.x86_64.bin:

[root@xxx ~]# bash clup-agent4.2.5.el7.x86_64.bin
==== Installation is starting ...
==== Your ip is 10.199.160.11/20
Enter Clup Server IP Addr:

输入clup服务端的IP地址:ufo001 然后回车继续:

Enter Clup Server IP Addr: 39.106.66.132
Clup Server ip is  39.106.66.132!
==== register systemd service ...
2022-11-23 19:07:06,082 INFO clup-agent v4.2.5 Copyright (c) 2018-2022 CSUDATA.COM All rights reserved.
already register systemd service!
==== register systemd service ok.
==== Installation is complete.

2.5 安装PostgreSQL数据库

可以使用PostgreSQL官方提供的方法安装PostgreSQL。但这里为了方便大家快速的入门,这里提供了一个快速安装的PostgreSQL数据库的方法,下载安装包:

wget https://gitee.com/csudata/csupg/releases/download/1.0/csupg.1.0.el7.x86_64.bin

在这里插入图片描述

安装:

bash csupg.1.0.el7.x86_64.bin

在这里插入图片描述
提供了多个版本的安装包,具体的数据库安装可以在Web控制台上进行操作安装:
在这里插入图片描述

3. culp 实战操作

3.1 创建数据库实例

在 Web 或后台创建管理用户:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
搭建备库
在这里插入图片描述

垃圾!垃圾!垃圾!请不要下载社区版测试!浪费时间!各种限制,无法进行MVP最佳实战测试。遇到过最垃圾的软件!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle 11g DataGuard 搭建笔记(Windows Server 2016)

0.目录 目录 0.目录 1.需求 2.开发环境 3.DataGuard主从库参数环境规划 4.网络环境 5.主库-DataGuard配置 5.1查询及启用强制记录日志 5.3查询及启用归档 5.4主库参数配置 5.4.1查看db_unique_name及修改 5.4.2修改参数log_archive_config 5.4.3修改参数log_archive_dest_1 5.4…

部署前端报错404 hash 以及history模式下面前端、后端如何配置

问题描述:前端 本地页面 正常展示 、部署后刷新浏览器如上: vue-router(前端路由)有两种模式,hash模式和history模式 原理的区别(原理) 1、hash ——即地址栏URL中的#符号。 hash 虽然出现URL…

Sealos 安装报错问题解决

sealos 是以 kubernetes 为内核的云操作系统发行版,看其他人通过sealos安装k8s集群十分丝滑,但自己实践的时候为什么报错频繁呢? 官网介绍: sealos.io1 先决条件 每个集群节点应该有不同的主机名。 主机名不要带下划线。所有节点的时间同步。在 Kubernetes 集群的第一个节点…

数组中出现次数超过一半的数字、替换空格、重建二叉树

1、数组中出现次数超过一半的数字 本题考点: 数组使用,简单算法的设计 牛客链接 题目描述: 给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组[1,2,…

企业如何利用 Serverless 快速扩展业务系统?

2022 年 9 月 24 日,阿里云用户组(AUG)第 12 期活动在厦门举办。活动现场,阿里云高级技术专家史明伟(花名:世如)向参会企业代表分享了《未来已来——从技术升级到降本提效》。本文根据演讲内容整…

引擎入门 | Unity UI简介–第1部分(8)

本期我们继续为大家进行Unity UI简介(第一部分)的后续教程 本篇内容 17.9-Slice缩放 18.准备按钮图像 19.设置按钮图像 20.为按钮设置自定义字体 文章末尾可免费获取教程源代码 本篇Unity UI简介(第一部分)篇幅较长&#x…

Spring源码深度解析:八、bean的获取② - getSingleton

一、前言 文章目录:Spring源码分析:文章目录 在Spring源码分析七 :bean的加载① - doGetBean 文章中,我们介绍了Spring对获取bean的过程,但是并没有详细解释Bean是如何创建的,本文就来分析Spring是如何创…

Mybatis 源码分析

mybatis 的一些总结 XMLConfigBuilder mybatis 的配置文件解析的能力是交给了XMLCconfigBuilder 去解析的 public SqlSessionFactory build(Reader reader, String environment, Properties properties) {try {XMLConfigBuilder parser new XMLConfigBuilder(reader, envir…

JDK内置命令工具

JDK内置命令工具 jps 作用 查看java进程的pid和全路径主类名和jvm参数 使用 -l : 输出所有正在运行java进程的pid 和主类名-v :输出正在运行java进程的pid和主类名和运行参数 jstack 作用 查看某个java进程当前的堆栈信息, 也就是当前进程中的线程…

NIO与BIO服务器端对比

本文利用NIO实现一个重复回复,客户端发送什么信息,客户端就会收到什么信息。 主要是理解NIO与BIO的区别。客户端采用telnet进行测试,以下连接是Telnet安装的方法。 Telnet的简单使用_武汉小喽啰的博客-CSDN博客_telnet 注意!&a…

POSIX信号量

文章目录概念信号量函数基于环形队列的生产消费模型概念 信号量是一个计数器,用来描述临界资源数量的计数器。 每个执行流要进入临界资源时,要先申请信号量,出临界资源时,要释放信号量。 信号量的PV操作 P操作:申请…

万字长文总结分布式事务,总有一款适合你

导语:本文参考网络相关文章,主要总结了XA, 2PC, 3PC, 本地事务状态表, 可靠消息队列, 最大努力通知, TCC, SAGA等分布式事务的特点和适用场景,为大家选择分布式事务提供一些参考。 概述 分布式事务是指事务的参与者、支持事务的服务器、资源…

宝刀未老!阿里P8老兵耗时三年总结出这份Java项目实战文档

文档特点: 为了方便小伙伴们能更好地阅读,我已经提前给大家整理好了学习路线和知识结构 本书综合讲解Java程序设计中的核心技术,全书一共设计为22章,章节结构如下。 需要获取的小伙伴可以直接转发关注后私信(学习&…

[Python]Django 配置

文章目录🍉 pycharm中打开Django项目并配置虚拟环境运行项目🍈 打开项目后pycharm自动识别配置项目运行环境🍍 指定项目运行的端口号🍈 自行配置项目的运行环境🍍 配置项目的python解释器🍍 配置Django项目…

本地demo服务器搭建计划——(三)rabbitmq配置中心config配置自动刷新

本章内容主要使用Spring Cloud Config来启动一个配置中心服务,通过Spring Cloud Bus消息总线(依赖rabbitmq)和Git仓库(Gitee)Webhook钩子函数来实现配置的自动更新(push新的配置到gitee仓库时触发&#xff…

【英语口语】单词如何正确发音?

1. 发音基础介绍 音素:元音 辅音 单词:重音 失去爆破 浊化 三单 过去式过去分词 句子:语调 重音 弱读 连读 缩读 段落:意群 元音字母: A、E、I、O、U 2. 音节的定义 英语单词在发音的时候,不是一个字…

GD32F4(9):GD32f4出现上电不工作,必须按复位程序才能跑起来

GD32:上电不工作,需要按一下复位按键程序才能跑起来 文章目录GD32:上电不工作,需要按一下复位按键程序才能跑起来1.问题描述2. 我的调试思路2.1 第一步,排除电源问题2.2 第二步,排除复位电路的问题2.3 第三…

QUIC简介

一、概述、 QUIC(Quick udp Internet connection):快速UDP互联网协议。相比于当前广泛应用的http2tcptls有如下优势: 减少三次握手及TLS握手时间;改进拥塞机制;避免队头阻塞的多路复用;连接迁移…

一文了解riscv软件系列之linux内核编译运行

一、交叉编译工具链的安装 【推荐阅读文章】 代码大佬的【Linux内核开发笔记】分享,前人栽树后人乘凉! 一篇长文叙述Linux内核虚拟地址空间的基本概括 一文了解Linux内核的Oops 需要多久才能看完linux内核源码? 详细讲解磁盘及文件系统…

【antd vue pro】设置项目默认语言为中文:

文章目录一、官网文档:二、解决:1、在src\locales\index.js文件修改默认语言2、src\core\bootstrap.js文件,修改初始化的语言3、src\store\modules\app.js4、清空本地存储,然后npm run serve重启:5、遇到问题&#xff…