openstack 官方文档阅读之cells(二)

首次安装
由于只有一个API数据库,因此它的连接信息存储在nova.conf文件中。
[api_database]
connection = mysql+pymysql://root:secretmysql@dbserver/nova_api?charset=utf8

由于可能存在多个“cell”数据库(实际上每个cell都将至少具有cell0和cell1),因此这些数据库的连接信息存储在API数据库中。
因此,在继续执行以下步骤之前,必须在API数据库的配置文件中包含连接信息,以便nova-manage可以找到您的其他数据库。

以下示例显示了setup命令的完整扩展命令行用法。 这是为了更容易可视化每个命令使用的各种URL。
但是,您也能够将所有这些放在配置文件中,nova-manage将使用这些值。
如果需要,您可以创建单独的配置文件并将它们作为nova-manage -config-file foo.conf传递给控制行为,而无需在命令行上指定内容。

以下命令使用API数据库,因此请记住首先运行nova-manage api_db sync。
首先,我们将为cell0数据库创建必要的记录。 要做到这一点,我们使用nova-manage像这样:

nova-manage cell_v2 map_cell0 –database_connection mysql+pymysql://root:secretmysql@dbserver/nova_cell0?charset=utf8

注意:
如果未指定-database_connection,则nova-manage将使用配置文件中的[database] / connection值,并将数据库名称修改为具有_cell0后缀。

如果您的数据库位于不同的主机上,则应指定-database_connection或确保正在使用的nova.conf的[database] / connection值指向将用于cell0数据库的相同用户/密码/主机。
如果错误地创建了cell0映射,则可以使用nova-manage cell_v2 delete_cell命令删除它,然后使用正确的数据库连接值再次运行map_cell0。

由于在cell0中没有主机,因此其设置不需要进一步。 请注意,所有部署只有一个cell0,因为它很特殊,因此一旦完成此步骤,即使添加更多常规单元格,也无需再次执行此操作。
现在,我们必须创建另一个cell,它将是我们的第一个“cell”单元,其中包含实际的计算主机,并且实际可以调度实例。 首先,我们创建如下的单元格记录:
nova-manage cell_v2 create_cell –verbose –name cell1 \
–database_connection mysql+pymysql://root:secretmysql@127.0.0.1/nova?charset=utf8
–transport-url rabbit://stackrabbit:secretrabbit@mqserver:5672/

–database_connection mysql+pymysql://nova:nova_pass@mysqldb/nova_cell1?charset=utf8 \
–transport-url rabbit://openstack:openstack@rabbitmq:5672/
注意:
如果您未指定数据库和传输URL,则nova-manage将使用配置文件中的[database] / connection和[DEFAULT] / transport_url值。
注意:
此时,API数据库现在可以找到单元数据库,并且其他命令将尝试查看内部。
如果这是一个完全新鲜的数据库(例如,如果您要添加cell,或者这是一个新部署),那么您需要在其上运行nova-manage db sync来初始化模式。

如果传递-verbose,则nova-manage cell_v2 create_cell命令将打印新创建的单元格的UUID,如果您需要运行针对特定单元格的discover_hosts等命令,这将非常有用。
现在我们有一个单元,但没有主机,这意味着调度程序永远不会在那里放置实例。
下一步是扫描数据库中的计算节点记录,并将它们添加到我们刚创建的单元格中。
对于此步骤,您必须已启动计算节点,以便将其自身注册为正在运行的服务。
一旦发生这种情况,您可以扫描并将其添加到单元格中:
nova-manage cell_v2 discover_hosts

此命令将连接到您已为其创建单元的任何数据库(如上所述),查找已在其中注册的主机,并将这些主机映射到API数据库中,以便调度程序将它们视为实例的可用目标。
每次向单元格添加更多计算主机时,都需要重新运行此命令以从顶层映射它们,以便可以使用它们。

从Rocky版本开始,–database_connection和–transport-url的单元映射中提供的URL可以包含每次从数据库加载时评估的变量,其值取自相应的基本选项 在主机的配置文件中。
解析基本URL并将以下元素替换为单元映射URL:(rabbit://bob:s3kret@myhost:123/nova?sync=true#extra)

Cell Mapping URL Variables
Variable Meaning Part of example URL
scheme The part before the :// rabbit
username The username part of the credentials bob
password The password part of the credentials s3kret
hostname The hostname or address myhost
port The port number (must be specified) 123
path The “path” part of the URL (without leading slash) nova
query The full query string arguments (without leading question mark) sync=true
fragment Everything after the first hash mark extra

变量以大括号括起,如{username}。 一个简单的模板rabbit://{username}:{password}@otherhost/{path}
将与上面的示例一起使用时生成:
rabbit://bob:s3kret@otherhost/nova

注意:
在SIGHUP期间,不会从配置文件重新加载[database] / connection和[DEFAULT] / transport_url值,这意味着如果更改了变量,则需要重新启动服务以注意单元映射记录中的更改。

注意:
[DEFAULT] / transport_url选项可以包含url的“netloc”部分的扩展语法(即userA:passwordA @ hostA:portA,userB:passwordB:hostB:portB)。
在这种情况下,将遵循形式username1,username2等的替代,并且可以在模板URL中使用。

这些URL的模板化可能有助于为每个服务主机提供其自己的凭据,例如数据库。
在没有模板的情况下,所有主机都将使用相同的URL(以及凭据)来访问数据库和消息队列等服务。
通过使用带有模板的URL,该模板导致从主机本地配置文件中获取凭据,每个主机将为这些连接使用不同的值。

假设您有两个通常配置了cell0数据库作为主连接的服务主机,它们的(缩写)配置将如下所示:
[database]
connection = mysql+pymysql://service1:foo@myapidbhost/nova_cell0
and:

[database]
connection = mysql+pymysql://service2:bar@myapidbhost/nova_cell0

如果没有cell映射模板URL,它们仍将使用相同的凭据(存储在映射中)来连接到单元数据库。
请考虑以下模板URL:
mysql+pymysql://{username}:{password}@mycell1dbhost/nova
and:
mysql+pymysql://{username}:{password}@mycell2dbhost/nova

使用第一个服务和cell1映射,实际用于连接到该数据库的计算URL将是:
mysql+pymysql://service1:foo@mycell1dbhost/nova

常见用例的循序渐进
以下是设置Cell V2的常见用例的分步示例。 这是一个快速安装参考,将把cell V2的设置中解释的所有内容放在一起。 假设您已遵循Nova的所有其他安装步骤,并且此时专门设置了Cell V2。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值