暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

IvorySQL内核的Serverless数据库——HGNeon适配国内云对象存储

原创 IvorySQL 2023-07-05
488

📕前言

近期,基于PG内核的Serverless数据库Neon大火,被称为开源版本的Aurora。它本身是支持minio本地云存储和AWS的s3远程对象存储的。
那么,如果我们适配国内主流云厂商的对象存储「阿里云、华为云、浪潮云等」,能成功吗?

🐘我们基于Neon的项目开源的核心部分,提供了部署脚本和k8s manifest,开发了proxy一写多读模式,丰富了REST API接口,适配了国内主流云厂商的对象存储,形成HGNeon产品。该产品简化Serverless数据库本地部署流程,提升对于国内环境的适用性。


HGNeon的核心架构图:

图片
HGNeon核心架构图

HGNeon数据库内核使用开源IvorySQL,同时支持pg14和pg15,整体架构分为计算层和存储层。计算层由运行在Kubernetes上的无状态IvorySQL组成,允许pod按需扩展,甚至可以缩容到零。存储层是通过HGNeon存储引擎实现的,这是一个处理事务和数据的定制层。事务日志通过一组冗余的safekeeper进行处理,数据页则由pageserver在磁盘上进行管理,而数据真正的持久化由云存储保证。

接下来,我们来验证一下用国内云厂商的云存储服务支撑HGNeon的存储部分,效果如何?本次验证以国内较为流行的阿里云OSS服务为例。

🎄环境准备

1.准备k8s环境v1.23。

2.准备阿里云账号,开通OSS服务,创建一个桶(Bucket),创建账号ak、sk,授权OSS。

3.准备HGNeon项目代码(用neon的项目代码部署原理和效果是相同的)。


🔨HGNeon搭建

1.拉取git项目代码。

2.创建分支 git checkout -b compatible-with-oss。

图片

3.到K8s_deploy目录下。

图片

4.配置存储节点启动时,使用阿里云OSS服务信息

vim ./HGNeon_core/HGNeon-core-deploy.yml

把yml中pageserver、safekeeper1、safekeeper2、safekeeper3的ak和sk都换成阿里云账号。

图片

5.vim ./HGNeon_core/scripts/hgneonstorage.sh

修改pageserver和safekeeper的启动命令,增加remote-storage信息。

图片

6.remote-storage结构信息来源。

📍endpoint:阿里云OSS页面可以查询到Bucket域名信息。(注意:请勿使用Endpoint信息)

图片


📍bucket_name:桶的名字,支持自定义。

📍bucket_region:区域id,详细对应关系,请参考阿里云官方文档。

https://help.aliyun.com/document_detail/31837.htm?spm=a2c4g.410748.0.0.28ad27a2Nk8cXQ#concept-zt4-cvy-5db

图片

📍prefix_in_bucket:无需修改,桶目录管理路径。

7.到k8s_deploy目录下。

图片

8.先启动存储节点,启动完成后可以看到2个configMap、2个service、1个deployment。

./HGNeon_k8s_setup.sh start

图片

9.存储节点启动完成后,启动第一个计算节点,启动后有1个pod、3个service、1个deployment。

./HGNeon_k8s_setup.sh startcompute 1 30081

命令中的参数:

1 是计算节点的id,任意不重复的数字即可(与tenantid和timeline是绑定的)

30081 指的宿主机端口号,不冲突即可。

图片

10.启动第二个计算节点。

./HGNeon_k8s_setup.sh startcompute 2 30082

11.Psql测试登录,用户cloud_admin密码也是cloud_admin。

psql -h 127.0.0.1 -U cloud_admin -d postgres -p 30081

图片


🛠HGNeon简单插入、查询功能验证

1.连接数据库,建表,插入数据,查询。

图片
图片

2.查看阿里云OSS情况。

图片


压测工具可用性测试

无服务数据库HGNeon能否正常使用基准测试工具进行测试?

本次测试选用BenchmarkSQL压测工具作为示例,验证HGNeon的压测工具可用性。

1.安装BenchmarkSQL 5.0,官方下载.zip文件,解压后ant编译。

图片

图片

2.修改连接配置信息。

到BenchmarkSQL的run目录下

图片

cat props.pg > hgneon.conf

vim hgneon.conf

图片

3.导入数据。

./runDatabaseBuild.sh hgneon.conf

图片

4.压测。

./runBenchmark.sh hgneon.conf

5.测试完成。

图片

🏆总结

本次测试验证结论:

1.HGNeon可以适配国内云平台OSS,并具有较强的可靠性和稳定性。

2.HGNeon可以支持传统压测工具,例如:BenchmarkSQL。



官方网址:

https://www.ivorysql.org/zh-cn/

社区仓库:

https://github.com/IvorySQL/IvorySQL

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论