trove 创建实例源码分析

本文深入探讨trove创建数据库实例的源码流程,包括入口函数、配置细节、cinder API调用、nova API交互,以及trove-guestagent在rabbitMQ中的角色。创建失败的常见原因包括guestagent未连接rabbitmq、nova或cinder问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍trove从镜像原生创建数据库实例的源码流程。这只是我个人记忆中的流程,可能存在偏差或错误遗漏的地方,仅供参考。

trove入口函数: 

trove/taskmanager/api.py:
def create_instance(self, instance_id, name, flavor,
                        image_id, databases, users, datastore_manager,
                        packages, volume_size, backup_id=None,
                        availability_zone=None, root_password=None,
                        nics=None, overrides=None, slave_of_id=None,
                        cluster_config=None, volume_type=None,
                        modules=None):

      LOG.debug("Making async call to create instance %s " % instance_id)
      self._cast("create_instance", self.version_cap, 
                   instance_id=instance_id, name=name,
                   flavor=self._transform_obj(flavor),
                   image_id=image_id,  \\ trove实例所使用的镜像
                   databases=databases, \\实例创建时输入的数据库列表
                   users=users,		\\数据库用户,拥有对上面的数据库列表的管理权限
                   datastore_manager=datastore_manager,
                   packages=packages,
                   volume_size=volume_size, \\trove实例的块磁盘,用于存储数据库数据
                   backup_id=backup_id,	\\如果该数据库是由备份数据还原而来的,这是相应的备份ID
                   availability_zone=availability_zone,
                   root_password=root_password,
                   nics=nics,
                   overrides=overrides,
                   slave_of_id=slave_of_id,
                   cluster_config=cluster_config,
                   volume_type=volume_type,
                   modules=modules)
通过RPC转发到 trove/taskmanager/models.py:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值