OpenStack Spice协议配置
Enable SPICE HTML5 Console Access in OpenStack Mikata
环境: CentOS7环境系统 + OpenStack Mikata版本
SPICE VS VNC
Spice协议通信拓扑
Required Packages
控制和计算节点上执行以下命令:
yum install spice-html5
注意点
spice-html5 在epel源里,需要配置epel源
vi /etc/yum.repos.d/epel.repo
[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
yum makecache
控制节点上:
yum install openstack-nova-spicehtml5proxy
配置文件
在计算和控制节点上修改文件:/etc/nova/nova.conf
配置文件中确保vnc_enabled=False参数被设置。 如果novnc被启用,确保关闭。
Control IP = 192.168.1.100
Compute IP = 172.16.1.100 [Internal IP - ports may need to be opened if not already there]
控制节点上
{% 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
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。
计算节点改变配置文件
{% 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 %}
重启服务
计算节点上重启服务
# service openstack-nova-compute restart
控制节点上重启服务
# 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来删除相应的卷。 这里只针对第一种方法实践。
操作
查看云硬盘状态:
cinder list | grep error
命令行删除,提示报错说还有依赖的快照,如下所示
cinder delete XXX
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、不要简单得去删除表中数据,而是需要更改状态。
- windows 安装 storm 及 eclipse 调试 TopN 实例
- shell 学习笔记(16)
- 根据ip查找ISP运营商和归属地的几种方法
- windows 安装 spark 及 pycharm 调试 TopN 实例
- storm kafka 编程指南
- 基于Session的身份窃取
- 使用 django-blog-zinnia 搭建个人博客
- 针对提权小神器Sherlock的分析与利用
- 关于 rsync 中: 和 :: 及 rysnc 和 ssh 认证协议的区别
- Java 反射机制详解
- shell 脚本多进程创建 mysql 测试数据
- Zookeeper 原理与实践
- 修改 mysql/oracle/bash/vimrc/cmd 提示符格式与颜色
- shell 学习笔记(17)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JavaWeb第一讲 Servlet的工作原理及生命周期
- 多系列数据核密度图
- leetcode树之二叉树的层平均值
- 大型项目技术栈第二讲 ES6(ECMAScript 6.0)的使用
- 大型项目技术栈第三讲 ztree的使用
- JavaWeb新手训练经典项目 & 半小时高效开发 & 海量知识点涵盖 = 从这里开始
- Java反射_笔记分享
- Java注解详细总结
- 文档驱动 —— 表单组件(六):基于AntDV的Form表单的封装,目标还是不写代码
- 这就是你日日夜夜想要的docker!!!---------Docker资源控制--Cgroup
- 2020-09-26:请问rust中的&和c++中的&有哪些区别?
- python在Keras中使用LSTM解决序列问题
- python使用MongoDB,Seaborn和Matplotlib文本分析和可视化API数据
- 用于NLP的Python:使用Keras进行深度学习文本生成
- 用Python的Numpy求解线性方程组