Enable SPICE HTML5 Console Access in OpenStack Mikata
环境: CentOS7环境系统 + OpenStack Mikata版本
SPICE VS VNC
Spice协议通信拓扑
Required Packages
控制和计算节点上执行以下命令:
1 |
yum install spice-html5 |
注意点
spice-html5 在epel源里,需要配置epel源
1 |
vi /etc/yum.repos.d/epel.repo |
1 2 3 4 5 6 7 8 |
[epel] name=Extra Packages for Enterprise Linux 7 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 |
1 |
yum makecache |
控制节点上:
1 |
yum install openstack-nova-spicehtml5proxy |
配置文件
在计算和控制节点上修改文件:/etc/nova/nova.conf
配置文件中确保vnc_enabled=False参数被设置。 如果novnc被启用,确保关闭。
1 2 |
Control IP = 192.168.1.100 Compute IP = 172.16.1.100 [Internal IP - ports may need to be opened if not already there] |
控制节点上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{% highlight python %} /etc/nova/nova.conf [DEFAULT] web=/usr/share/spice-html5 . . . [spice] html5proxy_host=0.0.0.0 html5proxy_port=6082 html5proxy_base_url=https://192.168.1.100:6082/spice_auto.html # 启用spice相关功能(boolean value) enabled=True # Enable spice guest agent support (boolean value) agent_enabled=true # Keymap for spice (string value) keymap=en-us {% endhighlight %} |
设置iptables
1 |
iptables -I INPUT -p tcp -m multiport --dports 6082 -m comment --comment "Allow SPICE connections for console access " -j ACCEPT |
永久设置iptables
Y可以在文件/etc/sysconfig/iptables 中添加以上设备的规则,保存并重启iptables。
计算节点改变配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{% highlight python %} /etc/nova/nova.conf [DEFAULT] web=/usr/share/spice-html5 . . . [spice] html5proxy_base_url=https://192.168.1.100:6082/spice_auto.html server_listen=0.0.0.0 server_proxyclient_address=172.16.10.100 # 启用spice相关功能 Enable spice related features (boolean value) enabled=True # Enable spice guest agent support (boolean value) agent_enabled=true # Keymap for spice (string value) keymap=en-us {% endhighlight %} |
重启服务
计算节点上重启服务
1 |
# service openstack-nova-compute restart |
控制节点上重启服务
1 2 3 4 |
# service httpd restart # service openstack-nova-spicehtml5proxy start # service openstack-nova-spicehtml5proxy status # systemctl enable openstack-nova-spicehtml5proxy |
在Control node上看到6082端口在监听
虚拟机需要重启才能使用spice协议
OpenStack中的windows7播放视频,有点卡,由于在服务器中图像处理都是CPU来做的,需要优化spice协议
windows客户端下载登陆云桌面
下面的链接是我制作好放在YouTube上的云桌面视频(需要翻墙)
云桌面视频
问题
Openstack Mitaka版本,终止了云主机之后,发现无法删除对应的云硬盘,删除提示报错为云硬盘的状态不是错误或者可用状态
思路
1 切换至admin用户,进入数据库手动更新云硬盘的状态至错误状态
2 针对lvm,可以用命令lvdisplay列出所有卷的信息,如果现在应用命令lvremove来删除相应的卷,则会提示要删除的卷正在使用中,所以我们使用命令lsof查看相应卷所占用的进程,然后kill这个进程;
3 应用命令lvremove来删除相应的卷。
这里只针对第一种方法实践。
操作
查看云硬盘状态:
1 |
cinder list | grep error |
命令行删除,提示报错说还有依赖的快照,如下所示
cinder delete XXX
1 2 3 |
Delete for volume XXX failed: Invalid volume: Volume still has 1 dependent snapshots. (HTTP 400) (Request-ID: req-5ba025fb-5a61-422b-b00a-556e19083bd5) ERROR: Unable to delete any of the specified volumes. |
方法有很多,这里介绍一种简单的。采取暴力手段,进入元数据库。
show databases;
use cinder;
show tables;
select找到出错的数据
删除元数据库中的数据,不过不能简单得把这个cinder盘的数据删除,以为数据库有外键依赖,而是要把cinder盘的error—deleting改成deleted。
发现已经成功得删除了出错的cinder盘。
总结:
1、删除的时候注意id和volume-id两个字段,不要弄混掉了;
2、测试环境,暴力解决问题还是不太好,注意检查日志来对症下药;
3、不要简单得去删除表中数据,而是需要更改状态。
作者简介:蒋暕青@上海宽带技术及应用工程研究中心:SDN技术实践者,大四北上思博伦实习半年,现工作地点上海