openGauss资源池化开发者入门指南(一)
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资源池化开发者入门指南(一)的更多相关文章
- 物联网操作系统HelloX开发者入门指南
HelloX开发者入门指南 HelloX是聚焦于物联网领域的操作系统开发项目,可以通过百度搜索"HelloX",获取详细信息.当前开发团队正在进一步招募中,欢迎您的了解和加入.如果 ...
- 关于 HSSF 和 XSSF 功能的开发者入门指南 (Apache POI 操作 Excel)
关于 HSSF 和 XSSF 功能的开发者入门指南 笔者深夜无眠,特此对本文翻译一部分,未完成部分待后续更新 本文源文地址 意欲使用 HSSF 和 XSSF 功能快熟读写电子表格?那本文就是为你而写的 ...
- Webstorm10.0.3破解程序及汉化包下载、Webstorm配置入门指南
核心提示: WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaSscri ...
- Microsoft Orleans 之 入门指南
Microsoft Orleans 在.net用简单方法构建高并发.分布式的大型应用程序框架. 原文:http://dotnet.github.io/orleans/ 在线文档:http://dotn ...
- Flume NG Getting Started(Flume NG 新手入门指南)
Flume NG Getting Started(Flume NG 新手入门指南)翻译 新手入门 Flume NG是什么? 有什么改变? 获得Flume NG 从源码构建 配置 flume-ng全局选 ...
- 所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市
今天是春节假期的最后一天,在这里给全国的朋友们拜个晚年,祝大家身体健康,晚年幸福啊.这个春节大家过的怎么样啊,我自己是在老家过的年,家乡的年味还是比较浓的,也再次感谢朋友圈的大家给我看了各地的风光 ...
- Webstorm常用快捷键备忘(Webstorm入门指南)
WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaSscript IDE ...
- 第3章 Spring Boot 入门指南
Part II. 入门指南 如果你刚刚开始使用Spring Boot,这是你的一部分内容! 在这里我们将会回答一些基本的“what?”, “how?” 和 “why?”的问题. 在这里你会找到一个详细 ...
- 《转载》编程入门指南 v1.4
编程入门指南 v1.4 Badger · 8 个月前 作者:@萧井陌, @Badger 自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 CoCode ...
- Blazor 模板化组件开发指南
翻译自 Waqas Anwar 2021年4月15日的文章 <A Developer's Guide To Blazor Templated Components> [1] 在我之前的一篇 ...
随机推荐
- 【Azure API 管理】如何修改Azure APIM的管理员邮箱和组织名称
问题描述 当创建一个新的APIM服务时,会要求输入组织名称(Organization name)和管理员邮箱(Administrator email :Set the e-mail address t ...
- 【Azure 应用服务】App Service For Linux 环境中,如何从App Service中获取GitHub私有库(Private Repos)的Deploy Key(RSA key)呢?
问题描述 为App Service For Linux配置CI/CD,源代码在GitHub私有库中,在发布时候报错 Cannot find SourceControlToken with name B ...
- [linux 爬坑] 几个linux发行版尝试和令人崩溃的ssr安装体验
最近电脑上的manjaro好像出了问题,长时间不用就会死机.也懒得追究原因了,正好决定尝试几个发行版.首先尝试安装银河麒麟 这个发行版实际上就是ubuntu,甚至源什么的都是ubuntu的,也不 ...
- C++ String //string字符串查找和替换 比较 存取 修改单个字符 插入和删除 string字串
1 //string字符串查找和替换 比较 存取 修改单个字符 插入和删除 string字串 2 #include <iostream> 3 #include<string> ...
- C++ Qt开发:QFileSystemModel文件管理组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QFi ...
- RC4算法:流密码算法的经典之作
一.RC4算法的起源与演变 RC4算法是由著名密码学家Ron Rivest在1987年设计的一种流密码算法,其名字来源于Rivest Cipher 4.RC4算法简单高效,被广泛应用于数据加密和网络安 ...
- Zabbix与乐维监控对比分析(五)——可视化篇
前面我们详细介绍了Zabbix与乐维监控的架构与性能.Agent管理.自动发现.权限管理.对象管理.告警管理方面的对比分析,相信大家对二者的对比分析有了相对深入的了解,接下来我们将对二者的可视化功能进 ...
- Zabbix“专家坐诊”第198期问答汇总
问题一 Q:请问一下,自带的思科SNMP交换机模板,怎么不监控down的接口? A1:这种一般在自动发现规则里加个过滤器,过滤出IFSTATUS匹配(1|3)的就能实现只发现up的端口了. A2: 1 ...
- powershell 输入命令 不执行 保留输入内容 Ctrl + C
为什么 powershell 输入命令 不执行 保留输入内容 Ctrl + C 为了解释某些命令,但是不执行 比如 我说 dc命令就是 xxxxxxx 我就先输入 xxxxxxxx然后ctrl + c ...
- iview 部分表单验证
引用:https://github.com/ElemeFE/element/issues/3686 zxmantou commented on 25 Feb 2019 @Murraya-panicul ...