跳转到主要内容

Postgres部署脚本是一种简单的方式来部署PostgreSQL、EDB Postgres

项目描述

入门

edb-deployment 工具是一种简单的方式来配置云资源并部署 PostgreSQL、EDB Postgres Advanced Server 和工具(高可用性、备份/恢复、监控、连接池)。edb-deployment 还可以用于在现有基础设施(如物理服务器(裸机)或本地虚拟机)上部署 Postgres 架构。

支持的云提供商是 AWSAzureGoogle Cloud

edb-deployment 帮助用户部署 Postgres 参考架构。参考架构的列表和详细信息可以在此处找到。

edb-deployment 是一个开源工具,并由 EDB 支持团队非官方支持。它由本仓库的 GitHub 会员维护和支持。请通过提交问题和提供拉取请求来提供反馈。

在开始深入研究此存储库之前,最好熟悉特定云(AWS、Azure 和 Google Cloud)部署过程中的步骤。

先决条件

edb-deployment 依赖于以下组件。在使用之前,请安装以下组件。

  1. Python 3
  2. pip3

第三方先决条件

  1. 最新版本的 云 CLI 或 SDK(AWS、Azure 或 Google Cloud)

    根据云提供商,在系统上安装以下内容的最新版本:AWS CLI、Azure CLI 或 Google Cloud SDK。

  2. Terraform >= 1.3.6

  3. Ansible >= 2.10.8

  4. AWS CLI >= 2.0.45

  5. Azure CLI >= 2.23.0

  6. Google Cloud CLI >= 329.0.0

为了帮助安装上述第三方先决条件,edb-deployment 提供了适用于 Linux 和 Darwin(macOS)的 setup 子命令。请参阅先决条件安装部分。

安装

从源代码

使用 pip3 命令进行安装。一旦代码被下载(无论是通过克隆存储库还是下载发布版),请转到创建的文件夹并运行 pip3 install 命令。

$ cd postgres-deployment
$ sudo pip3 install . --upgrade

从 PyPI

$ sudo pip3 install edb-deployment

通过运行以下命令确保工具已正确安装:

$ edb-deployment --version

Shell 自动完成

edb-deployment 支持使用 tab 键的命令行自动完成。

支持的 shell 是 bashzsh

要启用当前会话中的自动完成,必须运行以下命令:

$ eval "$(register-python-argcomplete edb-deployment)"

要为所有会话启用自动完成,必须将上述命令添加到您的 ~/.bashrc 文件或 ~/.zshrc 文件末尾,具体取决于您使用的 shell。

先决条件安装

为了简化第三方先决条件工具(如 awsterraformansible 等)的安装,edb-deployment 提供了 setup 子命令。

要执行 setup 子命令,需要以下包:gcc(仅限 Linux)、python3-devel(仅限 Linux)、unzipwgettar。这些包应通过常规包管理器(dnfaptbrew 等)安装。

针对 Debian 用户:必须存在 libffi-dev 包。

最后,必须以 root 权限安装 Python virtualenv

$ sudo pip3 install virtualenv

先决条件自动化安装

$ edb-deployment <CLOUD_VENDOR> setup

用法

每个新的部署将在一个专用命名空间下完成,这是 <PROJECT_NAME>

edb-deployment 命令行界面功能通过子命令实现。每个子命令可以像这样执行

$ edb-deployment <CLOUD_VENDOR> <SUB_COMMAND> [<PROJECT_NAME>]

云提供商列表

  • aws:Amazon Web Services
  • aws-pot:在 AWS 云上的 EDB POT(技术证明)
  • aws-rds:Amazon Web Services RDS for PostgreSQL
  • aws-rds-aurora:Amazon Aurora
  • azure:Microsoft Azure Cloud
  • azure-pot:在 Azure 云上的 EDB POT(技术证明)
  • azure-db:Microsoft Azure Database
  • gcloud:Google Cloud
  • gcloud-pot:在 Google Cloud 上的 EDB POT(技术证明)
  • gcloud-sql:Google Cloud SQL for PostgreSQL

本地测试

子命令

  • configure:新项目初始化和配置
  • provision:云资源供应
  • destroy:云资源销毁
  • deploy:Postgres 和工具部署
  • show:显示配置
  • display:显示项目清单
  • passwords:显示项目密码
  • list:列出项目
  • specs:显示云提供商默认规范
  • logs:显示项目日志
  • remove:删除项目

使用方法

新项目的部署应遵循以下工作流程

  1. 配置云凭证
  2. 项目配置
  3. 云资源配置
  4. Postgres和工具部署

配置云凭证

此步骤取决于目标云提供商。

如果已使用setup子命令安装了云工具,建议更新PATH环境变量以包含工具二进制位置

$ export PATH=$PATH:$HOME/.edb-cloud-tools/bin

AWS凭证配置

AWS凭证配置将通过aws工具完成。对于此步骤,我们需要获取您的AWS访问密钥IDAWS秘密访问密钥。有关Amazon访问密钥管理的更多信息,请访问官方文档页面

运行以下命令并输入访问密钥ID和秘密访问密钥

$ aws configure

Azure凭证配置

可以使用az工具通过以下命令实现Azure云凭证配置

$ az login --use-device-code

GCloud凭证配置

GCloud凭证配置比其他云提供商的步骤更多。GCloud项目ID是必需的。

  1. 使用您的电子邮件地址登录
$ gcloud auth login <LOGIN_EMAIL> --no-launch-browser
  1. 在浏览器中打开链接并复制提供的验证码。
  2. 项目配置
$ gcloud config set project <PROJECT_ID>
  1. 要查找服务的IAM账户,请输入以下命令以列出服务账户
$ gcloud iam service-accounts list
  1. 最后,要创建和下载新的服务账户密钥
$ gcloud iam service-accounts keys create ~/accounts.json --iam-account=<IAM_ACCOUNT>

必须保留JSON文件$HOME/accounts.json,并且edb-deployment将需要它。

项目配置

一旦配置了云提供商的凭证,就可以进行项目配置步骤。

云提供商规范

edb-deployment为要配置的云资源提供默认配置值,例如实例类型磁盘大小操作系统镜像附加卷等。

要更改这些配置值,首先需要使用以下命令导出默认值

$ edb-deployment <CLOUD_VENDOR> specs > my_configuration.json

在裸金属服务器上部署时,必须通过规范执行IP地址和SSH用户配置

$ edb-deployment baremetal specs --reference-architecture EDB-RA-1 > baremetal-edb-ra-1.json

baremetal-edb-ra-1.json文件将包含

{
  "ssh_user": null,
  "pg_data": null,
  "pg_wal": null,
  "postgres_server_1": {
    "name": "pg1",
    "public_ip": null,
    "private_ip": null
  },
  "pem_server_1": {
    "name": "pem1",
    "public_ip": null,
    "private_ip": null
  },
  "backup_server_1": {
    "name": "backup1",
    "public_ip": null,
    "private_ip": null
  }
}

然后,您可以编辑并更新存储在JSON文件中的资源配置。

项目初始化

项目初始化将通过configure子命令完成

$ edb-deployment <CLOUD_VENDOR> configure <PROJECT_NAME> \
  -a <REFERENCE_ARCHITECTURE_CODE> \
  -o <OPERATING_SYSTEM> \
  -t <PG_ENGINE_TYPE> \
  -v <PG_VERSION> \
  -u "<EDB_REPO_USERNAME>:<EDB_REPO_PASSWORD>" \
  -r <CLOUD_REGION> \
  -s my_configuration.json

注意

  • REFERENCE_ARCHITECTURE_CODE

    参考架构代码名称。允许的值是:针对具有一个备份服务器和一个PEM监控服务器的单个Postgres节点部署的EDB-RA-1,针对具有基于法定多数的同步复制和自动故障转移的3个Postgres节点部署的EDB-RA-2,针对扩展EDB-RA-2以包含3个PgPoolII节点的EDB-RA-3,以及针对设置2层配置以进行OLTP工作负载基准测试的HammerDB-TPROC-C。默认:EDB-RA-1

  • OPERATING_SYSTEM

    操作系统。允许的值是:CentOS7RockyLinux8RedHat7RedHat8。默认:RockyLinux8

  • PG_ENGINE_TYPE

    Postgres引擎类型。允许的值是:PG用于PostgreSQL,EPAS用于EDB Postgres Advanced Server。默认:PG

  • PG_VERSION

    PostgreSQL或EPAS版本。允许的值是:11121314。默认:14

  • "EDB_REPO_USERNAME:EDB_REPO_PASSWORD"

    EDB软件包仓库凭证。必需。

  • CLOUD_REGION

    云提供商区域。默认值取决于云提供商。

有关更多详细信息,请使用

$ edb-deployment <CLOUD_VENDOR> configure --help

云资源配置

在项目配置完成后,我们可以继续进行云资源配置

$ edb-deployment <CLOUD_VENDOR> provision <PROJECT_NAME>

组件部署

最后,我们可以使用deploy子命令部署组件

$ edb-deployment <CLOUD_VENDOR> deploy <PROJECT_NAME>

其他功能

项目列表

$ edb-deployment <CLOUD_VENDOR> list

执行Ansible预部署剧本

$ edb-deployment <CLOUD_VENDOR> deploy --pre-deploy-ansible pre_deploy_playbook.yml <PROJECT_NAME>

执行Ansible后部署剧本

$ edb-deployment <CLOUD_VENDOR> deploy --post-deploy-ansible post_deploy_playbook.yml <PROJECT_NAME>

显示项目清单

$ edb-deployment <CLOUD_VENDOR> display <PROJECT_NAME>

显示项目密码

$ edb-deployment <CLOUD_VENDOR> passwords <PROJECT_NAME>

云资源销毁

$ edb-deployment <CLOUD_VENDOR> destroy <PROJECT_NAME>

项目树删除

$ edb-deployment <CLOUD_VENDOR> remove <PROJECT_NAME>

打开与项目一个主机的SSH连接

$ edb-deployment <CLOUD_VENDOR> ssh <PROJECT_NAME> <NODE_NAME>

注意:可以通过执行display子命令找到节点名称列表。可以是:epas1epas2pemserver1等...

获取SSH密钥和ssh_config文件的副本。文件已复制到当前目录

$ edb-deployment <CLOUD_VENDOR> get_ssh_keys <PROJECT_NAME>

注意:此子命令仅适用于aws-potazure-potgcloud-pot

许可证

原始作品版权所有 2019-2020,EnterpriseDB公司

版权所有。

在满足以下条件的情况下,允许重新分发和使用源代码和二进制代码,无论是否修改

  1. 源代码重新分发必须保留上述版权声明、本条件列表和以下免责声明。

  2. 二进制形式重新分发必须复制上述版权声明、本条件列表和以下免责声明在随分发提供的文档和其他材料中。

  3. 未经具体事先书面许可,不得使用EnterpriseDB或其贡献者的名称认可或推广源自本软件的产品。

本软件由版权所有者和贡献者提供,“按原样”以及任何明示或暗示的保证,包括但不限于对适销性和针对特定目的的适用性的暗示保证均予以否认。在任何情况下,版权所有者或贡献者不应对任何直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论此类损害是由于何种原因造成的,以及基于何种责任理论,无论是合同、严格责任还是侵权(包括疏忽或其他)。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

edb-deployment-3.15.0.tar.gz (97.4 kB 查看哈希值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面