暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何通过 TPAexec 创建本地存储库用于离线环境安装 EDB 软件

新智锦绣 2024-12-19
123

点击蓝字关注我们


此方法适用于无法访问互联网且没有卫星存储库的环境。它涉及使用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
          ...
          4. 访问TPAexec主机TPAWITHOUTNET并创建集群目录(重复步骤1)。
          5. 将local-repo目录从TPAWITHNET计算机复制到TPAWITHOUTNET。确保两个TPAexec主机可以使用SSH相互通信:
            scp -r root@192.168.1.100:~/mycluster/local-repo root@192.168.1.101:~/mycluster/
            6. 由于local-repo目录现在存在于无法访问Internet的TPA主机的TPA集群中,需要向config.yml文件添加一些重要设置以利用本地存储库:
              cluster_vars:
              ...
              use_local_repo_only: true
              disable_repository_checks: true
              edb_repositories: []
              yum_repositories: []
              ...


              instance_defaults:
              platform: bare
              vars:
              local_source_directories:
              - ~/mycluster/local-repo:/var/opt/tpa/local-repo:ro
              ansible_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: docker
                image: tpa/redhat:8
                local_source_directories:
                - mycluster/local-repo:/var/opt/tpa/local-repo:ro
                vars:
                ansible_user: root

                7. 这是裸机部署的示例config.yml文件:

                  ---
                  architecture: PGD-Always-ON
                  cluster_name: mycluster2
                  cluster_tags: {}


                  keyring_backend: legacy


                  cluster_vars:
                  use_local_repo_only: true
                  disable_repository_checks: true
                  apt_repository_list: []
                  bdr_database: bdrdb
                  bdr_node_group: mycluster2
                  bdr_node_groups:
                  - name: mycluster2
                  options:
                  enable_proxy_routing: true
                  - name: dc1_subgroup
                  options:
                  location: dc1
                  parent_group_name: mycluster2
                  bdr_version: '5'
                  default_pgd_proxy_options:
                  listen_port: 6432
                  edb_repositories: []
                  epas_redwood_compat: true
                  failover_manager: pgd
                  postgres_coredump_filter: '0xff'
                  postgres_flavour: epas
                  postgres_version: '15'
                  preferred_python_version: python3
                  use_volatile_subscriptions: false
                  yum_repository_list: []


                  locations:
                  - Name: dc1


                  instance_defaults:
                  platform: bare
                  vars:
                  ansible_user: root
                  local_source_directories:
                  - ~/mycluster/local-repo:/var/opt/tpa/local-repo:ro


                  instances:
                  - Name: NODE1
                  backup: BARMAN-SERVER
                  ip_address: 192.168.1.102
                  location: dc1
                  node: 1
                  role:
                  - bdr
                  - pgd-proxy
                  vars:
                  bdr_child_group: dc1_subgroup
                  bdr_node_options:
                  route_priority: 100
                  - Name: NODE2
                  ip_address: 192.168.1.103
                  location: dc1
                  node: 2
                  role:
                  - bdr
                  - pgd-proxy
                  vars:
                  bdr_child_group: dc1_subgroup
                  bdr_node_options:
                  route_priority: 100
                  - Name: NODE3
                  ip_address: 192.168.1.104
                  location: dc1
                  node: 3
                  role:
                  - bdr
                  - pgd-proxy
                  vars:
                  bdr_child_group: dc1_subgroup
                  bdr_node_options:
                  route_priority: 100
                  - Name: BARMAN-SERVER
                  ip_address: 192.168.1.105
                  location: dc1
                  node: 4
                  role:
                  - 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 repolist


                    repo id repo name
                    tpa-local-repo Local repository (set up by TPA)
                    如果有RedHat系统所需要系统软件,可以用OS介质,在/etc/yum.repos.d/中手动创建OS本地库。



                    关于公司

                    感谢您关注新智锦绣科技(北京)有限公司!作为 Elastic 的 Elite 合作伙伴及 EnterpriseDB 在国内的唯一代理和服务合作伙伴,我们始终致力于技术创新和优质服务,帮助企业客户实现数据平台的高效构建与智能化管理。无论您是关注 Elastic 生态系统,还是需要 EnterpriseDB 的支持,我们都将为您提供专业的技术支持和量身定制的解决方案。


                    欢迎关注我们,获取更多技术资讯和数字化转型方案,共创美好未来!

                    Elastic 微信群

                    EDB 微信群


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



                    文章转载自新智锦绣,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论