这是一个非常开放的问题,我需要一些建议,更重要的是,需要指向正确的方向。
我正在考虑为我的私有云使用openstack(目前使用VMware),因为主要目的是能够从我们的web应用程序中启动一个新的VM实例,因此可以通过php页面触发它来部署新的apache工作服务器。下一个目标是开发我们的代码,以便能够看到服务器负载何时变高,或者何时需要更多的工作服务器来预制任务以自动启动实例?
我一直在研究openstack API,看看这是否是最好的方法?但也要看看juju,看看你是否可以使用符咒来做到这一点,看看juju的api是否最好?
其目的是使其与VMware协同工作或取代VMware。
我目前的设置是在笔记本电脑上运行openstack,使用nova作为存储,所以任何关于指针的帮助都将是很棒的
我知道这是一个悬而未决的问题
有一个SDK页面列出了许多现有的OpenStack API客户端SDK。
参考:
https://wiki.openstack.org/wiki/SDKs#PHP
中列出了目前OpenStack的两个PHP SDK:
参考:
https://github.com/rackspace/php-opencloudhttps://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 (GuzzleHttpExceptionBadResponseException $e) {
// No! Something failed. Let's find out:
$responseBody = (string) $e->getResponse()->getBody();
$statusCode = $e->getResponse()->getStatusCode();
$headers = $e->getResponse()->getHeaderLines();
echo sprintf("Status: %snBody: %snHeaders: %s", $statusCode, $responseBody, implode(', ', $headers));
}
这将是一个轮询功能:
use OpenCloudComputeConstantsServerState;
$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);