更新时间:2022-02-22 GMT+08:00

通过公网连接副本集实例

操作场景

本章节指导您使用MongoDB客户端和Robo 3T工具,通过公网连接副本集实例。

用户可以直接操作副本集主节点和备节点。主节点用于读写请求,您可以连接主节点对数据进行读写操作。备节点复制主节点数据,用于读请求,连接备节点仅可读取数据。

通过MongoDB客户端和Robo 3T工具连接实例的方式有普通连接和SSL连接两种,其中SSL连接通过了加密功能,具有更高的安全性。为了提升数据在网络传输过程中的安全性,建议采用SSL方式。

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

前提条件

  1. 副本集实例绑定弹性公网IP,并设置安全组规则,确保可以通过弹性云服务器或Robo 3T工具访问弹性IP
  2. 安装MongoDB客户端或Robo 3T工具。

    MongoDB客户端

    1. 创建并登录弹性云服务器,请参见《弹性云服务器用户指南》中“创建并登录Windows弹性云服务器”或“创建并登录Linux弹性云服务器”的内容。
    2. 弹性云服务器上,安装MongoDB客户端。

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

    Robo 3T工具

    安装Robo 3T工具,请参见如何安装Robo 3T工具

  3. 如果选择SSL方式连接实例,请在DDS控制台下载SSL证书。
    1. “实例管理”页面,单击实例名称。
    2. 在左侧导航树,单击“连接管理”
    3. “基本信息”区域的“SSL”处,单击,下载根证书。

使用Robo 3T工具连接实例(SSL方式)

  1. 打开Robo 3T工具,在连接信息页面,单击“Create”。

    图1 连接信息

  2. 在弹出的“Connection Settings”窗口,设置新建连接的参数。

    1. 在“Connection”页签,“Name”填写自定义的新建连接的名称,“Address”填写副本集实例绑定的弹性IP和实例的数据库端口。
      图2 Connection
    2. 在“Authentication”页签,“Database”填写admin,“User Name”填写rwuser,“Password”填写您创建副本集实例时设置的管理员密码。
      图3 Authentication
    3. 在“SSL”页签,上传SSL证书,“Invalid Hostnames”选择“Allowed”。
      图4 SSL
    4. 设置完成后,单击“Save”。

  3. 在连接信息页面,单击“Connect”,开始连接副本集实例。

    图5 连接信息

  4. 成功连接副本集实例,工具界面显示如图6所示。

    图6 连接成功

使用Robo 3T工具连接实例(非SSL方式)

使用该方式连接,请务必关闭SSL连接,如何关闭,请参见关闭SSL连接

  1. 打开Robo 3T工具,在连接信息页面,单击“Create”。

    图7 连接信息

  2. 在弹出的“Connection Settings”窗口,设置新建连接的参数。

    1. 在“Connection”页签,“Name”填写自定义的新建连接的名称,“Address”填写副本集实例绑定的弹性IP和实例的数据库端口。
      图8 Connection
    2. 在“Authentication”页签,“Database”填写admin,“User Name”填写rwuser,“Password”填写您创建副本集实例时设置的管理员密码。
      图9 Authentication
    3. 设置完成后,单击“Save”。

  3. 在连接信息页面,单击“Connect”,开始连接副本集实例。

    图10 连接信息

  4. 成功连接副本集实例,工具界面显示如图11所示。

    图11 连接成功

使用MongoDB客户端连接实例(SSL方式)

  1. “实例管理”页面,单击实例名称。
  2. 在左侧导航树,单击“连接管理”
  3. “基本信息”区域的“SSL”处,单击,下载根证书。
  4. 上传根证书至需要连接实例的弹性云服务器

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

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

  5. 在客户端工具mongo所在的目录下,连接数据库实例。

    • 方式一:通过Linux命令连接实例

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

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

      Enter password:
    • 方式二:通过界面公网连接地址连接实例

      ./mongo "mongodb://rwuser:****@<DB_HOST>:<DB_PORT>/test?authSource=admin&replicaSet=replica" --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidHostnames

      公网连接地址可单击实例名称,在实例“连接管理”页面“公网连接”页签的公网连接地址处获取。

    • 为了保证副本集内部通讯不占用用户IP带宽等资源,副本集证书使用内部管理IP生成。通过公网SSL连接副本集实例时,需要添加“--sslAllowInvalidHostnames”。
    • DB_HOST是连接的远程数据库实例IP,即实例“连接管理”页面,节点列表中的“弹性IP”
    • DB_PORT是端口,即实例“连接管理”页面,“基本信息”区域的“数据库端口”。
    • DB_USER是帐号名,即数据库帐号,默认为rwuser。
    • ****是数据库帐号对应的密码。目前,通过界面连接信息连接实例时:
      • 如果密码中包含特殊字符“@”,请将“@”转化为“%40”。
      • 如果密码中包含特殊字符“!”,请在“!”前添加转义符“\”。
    • FILE_PATH是存放根证书的路径。
    • 通过Linux命令连接实例,示例如下:

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

    • 通过界面公网连接地址连接实例,示例如下:

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

  6. 检查连接结果。出现如下信息,说明连接成功。

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

使用MongoDB客户端连接实例(非SSL方式)

使用该方式连接,请务必关闭SSL连接,如何关闭,请参见关闭SSL连接

  1. 连接弹性云服务器
  2. 连接文档数据库实例

    • 方式一:通过Linux命令连接实例

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

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

      Enter password:
    • 方式二:通过界面公网连接地址连接实例

      ./mongo "mongodb://rwuser:****@<DB_HOST>:<DB_PORT>/test?authSource=admin&replicaSet=replica"

      公网连接地址可单击实例名称,在实例“连接管理”页面“公网连接”页签的公网连接地址处获取。

    • DB_HOST是连接的远程数据库实例IP,即实例“连接管理”页面,节点列表中的“弹性IP”
    • DB_PORT是端口,即实例“连接管理”页面,“基本信息”区域的“数据库端口”。
    • DB_USER是帐号名,即数据库帐号,默认为rwuser。
    • ****是数据库帐号对应的密码。目前,通过界面连接信息连接实例时:
      • 如果密码中包含特殊字符“@”,请将“@”转化为“%40”。
      • 如果密码中包含特殊字符“!”,请在“!”前添加转义符“\”。
    • 通过Linux命令连接实例,示例如下:

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

    • 通过界面公网连接地址连接实例,示例如下:

      ./mongo "mongodb://rwuser:****@192.168.1.80:8635/test?authSource=admin&replicaSet=replica"

  3. 检查连接结果。出现如下信息,说明连接成功。

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