RadonDB Postgresql 简介
RadonDB PostgreSQL 是基于 PostgreSQL 的开源、高可用、云原生集群解决方案。
- 通过 Pgpool-II 代理 PostgreSQL 后端服务 , 用于减少 Postgresql 后端的连接开销,充当 Postgresql 的负载均衡器,增强了系统的整体吞吐量。
- 通过 repmgr 实现 PostgreSQL 节点的故障转移,极致的性能、更低的成本
不论在单节点、多节点的集群环境中[PostgreSQL on QingCloud]都完美的保持了 PostgreSQL 集群本身的性能,同时我们还对一些关键参数进行了进一歩调整,以争取在您不需要调节任何参数的情况下为您提供极致的性能体验。同时[PostgreSQL on QingCloud]支持容量型、性能型、超高性能型多种磁盘类型,你可以根据自己的实际情况 进行选择。
PostgresSQL 凭借其经过验证的架构,可靠性,数据完整性,强大的功能集,可扩展性以及软件背后的开源社区的奉献精神赢得了良好的声誉,以始终如一地提供高性能和创新的解决方案。PostgreSQL 所有主要操作系统开始使用 PostgreSQL 从未如此简单。
Kubesphere 简介
Kubesphere 是在 Kubesphere 之上构建的以应用为中心的多租户容器平台,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。Kubesphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。
部署环境准备
Kubesphere 是由青云 QingCloud 开源的容器平台,支持在任何基础设施上安装部署。在青云公有云上支持一键部署 Kubesphere(QKE)。下面以在青云云平台快速启用 Kubesphere 容器平台为例部署 PostgreSQL 数据库,至少需要准备 3 个可调度的 node 节点。你也可以在任何 Kubesphere 集群或 Linux 系统上安装 Kubesphere,可 以参考 KubeSphere 官方文档。
1、登陆青云控制台:https://console.qingcloud.com/,点击 左侧容器平台,选择 Kubesphere,点击创建并选择合适的集群规格:
2、创建完成后登陆到 Kubesphere 平台界面:
3、点击左上角平台管理,选择访问控制,新建企业空间,这里命 名为 pg-ha-workspace、 DevOps 工程:posgresql-ha-devops operator 账户:zhangsan
4、以 zhangsan 登陆控制台,转到 posgresql-ha-devops 这个工程,在工程管理下的凭证页面创建以下凭证:
部署 PostgreSQL
步骤1:克隆 RadonDB PostgreSQL Chart
执行如下命令 , 将 RadonDB PostgreSQL Chart 克隆到 Kubernetes 中。
git clone https://github.com/zhl003/radondb-postgresql-kubernetes.git
Chart 代表 Helm 包,包含在 Kubernetes 集群内部运行应用程序、工具或服务所需的所有资源定义。
步骤2:部署
在 radondb-postgresql-kubernetes 目录路径下,选择如下方式,部署 release 实例。
release 是运行在 Kubernetes 集群中的 Chart 的实例。通过命令方式部署,需指定 release 名称。
以下命令指定 release 名为 demo,将创建一个名为 demo-postgresql-ha-postgresql 的有状态副本集。
<For Helm v2>
helm install . --name demo
<For Helm v3>
helm install demo charts/postgresql-ha
在 helm install 时使用 –set key=value[,key=value] ,可指定参数部署。以下示 例以创建一个3副本的 PostreSQL 集群,并设置了 Postgresql 的访问密码。
cd charts
helm install demo \
--set postgresql.password = [POSTGRESQL_PASSWORD] \
--set postgresql.repmgrPassword = [REPMGR_PASSWORD]
--set postgresql.replicaCount = 3 \
charts/postgresql-ha
- 配置 yaml 参数方式 执行如下命令,可通过 value.yaml 配置文件,在安装时配置指定参数。更多安 装过程中可配置的参数,请参考配置。
cd charts helm install demo -f values.yaml .
通过 repo 部署
步骤 1:添加仓库
添加并更新 Helm 仓库。
登陆 Kubesphere 客户端节点,执行以下命令:
$ helm repo add pgha https://zhl003.github.io/radondb-postgresql-kubernetes
$ helm repo update
步骤 2:部署
以下 release 默认名为 default,将在命名空间 default 下创建一个名为 pgha-postgresql-ha-pgpool 的有状态副本集。
分别执行如下指令,查看到 release 名为 default 的有状态副本集 demo-postgresql-ha,则 RadonDB PostgreSQL 部署成功。
$ helm list -n demo NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION Defult default 1 2021-05-19 06:13:27.219204491 +0000 UTC deployed postgresql-ha-1.0.0 11.11.0
$ kubectl get statefulsets.apps -n demo NAME READY AGE demo-postgresql-ha-postgresql 4/4 2m9s
部署校验
部署指令执行完成后,查看 RadonDB PostgreSQL 有状态副本集,pod 状态及服务。可查看到相关信息,则 RadonDB PostgreSQL 部署成功。
kubectl get statefulset,pod,svc -n demo
查看 Radondb-PostgreSQL 集群监控
1、登陆 Kubesphere 控制台,查看有状态副本集群 demo-postgresql-ha-postgresql
2、在 Kubesphere 监控面板查看 postgresql 负载情况,可以看到 CPU、内存、网络流出速率有明显的变化;
3、查看容器组(Pod)列表,可以看到 CPU、内存、postgresql 集群默认包含了5个 pod
4、点击存储管理,查看存储卷,所有组件均使用了持久化存储:
5、查看某个存储卷用量信息,以其中一个数据节点为例,可以看到当前存储的存储容量和剩余容量等监控数据。
6、在 Kubesphere 项目首页查看 pgha-dev 项目中资源用量排行:
连接 RadonDB PostgreSQL
您需要准备一个用于连接 RadonDB PostgreSQL 的客户端。
客户端与 RadonDB PostgreSQL 在同一个 Namespace 中
当客户端与 RadonDB PostgreSQL 集群在同一个 NameSpace 中时,可使用 leader/follower service 名称代替具体的 ip 和端口。
连接 pgpool 节点(读写节点)
psql -h < service demo-postgresql-ha-pgpool 名称 > -p 5432 -U postgres -d postgres
客户端与 RadonDB PostgreSQL 不在同一个 Namespace 中
当客户端与 RadonDB PostgreSQL 集群不在同一个 NameSpace 中时,需先分 别获取连接所需的节点地址、节点端口、服务名称。
1、查询 pod 列表和服务列表,分别获取 pod 名称和服务名称。 kubectl get pod,svc
2、开启服务网络访问。 执行如下命令,打开服务配置文件,将 spec 下 type 参数设置为 NodePort。
kubectl edit svc <服务名称>
3、分别获取 pod 所在的节点地址和节点端口。
kubectl describe pod <pod 名称>
kubectl describe svc <服务名称>
4.、连接节点。
psql -h <pgpool 节点地址> -p <节点端口> -U postgres -d postgres
通过以上操作您可以连接到 RadonDB PostgreSQL 客户端节点了。
总结参考
KubeSphere GitHub:https://github.com/kubesphere/kubesphere