更新时间: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 远程模式架构图

准备工作

  • 已创建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

  1. 通过wget命令获取PoWA-archivist源码:
    wget https://github.com/powa-team/powa-archivist/archive/refs/tags/REL_4_1_2.tar.gz
  2. 将下载好的REL_4_1_2.tar.gz进行解压。
  3. 进入解压后的目录,执行命令完成安装。
    make && make install

安装PoWA-collector、PoWA-web

  1. 切换到RDS for PostgreSQL数据库用户下,本次演示使用的是postgres。
    su - postgres
  2. 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插件

  1. 使用root用户登录RDS for PostgreSQL实例的powa数据库。(若不存在,请先自行创建powa数据库)
  2. 在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

  1. 环境准备。

    请按照以下顺序执行,否则安装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
  2. 安装python 3.9.9。
    1. 使用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
    2. 创建软链接。
      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
  3. 验证安装是否成功。
    1. 验证安装,重点验证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()
    2. 如果有返回,说明安装成功。执行以下命令退出。
      quit()