在官方documentation之后,我正在尝试在虚拟机上的Devstack
操作系统上部署Ubuntu 18.04 Server
。 devstack节点只有一个网卡(ens160)通过以下CIDR 10.20.30.40/24
连接到网络。我需要在该网络上公开访问我的实例(从10.20.30.240到10.20.30.250)。因此,下面的官方浮动IP documentation再次形成了这个local.conf
文件:
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
PUBLIC_INTERFACE=ens160
HOST_IP=10.20.30.40
FLOATING_RANGE=10.20.30.40/24
PUBLIC_NETWORK_GATEWAY=10.20.30.1
Q_FLOATING_ALLOCATION_POOL=start=10.20.30.240,end=10.20.30.250
这将导致形成具有全局IP地址br-ex
和辅助IP地址10.20.30.40
的{{1}}(网关已在网络上;不是10.20.30.1
参数谈论网络上的真实网关?)
现在,在成功部署之后,禁用PUBLIC_NETWORK_GATEWAY
(根据this),创建具有用于ping和ssh的适当安全组的cirros实例,并附加一个浮动IP,仅可以在我的devstack节点上而不是整个网络上访问我的实例!同样从cirros实例内部,我无法访问外部世界(即使我可以从devstack节点访问外部世界)
然后,观看this视频,我像这样修改了ufw
文件:
local.conf
成功完成部署和实例设置后,我仍然只能在devstack节点上访问实例,而不能从外部访问!但是好消息是我可以从cirros实例内部访问外界。。
任何帮助将不胜感激!
更新
在第二种配置中,在ping实例浮动IP时检查[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
FLAT_INTERFACE=ens160
HOST_IP=10.20.30.40
FLOATING_RANGE=10.20.30.240/28
上的数据包,我观察到实例的浮动IP的tcpdump
广播数据包从网络到达devstack节点路由器;但是不会生成who-has
答复,因此ICMP数据包不会路由到devstack节点和实例。
因此,我用一些技巧创建了响应,然后一切正常。但这当然不是解决方案,我认为devstack应该可以直接使用,而无需进行任何调整,这可能是因为devstack的配置错误。
答案 0 :(得分:2)
经过5天的测试,研究和演讲,我发现了这一点:Openstack VM is not accessible on LAN
在.checkLabel {
display: block;
}
.checkLabel input, .checkLabel span {
display: inline-block;
vertical-align: middle;
}
节点上输入以下命令:
<?php
$listingId = $_POST['listingId'];
$upload_path = 'public_html/_/hostname.com/stash/images/';
$upload_url = 'https://www.hostname.com/stash/images/';
//response array
$response = array();
if($_SERVER['REQUEST_METHOD']=='POST'){
//checking the required parameters from the request
if(isset($_POST['name']) and isset($_FILES['image']['name'])){
//getting name from the request
$name = $_POST['name'];
//getting file info from the request
$fileinfo = pathinfo($_FILES['image']['name']);
//getting the file extension
$extension = $fileinfo['extension'];
//file url to store in the database
$file_url = $upload_url . $listingId . '.' . $extension;
//file path to upload in the server
$file_path = $upload_path . $listingId . '.'. $extension;
//trying to save the file in the directory
try{
//saving the file
move_uploaded_file($_FILES['image']['tmp_name'],$file_path);
$response['message'] = "idk if this worked";
//if some error occurred
}catch(Exception $e){
$response['error']=true;
$response['message']=$e->getMessage();
}
echo json_encode($response);
}else{
$response['error']=true;
$response['message']='Please choose a file';
}
}
?>
干杯!