openGauss资源池化开发者入门指南(一)

一、内容简介

openGauss 资源池化是 openGauss 推出的一种新型的集群架构.通过 DMS 和 DSS 组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享

达到节省底层存储资源以及集群内部支持一写多读且可以实时一致性读的目的.

本系列的主旨在于帮助对资源池化开发感兴趣的开发者快速入门

以及提供一些对开发有帮助的经验总结

二、预备知识

开发者最好具备以下基础:

Linux 的基础命令,比如 dd 命令,iscis 等

对磁阵有一定的了解

对传统的 openGauss 编译方式十分熟悉

二、安装指南

资源池化架构参考:

在社区正式发布的版本中, 如果需要搭建资源池化架构, 硬件上需要准备磁阵, 服务器和光交换机.

在社区正式发布的版本中, CM 和 OM 是必选的组件

因为使用 OM 的安装过程和传统的基本一致, 即先执行 gs_preinstall 然后执行 gs_install, 通过 xml 中的配置项控制是否开启 dss 和 dms. 所以在资料中只是对 xml 内容进行了修改和说明, 对其他内容没有详细的说明, 这里对 xml 的内容中进行一些补充性的说明

选项 说明

enable_dss 共享存储模式开关,取值范围 on/off,默认为 off,共享存储不支持 dcf 模式. 开启后, 表示数据文件/xlog 文件/双写/pg_clog/pg_csnlog/pg_multixact 会写入到底层的共享存储中

dss_home dss 实例目录,enable_dss 为 on 时必选。dsssever 启动时需要的存放 dss 配置项以及 dssserver 的运行日志等相关必须文件的目录, 在 OS 的文件系统中, 每个节点都会有一份

ss_dss_vg_name dss 共享卷名,enable_dss 为 on 时必选. 这是个逻辑名称, 即 dssserver 使用的卷名, 可以命名为 data, data1, data2, mydata 均可, 配置后 dss 访问文件的路径即为 +data/base, +data/pg_xlog0 这种

dss_vg_info dss 挂载卷组信息,包含一个共享卷组,其余为日志卷组,日志卷组的数量和 dn 的数量保持一致,集中式每个节点最多有一个 dn。卷组形如“data:/dev/sdb”,卷组和卷组之间以“,”隔开,enable_dss 为 on 时必选。日志卷组磁盘大小需要大于 dn 参数 max_size_for_xlog_prune 的值. 这里说明一下这个格式"data:/dev/sdb" , data 表示数据的卷名, 和上一个 ss_dss_vg_name 的配置一致, /dev/sdb 表示 OS 中可识别的设备名称, 即对应磁阵映射到 OS 中的 LUN 显示的设备名称, 实际使用中也可以用自己做的软链接, 链接到实际的设备名称上, 方便识别, 比如 "data:/dev/forcitest", /dev/forcitest 实际是一个指向/dev/sdb 的软链接, 这种也是可以的. 依此类推理解 p0:/dev/sde, p0 就是节点 1 的 xlog 存放的卷名, /dev/sde 就是块设备名称. 一套集群中只有一个 data 卷, 然后每个节点都有一个 xlog 卷, 即 p0, p1, p2 等, 对应节点 0,1,2 的 xlog 卷. data 卷和 xlog 卷的大小均建议最少 1TB 起步

votingDiskPath cm 的投票卷,enable_dss 为 on 时必选。 给 CM 用的, 没有特别需要注意的, 大小可以不用太大

shareDiskDir cm 的共享卷,enable_dss 为 on 时必选。给 CM 用的, 没有特别需要注意的, 大小可以不用太大

ss_interconnect_type mes 通信协议类型,默认值 TCP,取值范围 TCP/RDMA,默认为 TCP。

ss_rdma_work_config rdma 用户态 poll 占用起止 cpu,ss_interconnect_type 为 RDMA 时有效,形如"10 15",中间以空格分隔。RDMA 和 TCP 是二选一的, RDMA 需要网卡和交换机层面支持

对于安装环境的准备, 除了传统的 openGauss 中需要准备的内容之外, 需要注意的就是要提前配置好磁阵对应的 LUN, 不同厂商的磁阵可能有一些不同的配置方式, 按照自己的需求选择是否配置多路径(openEuler 20.03 目前只支持 linux 自带的 multipath 服务)等, 如果配置了多路径,上面的/dev/sdx 注意配成多路径映射后的名字

三、提供一个简易的一键式安装脚本

下面提供一个可以一键式安装的 shell 脚本, 可以满足快速部署环境的需求

脚本主要分为 2 个

一个 om_pssh.sh 主要用于实现 ssh 时自动输入密码

一个 om_install.sh 主要用于实现自动安装

需要准备好的是一个集成了 om, cm 和数据库的安装包 (一般 release 的包会包含) , 如果没有的话, 可能需要自己做包, 在编译时带上-pkg 选项, 分别做出来 openGauss, OM 和 CM 的包,再放到一起压缩成集成的安装包

注意, 下面的脚本中以所有需要输入的密码都是"Password"为例

以下脚本请勿使用于生产环境

以下为纯手敲, 博主已经尽力了.

如使用中有错误, 建议自行定制修改

先是 om_pssh.sh

!/bin/bash

function auto_() {

expect <<-EOF

spawn $*

set timeout -1

expect {

"yes/no" { send "yes\n"; exp_continue }

"denied" { exit 1; }

"assword" { send "Password\n"; exp_continue }

"anger
\nyes" { send "yes\n"; exp_continue }

"Pdb" { interact }

"pass phrase for*:" { send "Password\n"; exp_continue }

"passphrase" { send "Password\n"; exp_continue }

"database:" { send "Password\n"; exp_continue }

}

EOF

}

auto_ $*

再是 om_install.sh

!/bin/sh

节点ip, 以空格分割

IPS="1.2.3.4 1.2.3.5 1.2.3.6"

安装用户名

user=omm

存放分发安装包的路径, 要独用, 不能为根目录

om_path=/data/omm

xml文件路径,xml需要保证配置正确

xlm_file=/data/install/1p2s.xml

cur_path=$(pwd)

if [ -z ${om_path} ] || [ ${om_path} == '/' ]; then

echo "om_path can not be NULL and '/', please input valid parameter"

exit 0;

fi

echo "=====start om install now"

all_node_ssh_proc()

{

for ip in IPS

do

sh ${cur_path}/om_pssh.sh ssh root@$ip $*

done

}

clean_env()

{

all_node_ssh_proc sudo pkill -9 -u ${user}

all_node_ssh_proc sudo rm -rf ${om_path}/${user}

all_node_ssh_proc sudo pkill -9 -u ${user}

all_node_ssh_proc sudo cp /etc/usr_bashrc /home/${user}/.bashrc

all_node_ssh_proc "su - ${user} -c 'ipcrm -a'"

all_node_ssh_proc sudo rm -f ${om_path}/gauss_pack/script/ENVFILE

}

get_tar()

{

all_node_ssh_proc sudo rm -rf ${om_path}/*

if [! -d ${om_path}/gauss_pack ]; then

mkdir -p ${om_path}/gauss_pack

fi

cd ${om_path}

#这里自行替换成安装包的路径

cp /home/pkg/openGauss-XXX.tar.gz .

cd ${om_path}/gauss_pack

rm -rf *

#这里自行替换成安装包的名称

tar -zxvf ../openGauss-XXX.tar.gz

#这里自行替换成安装包中om包的名称

tar -zxvf openGauss-3.0.0-openEuler-64bit-om.tar.gz

#这里自行替换成安装包中cm包的名称

tar -zxvf openGauss-3.0.0-openEuler-64bit-cm.tar.gz

chmod 777 -R ${om_path}

cp ${cur_path}/om_pssh.sh ${om_path}/

chmod 777 -R ${om_path}

}

pre_install()

{

chmod 777 -R ${om_path}

cd ${om_path}/gauss_pack/script/

${om_path}/om_pssh.sh ./gs_preinstall -U ${user} -G ${user} --sep-env-file=${om_path}/gauss_pack/script/ENVFILE -X ${xml_file}

source ${om_path}/gauss_pack/script/ENVFILE

chmod 777 -R ${om_path}

}

om_install()

{

all_node_ssh_proc chmod 777 -R ${om_path}

su - ${user}<<EOF

cd ${om_path}/gauss_pack/script/

source ${om_path}/gauss_pack/script/ENVFILE

${om_path}/om_pssh.sh gs_install -X ${xml_file} --time-out=3600

source ${om_path}/gauss_pack/script/ENVFILE

cm_ctl query -Cvdip

EOF

}

function main() {

echo "==om install="

clean_env

get_tar

pre_install

om_install

}

main

使用方法;

把 om_pssh.sh 和 om_install.sh 放到一个目录下, 准备好 xml, 安装包, 用户名, 密码等之后

执行 sh om_install.sh 即可, 都运行正常的话, 只需要等着就能安装成功

openGauss资源池化开发者入门指南(一)的更多相关文章

  1. 物联网操作系统HelloX开发者入门指南

    HelloX开发者入门指南 HelloX是聚焦于物联网领域的操作系统开发项目,可以通过百度搜索"HelloX",获取详细信息.当前开发团队正在进一步招募中,欢迎您的了解和加入.如果 ...

  2. 关于 HSSF 和 XSSF 功能的开发者入门指南 (Apache POI 操作 Excel)

    关于 HSSF 和 XSSF 功能的开发者入门指南 笔者深夜无眠,特此对本文翻译一部分,未完成部分待后续更新 本文源文地址 意欲使用 HSSF 和 XSSF 功能快熟读写电子表格?那本文就是为你而写的 ...

  3. Webstorm10.0.3破解程序及汉化包下载、Webstorm配置入门指南

    核心提示: WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaSscri ...

  4. Microsoft Orleans 之 入门指南

    Microsoft Orleans 在.net用简单方法构建高并发.分布式的大型应用程序框架. 原文:http://dotnet.github.io/orleans/ 在线文档:http://dotn ...

  5. Flume NG Getting Started(Flume NG 新手入门指南)

    Flume NG Getting Started(Flume NG 新手入门指南)翻译 新手入门 Flume NG是什么? 有什么改变? 获得Flume NG 从源码构建 配置 flume-ng全局选 ...

  6. 所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市

      今天是春节假期的最后一天,在这里给全国的朋友们拜个晚年,祝大家身体健康,晚年幸福啊.这个春节大家过的怎么样啊,我自己是在老家过的年,家乡的年味还是比较浓的,也再次感谢朋友圈的大家给我看了各地的风光 ...

  7. Webstorm常用快捷键备忘(Webstorm入门指南)

    WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaSscript IDE ...

  8. 第3章 Spring Boot 入门指南

    Part II. 入门指南 如果你刚刚开始使用Spring Boot,这是你的一部分内容! 在这里我们将会回答一些基本的“what?”, “how?” 和 “why?”的问题. 在这里你会找到一个详细 ...

  9. 《转载》编程入门指南 v1.4

    编程入门指南 v1.4 Badger · 8 个月前 作者:@萧井陌, @Badger 自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 CoCode ...

  10. Blazor 模板化组件开发指南

    翻译自 Waqas Anwar 2021年4月15日的文章 <A Developer's Guide To Blazor Templated Components> [1] 在我之前的一篇 ...

随机推荐

  1. 【Azure Developer】使用MSAL4J 与 ADAL4J 的SDK时候,遇见了类型冲突问题 "java.util.Collections$SingletonList cannot be cast to java.lang.String"

    问题描述 在博文 "[Azure Developer]使用 Powershell az account get-access-token 命令获取Access Token (使用用户名+密码 ...

  2. book 电子书转换 在线工具

    https://convertio.co/download/911d3a3f39db0b2e39ed6e3c8acb31f6be786a/ Convertio

  3. Delete `␍`

    新电脑遇到的问题 Delete `␍`eslint(prettier/prettier) 网上一搜,一堆解决办法,没有一个说到点子上,都是表面上如何避免,如何设置VSCODE... 都知道是换行符的问 ...

  4. 协议 UARST & 数据发送与接收

    STM32具有的协议 UASRT是通用异步/同步收发器,UART是通用异步收发器 串口空闲状态时高电平,开始传输数据时,第一个数据为固定的低电平: 数据:最后为高电平的停止位 奇偶校验:通过+1或者不 ...

  5. Vue 动态插入组件 用js函数的方式

    Vue 动态插入组件 用js函数的方式 第一步 import vue组件 第二步 Vue把组件扩展进去 第三步 创建实例 第四步 将组件的el挂载到document.body上 第五步 设置组件内部d ...

  6. Rust GUI库 egui 的简单应用

    目录 简介 简单示例 创建项目 界面设计 切换主题 自定义字体 自定义图标 经典布局 定义导航变量 实现导航界面 实现导航逻辑 实现主框架布局 调试运行 参考资料 简介 egui(发音为"e ...

  7. 候捷-C++程序设计(Ⅱ)兼谈对象模型

    目录 笔记参考 学习目标 转换函数与explicit pointer-like classes function-like classes 模板template 模板特化与偏特化 模板模板参数 引用( ...

  8. pcm5102芯片解析之基本概念

    一 前记 1 在音频领域深耕,那就要不断的前行.最近有几个项目需要用到pcm5102这颗料,藉此机会,针对这个料进行深入的研究一下.做一一些简要的分析. 二 概念 音频芯片的指标,其实,很多年都没啥变 ...

  9. 用python生成正玄波信号源码解析

    一 前记 项目需要生成不同频点的正玄波信号,没找到现成的软件,只能自己写一个了.顺便温习一下python. 二 源码解析: #!/usr/bin/python import numpy as np f ...

  10. Nodejs 命令行调用 exec 与 spawn 差异--- 解决 spawn yarn ENOENT error

    Nodejs 命令行调用 exec 与 spawn 差异 比如在前端工程项目中 Nodejs 要调用命令行命令如: yarn electron:build exec 调用 yarn 命令,为了能使命令 ...