设置数据库集群

警告

数据库集群功能仍处于实验阶段,不应在生产环境中使用。

您可以通过设置 MongoDB 分片集群来跨多台机器存储数据。

每个集群包括

  • 一个或多个分片。每个分片由一个三成员复制集(组织为复制集的三个实例)组成。

  • 一个或多个查询路由器。查询路由器是您的应用程序实际连接的机器。该机器负责与配置服务器通信,以确定请求的数据存储在何处。然后,它从适当的分片(们)访问并返回数据。

  • 一个或多个配置服务器。配置服务器存储将请求的数据与包含它的分片关联的元数据。

本示例演示如何设置 MongoDB 分片集群。

注意

在开始之前。 确保

设置集群

  1. 创建一个集群

    使用 openstack database cluster create 命令创建集群。此命令创建一个单分片集群。传入

    • 集群的名称。

    • 您想要使用的的数据存储的名称和版本。

    • 您想要包含在第一个分片的复制集中的三个实例。使用 --instance 参数和关联的风味 ID 和卷大小指定每个实例。对每个实例使用相同风味 ID 和卷大小。在本例中,风味 7 是满足 MongoDB 最小要求的自定义风味。

    $ openstack database cluster create cluster1 mongodb "2.4" \
      --instance flavor=7,volume=2 --instance flavor=7,volume=2 \
      --instance flavor=7,volume=2
     +-------------------+--------------------------------------+
     | Property          | Value                                |
     +-------------------+--------------------------------------+
     | created           | 2014-08-16T01:46:51                  |
     | datastore         | mongodb                              |
     | datastore_version | 2.4                                  |
     | id                | aa6ef0f5-dbef-48cd-8952-573ad881e717 |
     | name              | cluster1                             |
     | task_description  | Building the initial cluster.        |
     | task_name         | BUILDING                             |
     | updated           | 2014-08-16T01:46:51                  |
     +-------------------+--------------------------------------+
    
  2. 显示集群信息

    使用 openstack database cluster show 命令显示集群信息。传入集群的 ID。

    集群 ID 在您首次创建集群时显示。(如果您稍后需要找到它,请使用 openstack database cluster list 命令列出系统中所有集群的名称和 ID。)

    $ openstack database cluster show CLUSTER_ID
     +-------------------+--------------------------------------+
     | Property          | Value                                |
     +-------------------+--------------------------------------+
     | created           | 2014-08-16T01:46:51                  |
     | datastore         | mongodb                              |
     | datastore_version | 2.4                                  |
     | id                | aa6ef0f5-dbef-48cd-8952-573ad881e717 |
     | ip                | 10.0.0.2                             |
     | name              | cluster1                             |
     | task_description  | No tasks for the cluster.            |
     | task_name         | NONE                                 |
     | updated           | 2014-08-16T01:59:33                  |
     +-------------------+--------------------------------------+
    

    注意

    您的应用程序连接到此 IP 地址。 openstack database cluster show 命令显示查询路由器的 IP 地址。这是您的应用程序用于从数据库检索数据的 IP 地址。

  3. 列出集群实例

    使用 openstack database cluster list instances 命令列出集群中的实例。

    $ openstack database cluster list instances CLUSTER_ID
    +--------------------------------------+----------------+-----------+------+
    | ID                                   | Name           | Flavor ID | Size |
    +--------------------------------------+----------------+-----------+------+
    | 45532fc4-661c-4030-8ca4-18f02aa2b337 | cluster1-rs1-1 | 7         |    2 |
    | 7458a98d-6f89-4dfd-bb61-5cf1dd65c121 | cluster1-rs1-2 | 7         |    2 |
    | b37634fb-e33c-4846-8fe8-cf2b2c95e731 | cluster1-rs1-3 | 7         |    2 |
    +--------------------------------------+----------------+-----------+------+
    

    复制集和实例的命名约定。 请注意,Name 列显示包含复制集名称的实例名称。复制集名称和实例名称是自动生成的,遵循以下规则

    • 复制集名称。 此名称由集群名称后跟字符串 -rsn 组成,其中 n 是您创建的第一个复制集为 1,第二个复制集为 2,依此类推。在本例中,集群名称为 cluster1,只有一个复制集,因此复制集名称为 cluster1-rs1

    • 实例名称。 此名称由复制集名称后跟字符串 -n 组成,其中 n 是复制集中第一个实例为 1,第二个实例为 2,依此类推。在本例中,实例名称为 cluster1-rs1-1cluster1-rs1-2cluster1-rs1-3

  4. 列出集群

    使用 openstack database cluster list 命令列出系统中的所有集群。

    $ openstack database cluster list
    +--------------------------------------+----------+-----------+-------------------+-----------+
    | ID                                   | Name     | Datastore | Datastore Version | Task Name |
    +--------------------------------------+----------+-----------+-------------------+-----------+
    | aa6ef0f5-dbef-48cd-8952-573ad881e717 | cluster1 | mongodb   | 2.4               | NONE      |
    | b8829c2a-b03a-49d3-a5b1-21ec974223ee | cluster2 | mongodb   | 2.4               | BUILDING  |
    +--------------------------------------+----------+-----------+-------------------+-----------+
    
  5. 删除集群

    使用 openstack database cluster delete 命令删除集群。

    $ openstack database cluster delete CLUSTER_ID
    

查询路由器和配置服务器

每个集群至少包含一个查询路由器和一个配置服务器。查询路由器和配置服务器会消耗您的配额。删除集群时,系统会删除关联的查询路由器(们)和配置服务器(们)。