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. 终端SSH远程连接CentOS报错:-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

    终端SSH远程连接CentOS时,报以下错误提示: -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such ...

  2. 分布式事务框架seata入门

    一.简介 在近几年流行的微服务架构中,由于对服务和数据库进行了拆分,原来的一个单进程本地事务变成多个进程的本地事务,这时要保证数据的一致性,就需要用到分布式事务了.分布式事务的解决方案有很多,其中国内 ...

  3. Java 关于变量的赋值

    1 /** 2 * 3 * @Description 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @version 6 * @d ...

  4. VC+MFC button获取+list复制+获取+页面转换+登录与数据库账户,密码进行对比 +基础知识

    1 // DlgExec.cpp : 实现文件 2 // 3 4 #include "stdafx.h" 5 #include "Self.h" 6 #incl ...

  5. Java 在三个数字中找出最大值

    1 int aa1 = 11000000; 2 int aa2 = 20000; 3 int aa3 = 6000; 4 5 //第一种 6 int max = (aa1 > aa2)? aa1 ...

  6. map 简单梳理【GO 基础】

    〇.map 简介 map 是一种无序的基于 key-value 的数据结构,Go 语言中的 map 是引用类型,必须初始化才能使用. 其中键可以是任何类型,但值必须是可比较的类型(如整数.字符串.布尔 ...

  7. Spring5课堂笔记

    Spring5 1..Spring 1.1.简介 Spring --> 春天,为开源软件带来了春天 2002,首次推出了Spring框架的雏形:interface21框架! Spring框架以i ...

  8. 解决linux平台无法使用getch()的问题

    参考https://www.cnblogs.com/jiangxinnju/p/5516906.html#:~:text=%E5%8F%A6%E5%A4%96%E5%A4%A7%E5%AE%B6%E5 ...

  9. 基于Python的 如何检查字符串输入是否为数字

    一 概念 这种有很多常用的方法,这里只介绍一种常用的方法是使用正则表达式来匹配数字的模式.通过定义一个匹配数字的正则表达式,然后使用re模块中的search()方法来进行匹配. 二 例子: 下面是一个 ...

  10. 基于VS Code的JSDoc的使用指南

    1. 引言 JSDoc是一个用于 JavaScript 的API文档生成器,可以将文档注释直接添加到源代码中,JSDoc 工具将扫描您的源代码并提供一些操作,例如,生成一个 API 文档 JSDoc官 ...