热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用convirt集中管理KVM虚拟机

官方文档:kvm中使用kickstart无法获取IP的问题:首先,Convirt分为两部分CMS即ConvirtManageServer,即管理控制端。另外一部分为ManagedServers即被管理端。被管理端即运行虚拟机的物理服务器。一、安装CMS(convirtmanageserver)尝试在Ccentos5

官方文档:

kvm中使用kickstart无法获取IP的问题:

首先,Convirt分为两部分CMS 即Convirt Manage Server,即管理控制端。

另外一部分为Managed Servers即被管理端。被管理端即运行虚拟机的物理服务器。

一、安装CMS(convirt manage server)

尝试在Ccentos5.7上,使用二进制安装的mysql上,安装部署Convirt 2.0.1 CMS,没有成功。

以下为在Centos6.2的虚拟机上安装的步骤。

按照官方文档安装即可。

1、添加convirt的yum源并安装socat。

wget --no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo

yum makecache

安装socat,socat的主要特点就是在两个数据流之间建立通道,且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,socket等

2、下载convirt相关程序

convirt-install:CMS端安装程序

wget --no-cache http://www.convirture.com/downloads/convirt/2.0.1/convirt-install-2.0.1.tar.gz

convirt:CMS及managed server端安装程序

wget --no-cache http://www.convirture.com/downloads/convirt/2.0.1/convirt-2.0.1.tar.gz

convirture-tools:managed server端安装程序

wget --no-cache http://www.convirture.com/downloads/convirture-tools/2.0.1/convirture-tools-2.0.1.tar.gz

3、使用root用户安装依赖程序

tar -xzf convirt-install-2.0.1.tar.gz

cd convirt-install/install/cms/scripts/

sudo ./install_dependencies

注:建议不要在运行着mysql的服 务器上安装cms,因为会rpm安装mysql,并执行/usr/bin/mysql_secure_installation该脚本的作用是加强 mysql的安全性,会修改mysql的root密码,清除匿名用户等。如果服务器上已经运行了二进制的mysql,容易冲突及覆盖。

建议启动一个虚拟机来安装运行CMS。

安装过程中提示修改root密码,修改为"convirt"。稍后可以修改。

修改MySQL配置,在/etc/mysql/my.cnf文件的[mysqld]部分添加如下内容:

innodb_buffer_pool_size=1G

innodb_additional_mem_pool_size=20M

重启mysql。

4、安装CMS

默认情况下,将安装convirt到用户的home目录下,需要修改安装路径:

convirt-install/install/cms/scripts/install_config

修改CONVIRT_BASE为要安装的路径

如:

CONVIRT_BASE=/usr/local (不需要在后面添加/)

同时注意修改下面的CONVIRT_TARBALL和CONVIRT_DOWNLOAD_URL的convirt版本号。

*Untar the CMS tarball.

source convirt-install/install/cms/scripts/install_config

tar -xzf ./convirt-2.0.1.tar.gz -C $CONVIRT_BASE

*Setup TurboGears

./convirt-install/install/cms/scripts/setup_tg2

* Setup ConVirt

更改数据库相关信息

src/convirt/web/convirt/development.ini 修改 sqlalchemy.url

 For example in the following url, username = root, password = convirt, server=localhost, database port = 3306 

  and database name is convirt (the one before '?' in the url)

  

 sqlalchemy.url=mysql://root:convirt@localhost:3306/convirt?charset=utf8

注:后台收集的cpu、内存等信息都会保存到数据库中,默认为365天,数据量非常大,造成后期mysql查询很慢,磁盘IO很高,如果机器性能不好,应该修改下面的参数,来减少数据保存的时间:

purge_hr_data = 60

purge_day_data = 30

purge_week_data = 30

purge_month_data = 30

purge_raw_data = 30

task_results_purge_interval=30

TaskPaneLimit=7

task_panel_row_limit=200

notifications_row_limit=200

如何删除以前的数据?

因为我的cms的服务器性能不好,造成删除这些数据都很慢,所以我将数据库dump到一台性能较好的服务器上删除以后再导到cms服务器上。

http://www.convirture.com/forums/viewtopic.php?f=34&t=5970 

delete from metrics where metric_type=1 and cdate < '2012-06-01 19:24:03';

delete from metrics where metric_type=4 and cdate < '2012-06-01 19:24:03';

delete from metrics where metric_type=7 and cdate < '2012-06-01 19:24:03';

delete from metrics_arch where rollup_type=1 and cdate < '2012-06-01 19:24:03';

DELETE FROM task_results WHERE task_results.task_id in (4,9,10) AND status = 3 and datediff(now() , task_results.timestamp) >= 15;

delete FROM task_results WHERE task_id in (SELECT tasks.task_id AS tasks_task_id FROM tasks WHERE datediff(now() , tasks.submitted_on) >= 15 AND tasks.parent_task_id in (4,9,10)) and status=3;

delete FROM tasks WHERE datediff(now() , tasks.submitted_on) >= 15 AND tasks.parent_task_id in (4,9,10) and task_id not in (select task_id from task_results);

脚本:

#!/usr/bin/perl

use DBI;

use Date::Format;

my $del_nday_ago=15;

my $del_time=time2str('%Y-%m-%d %H:%d:%S',time - (86400*$del_nday_ago));

my $dbh=connect_mysql();

$dbh->do("delete from metrics where metric_type=1 and cdate <'$del_time';");

$dbh->do("delete from metrics where metric_type=4 and cdate <'$del_time';");

$dbh->do("delete from metrics where metric_type=7 and cdate <'$del_time';");

$dbh->do("delete from metrics_arch where rollup_type=1 and cdate <'$del_time';");

$dbh->do("DELETE FROM task_results WHERE task_results.task_id in (4,9,10) AND status = 3 and datediff(now() , task_results.timestamp

) >= $del_nday_ago;");

$dbh->do("delete FROM task_results WHERE task_id in (SELECT tasks.task_id AS tasks_task_id FROM tasks WHERE datediff(now() , tasks.s

ubmitted_on) >= $del_nday_ago AND tasks.parent_task_id in (4,9,10)) and status=3;");

$dbh->do("delete FROM tasks WHERE datediff(now() , tasks.submitted_on) >= $del_nday_ago AND tasks.parent_task_id in (4,9,10) and tas

k_id not in (select task_id from task_results);");

sub connect_mysql {

    my $host = "127.0.0.1";

    my $port = "3306";

    my $db = "convirt";

    my $user = 'root';

    my $pass = 'password';

    my $dbh = DBI->connect("DBI:mysql:database=$db:host=$host:port=$port",

                           $user, $pass, {"RaiseError" => 1,

                           "AutoCommit" => 1}) or die $!;

                           return $dbh;

                                            }

安装: 

./convirt-install/install/cms/scripts/setup_convirt

过程中会创建cms的ssh key,密码设置为空。

创建的key的文件名为:cms_id_rsa  cms_id_rsa.pub

5、启动CMS

/usr/local/convirt/convirt-ctl start

启动的端口为8081

iptables -I INPUT -p tcp --dport 8081 -j ACCEPT

登陆的初始用户名及密码为 admin/admin

6、VNC

需要为VNC打开6900:6999端口范围,用于convirt允许VNC applet访问虚拟机的concole。

登陆CMS服务器,添加:

 iptables -I INPUT -m state --state NEW -p tcp --dport 6900:6999 -j ACCEPT

二、安装被管理端managed server

安装KVM,对于centos/rhel 5.x,安装工具可以自动配置桥接网络,对于centos/rhel 6.x,需要手动配置。

建议无论centos/rhel 5.x还是6.x都手动配置桥接网络。

安装convirt-tool

For the KVM platform, the command creates appropriate public bridges, required scripts and writes a summary of its operations to the /var/cache/convirt/server_info file.

cd /usr/local/;wget --no-cache http://www.convirture.com/downloads/convirture-tools/2.0.1/convirture-tools-2.0.1.tar.gz

tar -xzf convirture-tools-2.0.1.tar.gz

cd ./convirture-tools/install/managed_server/scripts

查看帮助:

  ./convirt-tool -h

验证platform而不做任何更改:

  ./convirt-tool --detect_only setup

安装所需的依赖

 ./convirt-tool install_dependencies

有可能出现的冲突

Transaction Check Error:

  package tunctl-1.5-3.el5.x86_64 (which is newer than tunctl-1.5-2.el5.i386) is already installed

  file /usr/share/man/man8/tunctl.8.gz from install of tunctl-1.5-2.el5.i386 conflicts with file from package tunctl-1.5-3.el5.x86_64

/usr/local/convirture-tools/common/scripts/RedHat_functions

install_dependencies

   #$SUDO yum -y install dnsmasq tunctl tcp_wrappers socat expect pexpect 

   $SUDO yum -y install dnsmasq  tcp_wrappers socat expect pexpect 

去掉其中的tunctl   

安装

注意,建议先手动配置桥接网络,下面的安装convirt-tool,并不配置桥接网络及防火墙策略。。

./convirt-tool --skip_bridge --skip_firewall setup

关于手动配置桥接网络的配置,可以查看:

http://www.convirture.com/wiki/index.php?title=RedHat_6_Networking

或:

http://blog.chinaunix.net/space.php?uid=1838361&do=blog&id=257238

配置bridge network要特别注意,特别是通过远程配置,因为配置错误可能造成不能远程连接。

迁移涉及的端口:

Fox KVM : TCP ports 8002 to 8012 for migration

通过console添加managed server时:

ERROR [convirt.viewModel] [NodeService.py]:489 :EOL while scanning string literal (, line 3)

原因:

/etc/redhat-release文件中包含两行

造成managed server 在使用下面的方法获取系统信息时:

./common/scripts/functions:      CODE_NAME=`cat /etc/fedora-release | sed s/.*\(// | sed s/\)//`

得到类似这样的信息

查看:/var/cache/convirt/server_info

CODE_NAME="Tikanga

Final"

VER="5.7

5.7"

解决办法:

删除一行,重新执行:./convirt-tool --skip_bridge --skip_firewall setup 

添加 cms_id_rsa.pub到被管理server的authorized_keys中

如果出现Key Mismatch 

需要重启CMS服务

三、将现有libvirt管理的KVM虚拟机导入到convirt中。

将xml的配置文件转换成.cfg配置文件,工具:

batch_convert [-h] [] [

./batch_convert.sh /etc/libvirt/qemu/  .

转换完的格式:

kernel = '/usr/lib/xen/boot/hvmloader'

vif = ['mac=52:54:00:55:52:e9,bridge=br0', 'mac=52:54:00:5a:b7:d4,bridge=br1']

on_shutdown = 'destroy'

disk = ['qemu:raw:/usr/local/kvm/rhel6.1/disk.os,vda,w', 'qemu:raw:/usr/local/kvm/rhel6.1/disk.data,vdb,w']

vncunused = 1

apci = 0

uuid = 'dba78c52-a767-2496-742c-5215ffc284fa'

os_version = '1.0'

on_reboot = 'restart'

boot = 'c'

platform = 'kvm'

pae = 1

memory = 2614

acpi = 1

os_name = 'Linux'

vnc = 1

on_crash = 'destroy'

network_mode = 'tap'

bootloader = ''

arch = 'x86_64'

usb = 1

name = 'rhel6.1'

usbdevice = 'tablet'

device_model = '/usr/libexec/qemu-kvm'

builder = 'hvm'

template_version = '1.0'

vfb = ['type=vnc,vncunused=1']

vcpus = 4

os_flavor = 'Linux'

其中需要注意的是磁盘部分,需要修改:

disk = ['qemu:raw:/usr/local/kvm/rhel6.1/disk.os,vda,w', 'qemu:raw:/usr/local/kvm/rhel6.1/disk.data,vdb,w']

修改为:

disk=['file:/usr/local/kvm/rhel6.1/disk.os,/dev/vda,w','file:/usr/local/kvm/rhel6.1/disk.data,/dev/vdb,w']

drive=['file=/usr/local/kvm/rhel6.1/disk.os,if=virtio,format=raw,index=0,boot=on','file=/usr/local/kvm/rhel6.1/disk.data,if=virtio,format=raw,index=1']

找不到bootloader?试试磁盘名前加/dev/,

另外,对于pxe安装,报找不到bootloader的问题,应查看/tftpboot/pxelinux.cfg/default,确认default指向正确的项目。

boot=on

包含bootloader的分区,如果写了多个,会报错:

'TUNSETIFF: Device or resource busy\nTUNSETIFF: Device or resource busy\nqemu: two bootable drives specified\n

使用vim直接修改cfg文件不生效,需要重新导入cfg文件,或者在console中编辑config file。


推荐阅读
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • 如何处理PHP缺少扩展的问题
    本文将详细介绍如何解决PHP环境中缺少扩展的问题,包括检查当前环境、修改配置文件以及验证修改是否生效的具体步骤,帮助开发者更好地管理和使用PHP扩展。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 本文介绍了Linux操作系统的核心组成部分——内核及其版本分类,以及市面上常见的几种Linux发行版,旨在为初学者提供一个清晰的学习路径。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中安装 Python 3.7 的步骤,包括编译工具的安装、Python 3.7 源码的下载与编译、软链接的创建以及常见错误的处理方法。 ... [详细]
author-avatar
南非酋长
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有