0

一个非常开放的问题,我需要一些建议,更重要的是指向正确的方向。

我正在考虑将 openstack 用于我的私有云(目前使用 VMware),因为主要目的是能够从我们的 Web 应用程序中启动一个新的 VM 实例,因此这可以通过 php 页面触发以部署新的 apache 工作服务器例如。下一个目标是开发我们的代码,以便能够查看服务器负载何时变高或需要更多工作服务器来执行任务以自动启动实例?

我一直在查看 openstack API,看看这是否是最好的方法?但是还要查看 juju 看看你是否可以使用魅力来做到这一点,看看 juju 的 api 是否是最好的?

目的是让它与 VMware 一起工作或替换 vmware。

我当前的设置是在使用 nova 作为存储的笔记本电脑上运行 openstack,因此对指针的任何帮助都会很棒

我知道这是一个悬而未决的问题

4

1 回答 1

1

好吧,有一个 SDK 页面列出了许多现有的 OpenStack API 客户端 SDK。

参考:

https://wiki.openstack.org/wiki/SDKs#PHP

目前列出了两个用于 OpenStack 的 PHP SDK:

参考:

https://github.com/rackspace/php-opencloud https://github.com/zendframework/ZendService_OpenStack

我不会使用 Juju 作为界面。坦率地说,我不确定 OpenStack 是否适合您正在做的事情。但是,如果您想使用 devstack 并获得一个想法,我认为 rackspace 的 php 客户端 SDK 可能是一个好的开始。Devstack 也不是获得这种体验的好方法。

使用 php-opencloud 启动服务器的示例:

$server = $compute->server();

try {
$response = $server->create(array(
    'name'     => 'My lovely server',
    'image'    => $ubuntu,
    'flavor'   => $twoGbFlavor
));
} catch (\Guzzle\Http\Exception\BadResponseException $e) {

// No! Something failed. Let's find out:

$responseBody = (string) $e->getResponse()->getBody();
$statusCode   = $e->getResponse()->getStatusCode();
$headers      = $e->getResponse()->getHeaderLines();

echo sprintf("Status: %s\nBody: %s\nHeaders: %s", $statusCode, $responseBody, implode(', ', $headers));
}

这将是一个轮询函数:

use OpenCloud\Compute\Constants\ServerState;

$callback = function($server) {
if (!empty($server->error)) {
    var_dump($server->error);
    exit;
} else {
    echo sprintf(
        "Waiting on %s/%-12s %4s%%",
        $server->name(),
        $server->status(),
        isset($server->progress) ? $server->progress : 0
    );
}
};

$server->waitFor(ServerState::ACTIVE, 600, $callback);
于 2014-04-15T19:37:09.947 回答