更新时间:2025-01-02 GMT+08:00
云上PostgreSQL实例部署PoWA
华为云上进行远程模式部署PoWA,需要一台ECS,并在ECS上安装PoWA-archivist、PoWA-collector、PoWA-web。本章节主要介绍PoWA-archivist、PoWA-collector、PoWA-web的安装过程。
架构图
远程模式部署PoWA的架构如下图所示:
图1 远程模式架构图
![](https://support.huaweicloud.com/intl/zh-cn/bestpractice-rds/zh-cn_image_0000001186169362.png)
准备工作
- 已创建RDS for PostgreSQL 12.6实例。
- 已创建ECS并绑定弹性公网IP,本次演示所创建的ECS系统镜像为:CentOS 8.2 64bit。
Python3的安装部署
安装PoWA-collecotor、PoWA-web依赖Python3环境,且使用pip3安装可以减少很多依赖环境安装的工作量。当前ECS已默认安装了 Python 3.6.8版本,由于版本偏低,安装最新版本的PoWA失败,建议安装最新的Python版本,详情请参见安装Python 3.9.9。
安装PoWA-archivist
- 通过wget命令获取PoWA-archivist源码:
wget https://github.com/powa-team/powa-archivist/archive/refs/tags/REL_4_1_2.tar.gz
- 将下载好的REL_4_1_2.tar.gz进行解压。
- 进入解压后的目录,执行命令完成安装。
make && make install
安装PoWA-collector、PoWA-web
- 切换到RDS for PostgreSQL数据库用户下,本次演示使用的是postgres。
su - postgres
- psycopg2 是 PoWA-collector、powa-web安装必不可少的依赖环境。
pip install psycopg2 pip install powa-collector pip install powa-web
安装完成后,查看路径树如下所示,表示PoWA-collector、PoWA-web均已安装完成。
/home/postgres/.local/bin ├── powa-collector.py ├── powa-web └── __pycache__
创建powa插件
- 使用root用户登录RDS for PostgreSQL实例的powa数据库。(若不存在,请先自行创建powa数据库)
- 在powa数据库中创建powa插件。
select control_extension('create', 'pg_stat_statements'); select control_extension('create', 'btree_gist'); select control_extension('create', 'powa');
常见问题
Q:在执行pip install psycopg2时可能会遇到报错python setup.py build_ext --pg-config /path/to/pg_config build。
A:配置RDS for PostgreSQL的bin、lib路径到环境变量中,重新执行 pip install psycopg2 即可完成安装。
安装Python 3.9.9
- 环境准备。
请按照以下顺序执行,否则安装Python3.9.9可能会有部分失败(SSL组件依赖失败),导致后续无法安装PoWA-collector、PoWA-web。
yum install readline* -y yum install zlib* -y yum install gcc-c++ -y yum install sqlite* -y yum install openssl-* -y yum install libffi* -y
- 安装python 3.9.9。
- 使用root用户执行下列命令。
mkdir env cd env wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz tar -xzvf Python-3.9.9.tgz cd Python-3.9.9 ./configure --prefix=/usr/local/python3.9.9 make && make install
- 创建软链接。
ln -s /usr/local/python3.9.9/bin/python3.9 /usr/bin/python ln -s /usr/local/python3.9.9/bin/pip3.9 /usr/bin/pip
- 使用root用户执行下列命令。
- 验证安装是否成功。
- 验证安装,重点验证SSL功能。
[root@ecs-ad4d Python-3.9.9]# python Python 3.9.9 (main, Nov 25 2021, 12:36:32) [GCC 8.4.1 20200928 (Red Hat 8.4.1-1)] on linux Type "help", "copyright", "credits" or "license" for more information. import ssl import urllib.request context = ssl._create_unverified_context() urllib.request.urlopen('https://www.example.com/',context=context).read()
- 如果有返回,说明安装成功。执行以下命令退出。
quit()
- 验证安装,重点验证SSL功能。