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. NodeJS内存泄露

    p.p1 { margin: 0; font: 13px "Helvetica Neue"; color: rgba(0, 0, 0, 1) } p.p2 { margin: 0; ...

  2. 玩转SpringBoot:SpringBoot的几种定时任务实现方式

    引言 在现代软件开发中,定时任务是一种常见的需求,用于执行周期性的任务或在特定的时间点执行任务.这些任务可能涉及数据同步.数据备份.报表生成.缓存刷新等方面,对系统的稳定性和可靠性有着重要的影响.Sp ...

  3. 巧用SQL语句中的OR查询完成业务新需求-2022新项目

    一.业务场景 目前参与开发的项目,之前的一个已上线的版本中有一类查询是根据两张表进行LEFT JOIN查询用来取数据, 主表中有一个字段field用来区分不同的数据类型比如说A/B/C.前面的版本中只 ...

  4. 摆脱鼠标系列 - Alt + N 快速切换vscode多个项目 - HotKeyP

    摆脱鼠标系列 - Alt + N 快速切换vscode多个项目 用的软件是 HotKeyP 打开软件选择vscode vscode里面的 project那个插件也很好,但是需要打开vscode以后,这 ...

  5. aardio 嵌入 其他应用程序

    aardio 嵌入 其他应用程序 需求 这个chrome壳不能进行拖拽和缩放,所以再套一个壳,可以再分屏的时候用 import win.ui; /*DSG{{*/ winform = win.form ...

  6. Dreamweaver基础教程:系列介绍

    目录 前言 Dreamweaver 软件介绍 软件安装 学习支持 相关资料 前言 我一直对前端的一些技术比较感兴趣,之前有用过GitHub上的开源项目部署了自己的导航网站猿导航,但并没有系统的去深入学 ...

  7. day02-事件处理机制

    5.Java事件处理机制 5.1小球移动案例 通过监听键盘按键,实现小球的移动 例子: package li.gui.even_; import javax.swing.*; import java. ...

  8. 3DCAT亮相糖酒会,为元宇宙展会提供实时云渲染支持

    4月12日,第108届全国糖酒商品交易会(下文简称"糖酒会")在成都正式开幕,吸引了众多酒类企业和行业人士的参与. 图片源自新华社 本次糖酒会上,某展会采用了"双线&qu ...

  9. CSS(相对定位relative、绝对定位absolute、固定定位fixed、定位应用、元素的显示和隐藏)

    一. 定位(position) 介绍 1.1 为什么使用定位 我们先来看一个效果,同时思考一下用标准流或浮动能否实现类似的效果? 场景1: 某个元素可以自由的在一个盒子内移动位置,并且压住其他盒子. ...

  10. 三维模型3DTile格式轻量化压缩处理效率提高的技术方浅析

    三维模型3DTile格式轻量化压缩处理效率提高的技术方浅析 随着三维模型在各个领域的广泛应用,对于其格式的轻量化压缩处理和效率提高的需求也越发迫切.本文将介绍一些技术方法,帮助实现三维模型3DTile ...