使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。

使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL

1. 创建资源

开始实验之前,您需要先创建实验相关资源。

  1. 在实验室页面,单击创建资源
  2. (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、子用户信息等)。

说明:资源创建过程需要3~5分钟视资源不同开通时间有所差异,ACK等资源开通时间较长。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等。

实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。

资源创建成功,可在左侧的资源卡片中查看相关资源信息以及RAM子账号信息


2. 机器环境准备

注意:

  • 在后面的操作步骤中,第一句话写明了在哪些机器上做这个步骤的操作,千万不要搞错了机器。

本次使用的机器列表如下:

  • polardb01: 部署clup管理端,部署iSCSI服务端
  • polardb02: clup-agent 部署clup-agent,部署iSCSI客户端,运行PolarDB
  • polardb03: clup-agent 部署clup-agent,部署iSCSI客户端,运行PolarDB
  • polardb04: clup-agent 部署clup-agent,部署iSCSI客户端,运行PolarDB

云桌面中打开chorminum浏览器,登陆阿里云的控制台:

点击展开显示RAM用户登录所需要的用户名和密码信息:

输入或者粘贴密码登录:

登陆后,点击云服务器进入云服务器ECS控制台:

点远程连接:

这时出现的界面为workbench(workbench是阿里云提供的在WEB界面访问主机的命令行工具)。

用左侧的”云产品资源“中的密码登陆主机。

重复上面的操作,分别登陆另外三台云主机,这样四台云主机都登陆了,界面显示如下:

为了操作方便,我们把4台主机的workbench窗口依次排列,同时为了为了便于分辨,我们把四台云主机的名称分别改成polardb01、polardb02、polardb03、polardb04,注意需要把实验界面中的”云产品资源“中的”云服务器 ECS-1“的主机的名称改成polardb01,”云服务器 ECS-2“的主机的名称改成polardb02,”ECS-3“的主机的名称改成polardb03,”云服务器 ECS-4“的主机的名称改成polardb04,次序千万不要搞错了,因为只有第一台机器上才有数据盘,如果搞错了,后续的步骤会出错。如下图所示:

在终端中输入下面的命令给主机改名:

hostnamectl set-hostname XXXXXX

上面的命令中”XXXXXX“对于四台不同的主机分别为polardb01、polardb02、polardb03、polardb04。

然后输入exit退出后重新登陆:

这时可以看到主机名都改成了容易记忆的主机名polardb01、polardb02、polardb03、polardb04了:


3. 安装和启动iSCSI服务端程序

在第一台机器polardb01中安装iscsi服务端程序,在终端中运行下面的命令:

yum install -y scsi-target-utils.x86_64

如下图所示:

创建配置文件

vi /etc/tgt/conf.d/polardisk.conf

复制如下内容到配置文件中:

<target iqn.2008-09.polardb.com:target1>
    backing-store /dev/vdb
</target>

上面配置中的“/dev/vdb”就是我们为PolarDB准备的数据盘。

上面的iqn.2008-09.polardb.com:target1是iSCSI的target名称,后面在iSCSI的客户端机器上挂盘时会用到这个target名称。

启动iSCSI服务端的服务:

systemctl enable tgtd
systemctl start tgtd

运行命令systemctl status tgtd看服务是否启动成功:

如果上面的状态是"active (running)",表示启动成功。


4. 安装和启动iSCSI客户端程序

在第2台、第3台、第4台机器上做下面的操作。

安装iscsi客户端程序:

yum install -y iscsi-initiator-utils

启动iSCSI客户端服务:

systemctl start iscsi

挂载iSCSI共享盘:

用下面命令查看iSCSI服务端提供了哪些target名称(target名称你可以认为是一个服务名):

iscsiadm -m discovery -t st -p XXX.XXX.XXX.XXX:3260
iscsiadm -m node -T iqn.2008-09.polardb.com:target1 -l

上面的"XXX.XXX.XXX.XXX"是第一台机器的私有地址IP,请换成你实际的IP地址。

实际运行的效果如下:

这样我们就把第一台机器上的iSCSI盘共享的挂载到了第二台、第三台、第四台机器上了。

使用命令查看磁盘信息,命令如下

lsblk

发现挂过来的iSCSI盘是sda:


5. 配置共享盘的盘符

在第2台、第3台、第4台机器上做下面的操作。

本步骤是为了让共享盘变成一个/dev/nvme1n1的链接文件。因为PolarDB要求共享盘的路径是/dev/nvmeXnY的,而iSCSI挂过来的盘是/dev/sdX,所以我们加一个udev规则来建一个链接/dev/nvme1n1,其指向iSCSI共享盘。如果是把PolarDB运行在SAN共享存储上,也是可以这样的。

首先,查询我们将要使用到的ID_PATH信息,获得ID_PATH的方法是查看/dev/disk/by-path下的链接文件,命令如下:

ls -l /dev/disk/by-path

从上面可以看出我们挂载过来的sda盘的链接为”ip-172.16.1.2:3260-iscsi-iqn.2008-09.polardb.com:target1-lun-1",这就是我们需要的ID_PATH值,可以将其复制下来。

接下来使用vi命令打开我们的配置文件/etc/udev/rules.d/pfs_disk.rules:

vi /etc/udev/rules.d/pfs_disk.rules

在打开的文件中是空白的,键入 i 进行文档编辑,我们可以将如下配置复制进去,其中的ID_PATH一栏中的值,应当换成我们刚才查询到的实际值。

ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_PATH}=="ip-172.16.1.2:3260-iscsi-iqn.2008-09.polardb.com:target1-lun-1" SYMLINK+="nvme1n1"

然后键入Esc,输入:wq命令进行保存退出文档。

然后再运行命令:

udevadm test /block/sda

让规则生效,这时规则会生成一个链接文件:/dev/nvme1n1

使用如下命令就可以看到设置结果:

ls -l /dev/nvme1n1


6. 安装clup-server模块

在第一台机器上操作。

安装clupmdb模块,下载clupmdb安装包:

wget https://gitee.com/csudata/clup-community/releases/download/4.4.8/clupmdb4.0.0.el7.x86_64.bin

运行:bash clupmdb4.0.0.el7.x86_64.bin:

bash clupmdb4.0.0.el7.x86_64.bin

查看到==== Installation is complete.提示信息后,则表示安装完成。

安装clup-server模块,下载clup-server安装包:

wget https://gitee.com/csudata/clup-community/releases/download/4.4.8/clup4.4.8.el7.x86_64.bin

运行:bash clup4.4.8.el7.x86_64.bin:

bash clup4.4.8.el7.x86_64.bin

在出现==== Installation is complete.的提示信息则表示安装完成

安装完后,就可以用浏览器查看clup的界面的。在浏览器中输入:http://XXX.XXX.XXX.XXX:8090 ,其中XXX.XXX.XXX.XXX是第一台机器的公网IP地址,请换成实际的公网地址,在登陆页面中,用户名为admin,密码默认为:cstech ,登陆系统后出现CLup管理界面:


7. 安装clup-agent

在第2台、第3台、第4台机器上做下面的操作。

下载clup-agent安装程序:

wget https://gitee.com/csudata/clup-community/releases/download/4.4.8/clup-agent4.4.8.el7.x86_64.bin

运行:bash clup-agent4.4.8.el7.x86_64.bin:

[root@polardb-01 ~]# bash clup-agent4.4.8.el7.x86_64.bin
==== Installation is starting ...
==== Your ip is 172.16.2.252/24
Enter Clup Server IP Addr:

这时上面的命令要求输入clup-server的地址,即第一台主机的地址,输入第一台主机的私有地址172.16.2.1(应改成实际地址),注意千万不要输入错了,然后继续:

出现上述提示则表示安装成功

如果上面的过程中把clup-server的地址输入错误了,则手工编辑/opt/clup-agent/conf/clup-agent.conf中的地址为正确的值,然后重启clup-agent服务:

systemctl restart clup-agent

clup-agent正确启动后,到CLup的WEB管理界面中可以看到这三个clup-agent:


8. 安装PolarDB程序

在polardb02和polardb03和polardb04机器上做下面的操作。

安装PolarDB程序需要的依赖包:

yum install -y libaio.x86_64 libaio-devel.x86_64

下载编译好的PolarDB:

wget https://gitee.com/csudata/zqpolardb/releases/download/11.9.2/polardb-11.9.2.20230314.el7.x86_64.tar.xz

解压安装:

tar xf polardb-11.9.2.20230314.el7.x86_64.tar.xz
cd polardb_20230314
./install.sh

实际的安装过程:


9. 初始化PolarDB共享盘上的文件系统

只需要在polardb02、polardb03、polardb04中其中一台机器上做下面的操作即可,如选择在polardb02机器上执行即可。

执行:

pfs -C disk mkfs nvme1n1

实际执行的效果如下:

格式化成功后,可以看到"pfs mkfs succeeds"的信息:

这时我们成功的在共享磁盘上格式化好了文件系统,可以用命令:

pfs ls /nvme1n1/

查看共享磁盘中的文件系统的情况:


10. 使用CLup创建PolarDB高可用集群

进入到CLup的WEB管理界面中,进入到”系统管理“的"clup参数设置"中:

在上面的界面的搜索框中输入"pg_bin_path_string",然后把滚动条拉到最右边:

点上面界面中的"修改" 按钮:

在上面的界面中,把PolarDB软件的路径/usr/polardb_pfs/bin加入,注意由于是添加一个路径,前面要有一个英文逗号。即多个路径是由逗号分隔的。

进入到“HA集群“的"集群定义"中:

点上面的”创建Polardb共享存储集群",出现下面的界面:

在上面的界面中:选择第二台机器即名称为polardb02,操作系统用户输入polardb,UID输入751,数据库软件选择PolarDB的软件路径/usr/polardb_pfs/bin,

数据目录输入/data/polardb,优先级保持为0,防脑裂reset命令输入/bin/true,然后点 添加按钮,这台机器就做为主库添加进来了。

依次把第三台机器、第四台机器加入:

点下一步:

上面界面中,集群名称可以输入一个容易记忆的名称,数据库端口输入5432,DB中的用户输入poalrdb,DB中的密码输入一个你自己记住的密码,流复制用户输入polardb,集群vip这里输入0.0.0.0表示不使用vip,pfs_disk_name这里要输入我们前面为共享做的链接文件/dev/nvme1n1中的nvme1n1,polar_datadir和pfsdaemon_params保持默认即可。

然后点“检测“按钮,需要等一会,如果共享盘检测通过,则会跳到下一页:

保持默认,点下一步即可:

保持默认,点提交即可,会出来一个创建PolarDB过程的进度框:

成功后,即完成了PolarDB数据库的创建。

进入到”数据库管理“中的”数据库列表“中,如果一主两备的数据库状态都是”运行中“,则表示创建成功:


11. PoalrDB的初步使用

在CLup的“数据库管理”中的“数据库列表中”,然后把滚动条拉到最右边:

点主库这一行的“更多”按钮,在弹出菜单中点psql,就进入了一个WEB的psql界面:

在上面的界面中,输入“\c postgres”切换到数据库postgres中,然后建一张表:

create table test01(id int primary key, t text);

我们再打开一个备库的WEB psql界面,可以看到这样表在备库也有了:


12. PoalrDB的跨节点并行的功能体验

在主库的WEB端的psql界面,往之前的测试表中插入一些测试数据:

create table pxtest(id int, n int, t text);
insert into pxtest select seq, seq / 100000, md5(seq::text) from generate_series(1, 2000000) as seq;

如下图所示:

我们用如下命令查看一下执行计划:

explain select n, count(*) from pxtest group by n;

这时看到的是普通的执行计划。

我们执行下面的操作:

ALTER TABLE pxtest SET(px_workers=100);
SET polar_enable_px = ON;
SET polar_px_dop_per_node = 4;

然后再看执行计划,如下所示:

可以看到执行计划中有“PX Coordinator”,这就表示走跨节点的并行执行了。


13. 主备库切换测试

我们下面演示把第二台机器上的备库切换成主库,第一台机器上的主库变成备库的操作。

在CLup的WEB管理界面中:

在”HA集群“中的”HA管理中“:

点上面界面中的”详情“按钮,出现下面的界面:

在上面的界面中,在第二行的后面点”切换为主库"按钮:

点“确定”按钮,就会出现一个显示切换进度的窗口:

如果最后显示“Success”则表示切换成功了。

回到主界面后:

发现第二台变成了”master“,表示这时主库,第一台变成了“reader"表示是一个自读备库。

实验链接:https://developer.aliyun.com/adc/scenario/1945219614364904855ac7295dba6338

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
存储 关系型数据库 物联网
沉浸式学习PostgreSQL|PolarDB 14: 共享单车、徒步、旅游、网约车轨迹查询
本文的目的是帮助你了解如何设计轨迹表, 如何高性能的写入、查询、分析轨迹数据.
828 0
|
7月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB开源数据库进阶课1 搭建共享存储集群
在笔记本上构建PolarDB RAC环境,本文介绍了一种适用于Windows、macOS和Linux的方法:通过将宿主机上的文件模拟为块设备,并在多个Docker容器中使用loop设备共享该文件。此方法解决了macOS不支持直接挂载块设备的问题。
191 2
|
7月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课3 共享存储在线扩容
本文继续探讨穷鬼玩PolarDB RAC一写多读集群系列,介绍如何在线扩容共享存储。实验环境依赖《在Docker容器中用loop设备模拟共享存储》搭建。主要步骤包括:1) 扩容虚拟磁盘;2) 刷新loop设备容量;3) 使用PFS工具进行文件系统扩容;4) 更新数据库实例以识别新空间。通过这些步骤,成功将共享存储从20GB扩容至30GB,并确保所有节点都能使用新的存储空间。
142 1
|
负载均衡 Oracle 关系型数据库
关系型数据库Oracle 资源共享
【7月更文挑战第10天】
97 1
|
存储 弹性计算 固态存储
*PolarDB-PG开源版本 基于ECS+ESSD云盘共享存储的部署测评**
PolarDB-PG在阿里云ECS与ESSD云盘的组合下展现优秀性能,简化部署流程,提供高并发写入时低延迟稳定性。ESSD的高性能IOPS和读取速度优化了数据库表现,只读节点实现近乎实时数据访问。分布式部署保证高可用性,即使面对故障也能快速切换。尽管ESSD初期成本较高,但长期看能降低总体拥有成本,尤其适合高并发、大数据量场景。此解决方案平衡了性能、可用性和成本,是企业级应用的理想选择。
|
存储 Cloud Native 关系型数据库
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——共享分布式存储
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——共享分布式存储自制脑图
370 2
|
存储 对象存储 块存储
|
存储 Cloud Native 关系型数据库
阿里云瑶池PolarDB开源官网焕新升级:开放、共享和交流
近日,阿里云开源云原生数据库PolarDB官方网站全新升级上线。作为 PolarDB 开源项目与开发者、生态伙伴、用户沟通的平台,将以开放、共享、促进交流为宗旨,打造开放多元的环境,以实现共享共赢的目标。立即体验全新官网:https://openpolardb.com
|
存储 监控 负载均衡
乘数科技 × PolarDB开源云管控解决方案:如何用CLup管理PolarDB
本文介绍了乘数科技自主研发的PostgresSQL数据库管理平台CLup,以及如何使用CLup创建和管理PolarDB。
|
存储 关系型数据库 API

热门文章

最新文章