
点击蓝字关注我们
此方法适用于无法访问互联网且没有卫星存储库的环境。它涉及使用TPAexec通过Docker将所有必需的包下载到本地目录。本地存储库将仅包含用于构建与包下载过程中引用的config.yml文件中定义的相同集群或类似集群的包。
以下步骤以PGD5集群为例,但此方法也适用于任何架构和任何版本。
对于本示例,我们需要两台TPAexec主机:一台可以访问Internet,另一台不能访问Internet。在本示例中,它们都位于同一本地网络上,但唯一的要求是它们可以相互访问。
环境(所有机器运行RedHat 8):

只有主机TPAWITHNET可以访问互联网,我们将使用它在Docker的帮助下下载软件包。因此,请确保在可访问Internet的TPAexec主机上安装了Docker。
创建本地存储库的步骤如下。
1. 在TPAWITHNET主机上的用户主目录中创建一个简单的PGD 5集群目录:
mkdir -p ~/mycluster/local-repo/RedHat/8/repodata --architecture PGD-Always-ON \--platform bare \--edb-postgres-advanced 15 \--redwood \--location-names dc1 \--pgd-proxy-routing global \--keyring legacy \--nogit=
2. 安在TPA集群目录下创建一个local-repo目录。例如,对于RedHat 8:
mkdir -p ~/mycluster/local-repo/RedHat/8/repodata
注意,必须使用以下命名法创建本地存储库目录路径:
local-repo:这是TPAexec将查找的目录名称,用于存储所有下载的包;
RedHat:准备下载兼容包的Linux发行版;
8:Linux发行版的版本;
repodata:将包含存储库数据的子目录。
3. 将软件包下载到local-repo目录:
tpaexec download-packages ~/mycluster --docker-image tpa/redhat:8
如果查看一下config.yml,会看到有以下存储库,构建集群所需的所有包都将从中下载:
...edb_repositories:- enterprise- postgres_distributed...yum_repository_list:- EPEL...
scp -r root@192.168.1.100:~/mycluster/local-repo root@192.168.1.101:~/mycluster/
cluster_vars:...use_local_repo_only: truedisable_repository_checks: trueedb_repositories: []yum_repositories: []...instance_defaults:platform: barevars:local_source_directories:- ~/mycluster/local-repo:/var/opt/tpa/local-repo:roansible_user: root...
设置use_local_repo_only不会从目标计算机中删除已存在的存储库。只会禁用它们,允许在需要时手动重新启用这些存储库。
设local_source_directorie会将local-repo目录从TPAexec主机复制到所有目标计算机的/var/opt/tpa/local-repo。:ro 表示只读。
如果使用Docker平台来测试设置,则必须配置instance_defaults下和vars之外的 use_local_repo_only,如下例所示:
instance_defaults:platform: dockerimage: tpa/redhat:8local_source_directories:- mycluster/local-repo:/var/opt/tpa/local-repo:rovars:ansible_user: root
7. 这是裸机部署的示例config.yml文件:
---architecture: PGD-Always-ONcluster_name: mycluster2cluster_tags: {}keyring_backend: legacycluster_vars:use_local_repo_only: truedisable_repository_checks: trueapt_repository_list: []bdr_database: bdrdbbdr_node_group: mycluster2bdr_node_groups:- name: mycluster2options:enable_proxy_routing: true- name: dc1_subgroupoptions:location: dc1parent_group_name: mycluster2bdr_version: '5'default_pgd_proxy_options:listen_port: 6432edb_repositories: []epas_redwood_compat: truefailover_manager: pgdpostgres_coredump_filter: '0xff'postgres_flavour: epaspostgres_version: '15'preferred_python_version: python3use_volatile_subscriptions: falseyum_repository_list: []locations:- Name: dc1instance_defaults:platform: barevars:ansible_user: rootlocal_source_directories:- ~/mycluster/local-repo:/var/opt/tpa/local-repo:roinstances:- Name: NODE1backup: BARMAN-SERVERip_address: 192.168.1.102location: dc1node: 1role:- bdr- pgd-proxyvars:bdr_child_group: dc1_subgroupbdr_node_options:route_priority: 100- Name: NODE2ip_address: 192.168.1.103location: dc1node: 2role:- bdr- pgd-proxyvars:bdr_child_group: dc1_subgroupbdr_node_options:route_priority: 100- Name: NODE3ip_address: 192.168.1.104location: dc1node: 3role:- bdr- pgd-proxyvars:bdr_child_group: dc1_subgroupbdr_node_options:route_priority: 100- Name: BARMAN-SERVERip_address: 192.168.1.105location: dc1node: 4role:- barman
8. 运行tpaexec provision,然后运行tpaexec deploy。如果没有在TPAexec主机和裸部署的目标节点之间正确配置SSH访问,则必须按照此处的以下说明进行操作:bare(-metalservers)一节。
https://www.enterprisedb.com/docs/tpa/latest/platform-bare/
部署后,如果使用yum repolist命令检查目标计算机,则只有tpa-local-repo可用。
$ yum repolistrepo id repo nametpa-local-repo Local repository (set up by TPA)
关于公司
感谢您关注新智锦绣科技(北京)有限公司!作为 Elastic 的 Elite 合作伙伴及 EnterpriseDB 在国内的唯一代理和服务合作伙伴,我们始终致力于技术创新和优质服务,帮助企业客户实现数据平台的高效构建与智能化管理。无论您是关注 Elastic 生态系统,还是需要 EnterpriseDB 的支持,我们都将为您提供专业的技术支持和量身定制的解决方案。
欢迎关注我们,获取更多技术资讯和数字化转型方案,共创美好未来!
![]() | ![]() |
Elastic 微信群 | EDB 微信群 |

发现“分享”和“赞”了吗,戳我看看吧






