让数据更「高效」一点!IvorySQL在Neon平台上的迅速部署和灵活应用

让数据更「高效」一点!IvorySQL在Neon平台上的迅速部署和灵活应用-1



01

什么是Neon Autoscaling?


Neon Autoscaling的基本架构如下所示。有关更多详细信息,您可以参考这里。

https://docs.ivorysql.org/en/ivorysql-doc/v3.2/v3.2/8#architecture-overview

让数据更「高效」一点!IvorySQL在Neon平台上的迅速部署和灵活应用-每日运维

弹性缩放主要功能:
>>>实时迁移当Kubernetes集群中的节点负载趋于饱和时,NeonVM会管理实时迁移VM的流程,确保以最小的中断(通常仅约100毫秒)将VM从一台计算机无缝转移至另一台计算机。这一实时迁移机制不仅能在节点达到容量极限前主动减少负载,还能极大地提升集群的灵活性和可靠性。
>>>内存扩展通过使用cgroups,Postgres的内存使用情况可以实现动态调整,当需要时,它能够有效地通过Kubernetes集群中的弹性伸缩程序代理请求其他的资源,以确保数据库始终保持最佳性能。
>>>本地文件缓存利用Postgres扩展,我们实现了本地文件缓存功能,该功能能够充分利用额外的VM内存和动态调整缓存大小来加速查询处理速度,确保在扩展事件期间实现无缝且高效的操作。
通常,Neon的垂直弹性伸缩功能可智能地管理NeonVM中基于Postgres的计算节点的性能,通过动态分配和解除vCPU与RAM资源,实现高效且灵活的资源调度。


02

将IvorySQL放入Neon Autoscaling平台


2.2 创建IvorySQL部署文件
为了创建IvorySQL的部署文件,请复制“vm-deploy.yaml”文件并命名为“vm-deploy-ivy3.yaml”。接下来,请参照提供的示例文件,对“vm-deploy-ivy3.yaml”进行必要的修改。


2.3 将ivy3-disk-test添加到Makefile
将“ivy3-disk-test”添加到Makefile中,并合并所需的修改,以便能够通过执行“make ivy3-disk-test”命令来构建“ivy3-disk-test”镜像。


2.4 加载liboracle_parser库


要加载 “liboracle_parser” 库,请在 “postgresql.conf” 的末尾添加以下行:shared_preload_libraries = 'liboracle_parser'。


如果要跳过上述所有步骤,只需运行以下命令即可:

git clone https://github.com/HighgoSoftware/autoscaling-ivorysql.git<br>cd autoscaling-ivorysql<br>git checkout IvorySQL3.2<br>
2.5 使用kind设置本地Kubernetes集群


使用kind设置本地Kubernetes集群。下面简要概述了使用kind设置垂直自动缩放的过程;详情请参考此处。


1)构建NeonVM Linux内核:

make kernel


2)构建docker镜像:

make docker-build


3)使用kind启动本地集群:

make kind-setup


4)部署NeonVM和Autoscaling组件:

make deploy


5)生成并加载测试VM:

make pg16-disk-test


6)启动测试VM:

kubectl apply -f vm-deploy.yaml


7)运行pgbench:

VM_NAME=postgres16-disk-test scripts/run-bench.sh


2.6 体验IvorySQL的弹性伸缩


如果您已经按照上述步骤,成功自动扩容了 “postgres16”,那么运行以下三个命令,即可体验 IvorySQL 3.2 的自动扩容功能。

make ivy3-disk-test<br>kubectl apply -f vm-deploy-ivy3.yaml <br>VM_NAME=ivorysql3-disk-test scripts/run-bench.sh<br>
一段时间后,您应该会看到每秒事务数(tps)自动增加,如下所示。

让数据更「高效」一点!IvorySQL在Neon平台上的迅速部署和灵活应用-3

kubectl patch neonvm ivorysql3-disk-test --type='json' -p='[{"op": "replace", "path": "/spec/guest/cpus/use", "value":0.25}]'<br>
一段时间后,您应该能够观察到每秒事务数(tps)减少,如下所示。

让数据更「高效」一点!IvorySQL在Neon平台上的迅速部署和灵活应用-4

spec:<br>    enableAcceleration: true<br>    guest:<br>        cpus:<br>            max: 1250m<br>            min: 250m<br>            use: 250m<br>