更新时间:2024-01-10 GMT+08:00

通过内网连接副本集实例

当应用部署在弹性云服务器上,且该弹性云服务器与数据库实例处于同一区域、同一VPC内时,建议使用内网方式通过弹性云服务器连接数据库实例。

本章节详细介绍使用MongoDB客户端通过内网方式连接GeminiDB Mongo副本集实例的过程。

操作系统使用场景:弹性云服务器的操作系统以Linux为例,本地使用的计算机系统以Windows为例。

连接副本集实例的方式有SSL连接和非SSL连接两种方法,其中SSL连接通过了加密功能,具有更高的安全性。为了提升数据在网络传输过程中的安全性,建议采用SSL方式。

使用须知

  • 目标实例必须与弹性云服务器在同一个虚拟私有云和子网内才能访问。
  • 弹性云服务器必须处于目标实例所属安全组允许访问的范围内。
    • 如果目标实例所属安全组为默认安全组, 则无需设置安全组规则。
    • 如果目标实例所属安全组非默认安全组,请查看安全组规则是否允许该弹性云服务器访问。

      如果安全组规则允许弹性云服务器访问,即可连接实例。

      如果安全组规则不允许弹性云服务器访问,需要在实例安全组添加一条入方向的访问规则。具体操作请参考设置安全组规则

前提条件

  1. 创建并登录弹性云服务器,请参见购买弹性云服务器登录弹性云服务器
  2. 在弹性云服务器上,安装MongoDB客户端。

    安装MongoDB客户端,请参见如何安装MongoDB客户端

SSL连接

使用SSL方式连接,请务必开启SSL连接,否则会报错。关于如何开启SSL连接,请参见设置SSL数据加密

  1. 登录管理控制台。
  2. 在服务列表中选择“数据库 > 云数据库 GeminiDB Mongo接口。
  3. “实例管理”页面,单击实例名称。
  4. 在左侧导航树,单击“连接管理”
  5. “基本信息”区域的“SSL”处,单击,下载根证书。
  6. 上传根证书至需要连接实例的弹性云服务器。

    根据客户端使用的计算机系统类型,选择相应的上传方法。

    • Linux操作系统下,可参考如下命令:
      scp<IDENTITY_FILE><REMOTE_USER>@<REMOTE_ADDRESS>:<REMOTE_DIR>
      • IDENTITY_FILE为存储根证书的文件目录,该文件目录权限为600。
      • REMOTE_USER为弹性云服务器云主机的操作系统用户。
      • REMOTE_ADDRESS为弹性云服务器云主机的主机地址。
      • REMOTE_DIR为将根证书上传到弹性云服务器云主机的文件目录。
    • Windows操作系统下,请使用远程连接工具上传根证书。

  7. 连接数据库实例。

    • 方式一:使用连接地址连接副本集实例(推荐)

      GeminiDB Mongo控制台界面提供了连接地址,默认包含主节点、备节点、隐藏节点的IP和端口。通过该方式连接实例,可同时访问副本集实例的主、备和隐藏节点,避免在发生主备节点切换后,从客户端写入数据报错的情况。

      命令格式:

      ./mongo "<连接地址>" --ssl --sslCAFile<FILE_PATH> --sslAllowInvalidHostnames

      表1 参数说明

      参数

      说明

      <连接地址>

      待连接实例的连接地址。

      您可以在实例管理页面,单击目标实例名称,进入基本信息页面。在连接管理页面获取内网连接地址。

      图1 获取内网地址
      • 其中,*****需要替换为数据库账号对应的密码。

        如果密码中包含特殊字符“@”、“!”和“%”需要分别替换为对应的十六进制的URL编码(ASSCII码)“%40”、“%21”和“%25”。

        例如:密码为****@%***!,对应的URL编码为****%40%25***%21。

      • “replicaSet=replica”中的“replica”是副本集的名称。华为云GeminiDB Mongo副本集统一固定为该名称且不可改变。

      <FILE_PATH>

      存放根证书的路径。

      示例:

      ./mongo "mongodb://rwuser:****@192.168.0.252:8635,192.168.0.31:8635/test?authSource=admin&replicaSet=replica" --ssl --sslCAFile/tmp/ca.crt --sslAllowInvalidHostnames

      • 为了保证副本集内部通讯不占用用户IP带宽等资源,副本集证书使用内部管理IP生成。通过内网SSL连接副本集实例时,需要添加“--sslAllowInvalidHostnames”。
      • 通过内网地址连接实例时,需要在连接信息前后添加英文双引号。
      返回如下信息,表示实例已连接成功:
      replica:PRIMARY>
    • 方式二:单个节点连接

      命令格式:

      ./mongo --host <DB_HOST> --port <DB_PORT> -u <DB_USER> -p --authenticationDatabase admin --ssl --sslCAFile<FILE_PATH> --sslAllowInvalidHostnames

      出现如下提示时,输入数据库账号对应的密码:

      Enter password:
      表2 参数说明

      参数

      说明

      <DB_HOST>

      待连接实例主节点或备节点的内网IP。

      主节点:即Primary节点,连接该节点后可执行数据的读写操作。

      备节点:即Secondary节点,连接该节点后仅可执行数据的读操作。

      您可以在实例管理页面,单击目标实例名称,进入基本信息页面。在连接管理 > 页签下获取对应节点的内网IP。

      图2 获取节点IP

      您也可以单击实例名称,在基本信息 > 节点信息处获取对应节点的内网IP。

      图3 获取内网IP

      <DB_PORT>

      数据库端口。

      <DB_USER>

      数据库账号,默认为rwuser。

      <FILE_PATH>

      存放根证书的路径。

      示例:

      ./mongo --host 192.168.0.31 --port 8635 -u rwuser -p --authenticationDatabase admin --ssl --sslCAFile /tmp/ca.crt --sslAllowInvalidHostnames

      返回如下信息,表示已成功连接对应的节点:

      • 针对副本集主节点的连接结果:
        replica:PRIMARY>
      • 针对副本集备节点的连接结果:
        replica:SECONDARY>

非SSL连接

使用非SSL方式连接,请务必关闭SSL连接,否则会报错。关于如何关闭SSL连接,请参见设置SSL数据加密

  1. 连接弹性云服务器
  2. 在客户端工具mongo所在的目录下,连接数据库实例

    • 使用连接地址连接副本集实例(推荐)

      GeminiDB Mongo控制台界面提供了连接地址,默认包含主节点、备节点、隐藏节点的IP和端口。通过该方式连接实例,可同时访问副本集实例的主、备和隐藏节点,避免在发生主备节点切换后,从客户端写入数据报错的情况。

      命令格式:

      ./mongo "<连接地址>"

      表3 参数说明

      参数名称

      说明

      <连接地址>

      您可以通过如下方式获取连接地址:

      单击实例名称,进入基本信息页面,在页面下方网络信息 > 连接地址处获取当前实例的连接地址。

      图4 基本信息页面获取连接地址

      或者您也可以单击实例名称,进入基本信息页面,单击左侧导航栏中的“连接管理”,在连接管理页面获取当前实例的连接地址。

      图5 连接管理页面获取连接地址
      • 其中,*****需要替换为数据库账号对应的密码。

        如果密码中包含特殊字符“@”、“!”和“%”需要分别替换为对应的十六进制的URL编码(ASSCII码)“%40”、“%21”和“%25”。

        例如:密码为****@%***!,对应的URL编码为****%40%25***%21。

      • “replicaSet=replica”中的“replica”是副本集的名称。华为云GeminiDB Mongo副本集统一固定为该名称且不可改变。

      示例如下:

      ./mongo "mongodb://rwuser:****@192.168.0.196:8635,192.168.0.67:8635,192.168.0.32:8635/test?authSource=admin&replicaSet=replica"

      出现如下信息,说明连接成功。
      replica:PRIMARY>
    • 连接单个节点

      您也可以通过连接指定节点的内网IP,访问单个节点。

      命令格式:

      ./mongo --host <DB_HOST> --port <DB_PORT> -u <DB_USER> -p --authenticationDatabase admin

      表4 参数说明

      参数

      说明

      <DB_HOST>

      待连接实例主节点或备节点的内网IP。

      • 主节点:即Primary节点,连接该节点后可执行数据的读写操作。
      • 备节点:即Secondary节点,连接该节点后仅可执行数据的读操作。

      您可以在实例管理页面,单击目标实例名称,进入基本信息页面。在页面下方节点信息列表中获取对应节点的内网IP。

      图6 基本信息页面获取内网IP

      或者您也可以单击实例名称,进入基本信息页面,单击左侧导航栏中的“连接管理”,在连接管理页面获取对应节点的内网IP。

      图7 连接管理页面获取内网IP

      <DB_PORT>

      数据库端口。

      <DB_USER>

      数据库账号,默认为rwuser。

      出现如下提示时,输入数据库账号对应的密码:

      Enter password:

      示例:

      ./mongo --host 192.168.1.6 --port 8635 -u rwuser -p --authenticationDatabase admin

      返回如下信息,表示对应的节点已经连接成功:

      针对副本集主节点的连接结果:

      replica:PRIMARY>

      针对副本集备节点的连接结果:

      replica:SECONDARY>