更新时间:2024-12-27 gmt 08:00

通过内网连接rds for postgresql实例(linux方式)-九游平台

rds for postgresql实例购买完成后,可以先登录到linux弹性云服务器,在ecs上安装postgresql客户端,然后执行psql命令行通过postgresql内网ip连接到实例。

通过postgresql客户端连接实例的方式有ssl连接。ssl连接通过了加密功能,具有更高的安全性。

创建rds for postgresql实例时默认开启ssl,实例创建完成后,不支持关闭。

开启ssl连接数据库实例后,数据库的只读、读写性能是未开启ssl连接数据库实例的80%左右。

步骤1:购买ecs

  1. ,查看是否有弹性云服务器。
    • 有linux弹性云服务器,执行3
    • 无linux弹性云服务器,执行2
    图1 ecs实例
  2. 购买弹性云服务器时,选择linux操作系统,例如centos。

    由于需要在ecs下载postgresql客户端,因此需要为ecs绑定弹性公网ip(eip),并且选择与rds for postgresql实例相同的区域、vpc和安全组,便于rds for postgresql和ecs网络互通。

    购买linux弹性云服务器请参考《弹性云服务器用户指南》中“购买弹性云服务器”章节。

  3. 在ecs实例基本信息页,查看ecs实例的区域和vpc。
    图2 ecs基本信息
  4. 在rds for postgresql实例概览页,查看rds实例的区域和vpc。
    图3 postgresql概览
  5. 确认ecs实例与rds for postgresql实例是否处于同一区域、同一vpc内。
    • 是,执行安装postgresql客户端(15及以下版本)
    • 如果不在同一区域,请重新购买实例。不同区域的云服务之间内网互不相通,无法访问实例。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。
    • 如果不在同一vpc,可以修改ecs的vpc,请参见切换虚拟私有云

步骤2:测试连通性并安装postgresql客户端

  1. 登录ecs实例,请参见《弹性云服务器用户指南》中“linux弹性云服务器远程登录(vnc方式)”。
  2. 在rds“实例管理”页面,单击实例名称进入“概览”页面。
  3. 选择“连接管理”,在“连接信息”模块获取实例的内网地址和数据库端口。
    图4 连接信息
  4. 在ecs上测试是否可以正常连接到rds for postgresql实例内网地址的端口。
    curl -kv 192.168.0.7:5432
    • 如果可以通信,说明网络正常。
    • 如果无法通信,请检查安全组规则。
      • 查看ecs的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将rds实例的内网ip地址和端口添加到出方向规则。
        图5 ecs的安全组
      • 查看rds的安全组的入方向规则,需要将ecs实例的私有ip地址和端口添加到入方向规则。
  5. 安装postgresql客户端。

    postgresql社区提供了针对不同操作系统的。通过操作系统的安装工具直接下载安装。此安装方式比较简单,但是对ecs操作系统有要求,只有postgresql社区中支持的操作系统才可以使用该安装方式。

    使用操作系统默认安装,当前使用的linux操作系统是centos 7,通过工具安装最高版本是15版本。

    图6 获取安装工具

    执行安装命令:

    sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/el-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    sudo yum install -y postgresql15-server

    查看是否安装成功:

    psql -v
    图7 安装成功
  1. 登录ecs实例,请参见《弹性云服务器用户指南》中“linux弹性云服务器远程登录(vnc方式)”。
  2. 在rds“实例管理”页面,单击实例名称进入“概览”页面。
  3. 选择“连接管理”,在“连接信息”模块获取实例的内网地址和数据库端口。
    图8 连接信息
  4. 在ecs上测试是否可以正常连接到rds for postgresql实例内网地址的端口。
    curl -kv 192.168.0.7:5432
    • 如果可以通信,说明网络正常。
    • 如果无法通信,请检查安全组规则。
      • 查看ecs的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将rds实例的内网ip地址和端口添加到出方向规则。
        图9 ecs的安全组
      • 查看rds的安全组的入方向规则,需要将ecs实例的私有ip地址和端口添加到入方向规则。
  5. 安装postgresql客户端。

    ,该安装方式对rds for postgresql实例的版本以及ecs的操作系统没有限制。

    下面以huawei cloud euleros 2.0镜像的ecs为例,安装postgresql 16.4版本客户端。

    图10 查看ecs镜像
    1. 要支持ssl,需要在ecs上提前下载openssl。
      sudo yum install -y openssl-devel
    2. 在获取代码下载链接,使用wget直接下载安装包或者下载到本地后上传到ecs上。
      wget https://ftp.postgresql.org/pub/source/v16.4/postgresql-16.4.tar.gz
    3. 解压安装包。
      tar xf postgresql-16.4.tar.gz
    4. 编译安装。
      cd postgresql-16.4
      ./configure --without-icu --without-readline --without-zlib --with-openssl
      make -j 8 && make install

      不指定--prefix,表示默认路径为“/usr/local/pgsql”,因为只安装客户端采用最简安装。

      图11 编译安装
    5. 配置环境变量,在“/etc/profile”文件中添加以下内容。
      export path=/usr/local/pgsql/bin:$path
      export ld_library_path=/usr/local/pgsql/lib:$ld_library_path
      source /etc/profile
    6. 测试psql是否可使用。
      psql -v
      图12 测试psql可用

步骤3:使用命令行连接实例(ssl加密)

  1. 在rds“实例管理”页面,单击实例名称进入“概览”页面。
  2. 选择“连接管理”。
  3. 在“连接信息”模块,单击“ssl”处的,下载“certificate download”压缩包,解压后获取根证书(ca.pem)和捆绑包(ca-bundle.pem)。
    图13 下载证书
  4. 将根证书(ca.pem)上传到ecs。
    • 推荐使用tls v1.2及以上协议,低于该版本可能存在安全风险。
    • 协议算法推荐使用eecdh ecdsa aesgcm:eecdh arsa aesgcm:edh arsa aesgcm:edh adss aesgcm:!anull:!enull:!low:!3des:!md5:!exp:!srp:!rc4,使用其他选项可能存在安全风险。
    • 根证书捆绑包(ca-bundle.pem)包含2017年4月之后的新根证书和原有根证书。
    • ca.pem和ca-bundle.pem都可以实现ssl连接,ca-bundle.pem文件包含ca.pem,使用ca.pem即可。
  5. 在ecs上执行以下命令连接rds for postgresql实例。

    psql --no-readline -h -p "dbname= user= sslmode=verify-ca sslrootcert="

    示例:

    psql --no-readline -h 192.168.0.7 -p 5432 "dbname=postgres user=root sslmode=verify-ca sslrootcert=/root/ca.pem"

    表1 参数说明

    参数

    说明

    3中获取的内网地址。

    3中获取的数据库端口,默认5432。

    需要连接的数据库名,默认的管理数据库是postgres。

    管理员账号root。

    ssl连接ca证书路径,该文件需放在执行该命令的路径下。

    sslmode

    ssl连接模式,设置为“verify-ca”,通过检查证书链(certificate chain,以下简称ca)来验证服务是否可信任。

  6. 出现如下提示时,输入数据库账号对应的密码。
    password:
    出现如下信息,表示连接成功。
    ssl connection (protocol: tlsv1.2, cipher: ecdhe-rsa-aes256-gcm-sha384, bits: 256, compression: off)

后续操作

登录实例后,您可以创建数据库,进行数据迁移等操作,具体请参见:

相关文档

网站地图