澳门皇冠金沙网站▎在线官网
做最好的网站

OpenStack实例的网络联通性问题

2019-11-08 作者:网络服务   |   浏览(66)

这是偶然发现的问题,设置好网桥后,发现重启服务器后实例的状态可以自动恢复到重启前,于是各种高兴,但是却发现了实例的网络联通性问题。

明:由于本人的OneStack项目和博客上分享的几篇技术文章,收到很多邮件。有些问题是共通的,有些是可以限定范围进行调试的。下面将一些还记得的tips记录下来,供大家参考,希望少把时间浪费在安装和部署上。还有很多问题没有一一记录,就不再去探究了,读者如有问题请指出或者下面跟帖补充,希望对入门者有帮助。由于只是涵盖了部分问题,起名为OpenStack-Lite-FAQ。本人精力有限,如果有知道问题解决方法的,希望一起分享出来,我可以补充进去。

前面提到过,控制节点上nova-network运行后,会将br100的ip设置成10.0.0.1,并通过iptables的NST功能映射原来设置的ip地址。这样在控制节点就可以ping能实例或通过ssh连接实例,也可通过原来的ip访问控制节点。

为方便管理,集中阅读,请访问本文原始出处:《OpenStack安装部署管理中常见问题解决方法(OpenStack-Lite-FAQ)》。如有OpenStack问题和解决,请直接下面回复,这样也方便后来人。如有其它问题反馈,Kayven微博留言(E-mail)。

但是重启服务器后,实例是恢复了,但运行相关服务后在控制节点用ping命令来ping各实例时却出问题了:

一、网络问题-network

1.在控制节点运行除nova-compute的服务后,控制节点实例无法ping通,启动nova-compute,如果没有设置让实例随nova-compute的运行重启,仍然无法ping能,如果实例随nova-compute重启了就可以ping通。

更多网络原理机制可以参考《OpenStack云平台的网络模式及其工作机制》。

2.如果计算节点重启在控制节点的各服务运行后,即使不启动nova-compute也行从控制节点ping通其上的实例,如果计算节点在控制节点各服务运行前启动了,其上的实例ping结果跟控制节点是一样的。

1.1、控制节点与网络控制器区别

3.在控制节点和计算节点实例都能从控制节点ping能的情况下,重启控制节点并启动相关服务,无法ping通计算节点的实例,设置计算节点的实例随nova-compute重启而重启后,重启nova-compute,计算节点的实例能ping通了。

OpenStack平台中有两种类型的物理节点,控制节点和计算节点。控制节点包括网络控制、调度管理、api服务、存储卷管理、数据库管理、身份管理和镜像管理等,计算节点主要提供nova-compute服务。

4.在控制节点和计算节点实例都能从控制节点ping能的情况下,一个一个重启控制节点的服务,测试各实例的ping结果,发现nova-scheduler终止后所有实例都无法ping通,重启后也无法ping后,即使此时重启所有nova服务包括nova-compute并让实例随其重启也无法ping通(甚至我还重启了libvirtd),必须要重启控制节点才行。

控制节点的服务可以分开在多个节点,我们把提供nova-network服务的节点称为网络控制器。

从以上实验可以得出以下结论:

1.2、OpenStack中nova-network的作用

在nova相关服务运行前已经启动的实例无法ping通(需要重启实例才行),在其后启动的实例即使没有运行nova-compute也能ping通。如果nova-scheduler被终止再启动,必须要重启控制节点,否则无论如何也无法ping实例!

OpenStack的网络由nova-network(网络控制器)管理,它会创建虚拟网络,使主机之间以及与外部网络互相访问。

图片 1

OpenStack的API服务器通过消息队列分发nova-network提供的命令,这些命令之后会被nova-network处理,主要的操作有:分配ip地址、配置虚拟网络和通信。

1.3、OpenStack中Flat与FlatDHCP区别

Flat(扁平): 所有实例桥接到同一个虚拟网络,需要手动设置网桥。

FlatDHCP: 与Flat(扁平)管理模式类似,这种网络所有实例桥接到同一个虚拟网络,扁平拓扑。不同的是,正如名字的区别,实例的ip提供dhcp获取(nova-network节点提供dhcp服务),而且可以自动帮助建立网桥。

1.4、OpenStack中Flat与vLAN区别

在两种Flat模式里,网络控制器扮演默认网关的角色,实例都被分配了公共的IP地址(扁平式结构,都在一个桥接网络里)。

vLAN模式功能丰富,很适合提供给企业内部部署使用。但是,需要支持vLAN的switches来连接,而且相对比较复杂,在小范围实验中常采用FlatDHCP模式。

1.5、OpenStack中网络流向是怎样的,都经过网络控制器吗

多节点时,网络控制器与计算节点分别在不同主机,普通部署方式下(不是multi_host),只有nova-network控制网络,而它仅仅在控制节点运行。因此,所有计算节点的实例都需要通过控制节点来与外网通信。

可以通过multi_host等高可用性部署方式改变这个单点故障问题。

1.6、OpenStack单网卡怎么配置?

配置好服务器的网络(混杂模式);

/etc/nova/nova.conf那一块,public_interface和flat_interface都改成这个单网卡的名称即可,比如在脚本oneStack.sh 改动2处:
/etc/network/interfaces设置那一块,去掉第2个网卡的设置(eth1);
/etc/nova/nova.conf那一块,eth1修改为eht0(flat的网卡)。

这样,在这个网卡上,既有外网的网络,又有flat网络。详见《OpenStack云平台的网络模式及其工作机制》。

 

 

1.7、OpenStack中网络流向是怎样的,都经过网络控制器吗

 

多节点时,网络控制器与计算节点分别在不同主机,普通部署方式下(不是multi_host),只有nova-network控制网络,而它仅仅在控制节点运行。因此,所有计算节点的实例都需要通过控制节点来与外网通信。

可以通过multi_host等高可用性部署方式改变这个单点故障问题。

1.8、OpenStack中网络注意问题

1)openstack中,nova-manage create用来创建虚拟机运行时所需的内网,并且将相关的IP地址记录到fixed_ips数据表中。但是,当调用nova-manage delete 时,并不会自动的删除fixed_ips中的内容,需手动进行删除。

2)采用FlatDHCP方式部署openstack,在开放了icmp和ssh22端口的情况下,仍然无法通过控制节点连接到虚拟机实例。此时应该检查控制节点的ip配置信息ip addr。

3)FlatDHCP模式下,network_size是整个fixed_ip range中的所有ip数。例如在一个A类/12的网络中,有2^20个IP地址,所有的这些IP地址都要写入数据库fixed_ips表中,这将会花费很长时间,导致出现假死。

 

4)如果采用FlatManager的网络模式,则必须手动建立相关的网桥,以便虚拟机实例之间以及和主机之间通信。

而且,必须手动的将虚拟机实例的内部IP加入到nova数据库的fixed_ips表中。
此外,fiexed_ips表保着所有可供虚拟机实例使用的内部IP,每次发起一个新的虚拟机实例,openstack的网络服务部分,根据fixed_ips表中的内容分配给该实例IP。如果用户希望保留特定的IP地址,需要将数据库中该IP对应的reserved字段设置为1。

 

二、虚拟化问题-virtual

 

2.1、OpenStack中控制节点和计算节点配置nova.conf一样吗

 

多节点时,网络控制器与计算节点分别在不同主机,普通部署方式下(不是multi_host),只有nova-network控制网络,而它仅仅在控制节点运行。因此,所有计算节点的实例都需要通过控制节点来与外网通信。

可以通过multi_host等高可用性部署方式改变这个单点故障问题。

计算节点的nova.conf并不是与控制节点完全一样,主要是
--vncserver_proxyclient_address=
--vncserver_listen=

应该是计算节点的ip。

 

2.2、OpenStack执行 virsh -c qemu:///system list,一直挂起在那里(hang),怎么解决

 

killall -9 dmidecode

dmidecode是一个管理工具,在虚拟机装OpenStack中需要用到,用在libvirt中,但在有的机器中会出现hang up的情况,这时候需要kill掉它。

2.3、OpenStack中虚拟化技术在哪里配置

 

主要两个文件:nova.conf nova-compute.conf。

其中的虚拟技术应该一致,比如都为kvm,或者都为qemu。

2.4、OpenStack中虚拟机中nova-compute经常启动失败,virsh list显示空白,怎么解决

  1. 在vmware workstation上的虚拟机需要修改 *.vmx文件

vcpu.hotadd = "TRUE"

变更为

vcpu.hotadd = "FALSE"

重新启动机器,如果执行命令:

virsh

进入控制台就没有问题了。

  1. 修改nova配置文件/etc/nova/nova.conf

#--libvirt_type=kvm

更改为qemu

--libvirt_type=qemu

  1. 修改/etc/nova/nova-compute.conf

--libvirt_type=qemu

  1. 重新启动nova-compute,如果libvirt报错

/var/log/libvirt/libvirtd.log

Cannot find 'pm-is-supported' in path: No such file or directory

报错后需要安装

apt-get install pm-utils

2.5、noVNC不能连接到实例,提示“Connection Refuesd”,什么原因
可能是控制节点在收到vnc请求的时候,无法解析计算节点的主机名,从而无法和计算节点上的实例建立连接。
另外可能是,当前浏览器不支持或者不能访问,将计算节点的ip和主机名的对应关系加入到控制节点的/etc/hosts文件中。

 

三、存储、卷问题-volume、lvm

 

3.1、OpenStack中创建volume一直在creating,什么原因

 

主要因为nova-volume没有正常启动,可以

nova-manage service list

看看后面的状态,不是笑脸:-)而是xx。如果没有启动,请看下一条。

 

3.2、OpenStack中nova-volume服务不能启动,什么原因

 

主要因为没有nova-volumes卷组,或者iscsitarget服务没有启动(或者没有安装)。

1、vgdisplay

没有nova-volumes卷组,可以创建卷组和磁盘

$ dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0
$ losetup -f /opt/nova-volumes.img
$ losetup -a
$ vgcreate nova-volumes /dev/loop0

 

记着启动nova-volume然后创建volume,否则下面仍然不能创建

$ service nova-volume restart

$ nova volume-create --display_name "volume1" 10

 

 

2、service iscsitarget status

1)没有安装iscsitarget,可以apt安装;

然后执行以下命令安装和设置为可以启动

apt-get install -y iscsitarget iscsitarget-dkms lvm2
sed -i -e 's/false/true/' /etc/default/iscsitarget
service iscsitarget start
service nova-volume start

2)状态为stop,可以start

service iscsitarget start

 

 

3)如果既没有nova-volumes卷组,也没有安装iscsitarget,切忌保证这两者都存在,然后重启nova-volume,再创建volume

有人安装iscsitarget并启动后就create,结果nova-volume并没有启动,所以问题依然存在;

有人创建nova-volumes,也没有重启nova-volume,也不能正常工作。

 

3.3、OpenStack中创建volume一直在creating,怎么停掉(stop)
主要因为nova-volume没有正常启动,可以
nova-manage service list
看看后面的状态,不是笑脸:-)而是xx。如果没有启动,请看下一条。

3.4、OpenStack中nova-volume执行出现问题,检查什么地方
主要因为nova-volume没有正常启动或者计算节点没有能找到target,可以检查以下这些问题。
nova-volume是否正常;控制点,详见问题3.2
iscsitarget是否开启;服务端
open-iscsi是否安装和开启;客户端
客户端(计算节点)iscsiadm discovery看看能不能找到存储服务;
分析nova-volume.log。

3.5、OpenStack中nova-volume管理target
控制节点查看target
tgtadm --lld iscsi --op show --mode target
建立target
sudo tgtadm --op new --lld=iscsi --mode=target --tid=1 --targetname=iqn.2010-10.org.openstack:volume-00000001

3.6、OpenStack中计算节点管理volume
查看session
sudo iscsiadm -m session
手动发现target
sudo iscsiadm -m discovery -t sendtargets -p IP:port
登入登出
sudo iscsiadm -m node -T targetname(iqn.2010-10.org.openstack:volume-00000004) -p 10.200.200.4:3260 --login
sudo iscsiadm -m node -T targetname(iqn.2010-10.org.openstack:volume-00000004) -p 10.200.200.4:3260 --logout
sudo iscsiadm -m node -o [delete|new|update] -T targetname

 

 

四、OneStack安装问题

 

4.1、OpenStack能在普通的PC机上跑吗?

 

普通pc没有试过,这也不是它需要支持的对象。但是普通pc一样可以工作的。
官网的配置,只是对于稍有一定规模的部署(配置并不算高,甚至是服务器最基本的要求)
现在服务器基本都64位,但是它也指出了,32位的可以工作的,只是不能运行64位的操作系统实例,自己改一下镜像就可以。还有不支持vt技术的,我没有试过。
双网卡也不是必须的,一个对内,一个对外。可以更改配置。详见1.6单网卡安装。
其它的基本就是自由的。

4.2、OneStack简单安装需要改哪些地方?

1、切换到root,oneStack.sh删除设置root密码、设置locale、设置apt这3段(为了方便刚安装新系统的用户加入的可选的步骤,setup_base.sh没有这3段)
2、设置ip等参数 OUT_IP 外网ip(注意这是相对于OpenStack?内部网络的) OUT_IP_PRE 外网ip前缀(脚本后面出现ip不用管,会被这个参数替换) FLOAT_IP 浮动ip
3、裸机的话qemu改成kvm (对于xen之类的未加入支持) VIRT_YPE
4、网络设置,会替换掉你原来的,不想替换就删掉这一段 设置cat写入interfaces文件(注意,那里面pre-up手动设置了网卡mac,不需要的自行去掉;单网卡去掉eth1的设置即可)
5、执行oneStack.sh 或者setup_base.sh(基本系统,没有添加镜像和实例,可以setup_test.sh)
其它没有需要更改的(数据库密码等自行更改无影响)。 里面有个image是从Ubuntu官网下载,可能需要一些时间 (svn checkout,里面还有一些删除之类的工具)

 

 

4.3、OneStack单网卡安装需要改哪些地方?

 

除了4.2所述部分外
1)在配置interfaces时,去掉eth1部分;
2)后面nova.conf设置里面,eth1改为eth0(public_interface)。

4.4、OneStack多节点安装需要改哪些地方?

 

控制节点使用oneStack.sh,如果不需要安装nova-compute去掉即可;
计算节点执行addComputeNode.sh
注意nova.conf配置其余一样,只是
--vncserver_proxyclient_address=
--vncserver_listen=
应该是计算节点的ip。

4.5、OneStack安装后怎么清空nova数据,包括实例和volume等?

 

控制节点执行resetStack.sh clear,清空数据库;
再执行resetStack.sh重新初始化数据库。

 

五、镜像问题-image

 

5.1、OpenStack中可以使用windows吗

 

虚拟出来的实例基本与普通的主机一样,所以基本上所有系统都可以使用,制作相应的镜像即可。

本文由澳门皇冠金沙网站发布于网络服务,转载请注明出处:OpenStack实例的网络联通性问题

关键词: