随着数据量的增长和用户需求的多样化,数据库性能和可用性有着不小的挑战。本文将使用CLup这一强大的数据库管理平台对数据库集群配置读写分离与负载均衡以优化数据库性能。
CLup数据库管理平台是专为PostgreSQL、PolarDB等数据库开发的管理平台,有着以下几方面的功能:
快速便捷地创建和管理数据库实例与数据库集群,还包括快速搭建备库、切换集群内主备库、修改集群内主备库级联关系、修改数据库配置文件等功能。
提供数据库集群的高可用功能,提供容灾保障,为您数据库保驾护航。
数据库的备份与恢复功能,可以对数据库定时定点地进行物理备份与逻辑备份,并自动做好归档,可以在Web界面上便捷地恢复数据库。
监控与告警功能,提供数据库和主机的实时监控,时刻监控数据库的正常运行,并提供告警功能,检测到异常后及时告警。
1.安装CLup
首先您需要其中一台主机上安装CLup管理平台,执行以下命令即可一键安装:
wget -qO tmp/clup.sh --no-check-certificate https://get.csudata.com/csuinst/clup.sh && bash tmp/clup.sh clup install
wget -qO tmp/clup.sh --no-check-certificate https://get.csudata.com/csuinst/clup.sh && bash tmp/clup.sh clup-agent install

初始账号:admin
初始密码:cstech
2.创建PostgreSQL流复制集群
HA集群->集群定义->创建集群->创建PostgreSQL流复制集群,填写相关信息即可快速创建一个PostgreSQL流复制集群。
创建过程参考CLup官方文档:https://www.csudata.com/clup/manual/5.x/10226
3.安装CSTLB模块
在每台数据库主机上安装CSTLB模块:
下载安装包:
wget https://gitee.com/csudata_admin/clup-community/releases/download/4.2.2/cstlb2.0.0.x86_64.tar.xz
cd /opttar xf cstlb2.0.0.x86_64.tar.xzcd cstlbexport CSTLB_TOKEN=1e82ff78-d73f-11e7-8a50-60f81dd129c2nohup ./cstlb 2>&1 >cstlb.log &
注意此处CSTLB_TOKEN可以为任意一个UUID,但必须和CLUP配置的cstlb_token参数同步。如图所示:
也可以把cstlb设置为开机自启。创建服务文件,内容如下:
vi /etc/systemd/system/cstlb.service[Unit]Description=cstlbAfter=network.target[Service]Type=simpleUser=rootEnvironment="CSTLB_TOKEN=1e82ff78-d73f-11e7-8a50-60f81dd129c2"ExecStart=/opt/cstlb/cstlb[Install]WantedBy=multi-user.target
systemctl daemon-reloadsystemctl start cstlbsystemctl enable cstlb
HA集群->集群定义->编辑,进入集群信息编辑界面,在此界面中配置集群的只读VIP、只读VIP所在主机、均衡器列表这三项配置:

三项配置的说明如下:
只读VIP:选择一个空的IP作为只读VIP
只读VIP所在主机:集群第一次上线时,会把只读VIP加载到这台机器上。
均衡器列表:需要配置多个,通常由集群的备库地址加CSTLB的8082管理端口组成。这将配置CSTLB读请求负载均衡到哪些备库上。
配置好后,把数据库集群上线,此时查看只读VIP所在主机是否存在只读VIP:

5.测试负载均衡:
使用数据库连接工具连接只读VIP的5435端口(注意是访问CSTLB程序对接数据库的端口,默认5435端口)
[pg14@clup ~]$ psql -h 10.197.165.202 -p 5435 -U postgres -d postgresPassword for user postgres:psql (14.13)Type "help" for help.postgres=# select inet_server_addr();inet_server_addr------------------10.197.165.114(1 row)
[pg14@clup ~]$ psql -h 10.197.165.202 -p 5435 -U postgres -d postgresPassword for user postgres:psql (14.13)Type "help" for help.postgres=# select inet_server_addr();inet_server_addr------------------10.197.165.113(1 row)
可以看到数据库的读连接分发到配置的两个备库里了,负载均衡已经正常工作。而写请求则可以访问集群VIP,读请求访问只读VIP就实现了读写分离。
点击关注乘数科技
扫码添加乘数小助手微信号
邀您进入《PostgreSQL修炼之道:从小工到专家》
读者技术交流群






