KVM虚拟化与Fedora 10服务器上的异常2

一个Fedora 10服务器上的KVM虚拟化

版本1.0
作者:Falko Timme

Enomalism ECP (弹性计算平台)提供了一个基于Web的控制面板,可让您在一个或多个主机系统上设计,部署和管理虚拟机(在多个系统的情况下,我们讲集群或云)。 本文介绍如何在一个Fedora 10服务器上使用Enomalism(也称为Enomaly)来管理KVM guest虚拟机。

我不会保证这将为您工作!

1初步说明

我正在使用Fedora 10服务器,其主机名为server1.example.com ,IP地址为192.168.0.100 ,作为我的KVM主机。 服务器位于具有DHCP服务器的专用网络中(路由器IP为192.168.0.1 )。 如果您在公共网络中使用它,全息使用可能会有所不同。

在我们开始之前,运行

system-config-firewall

并禁用防火墙。

另外,确保SELinux被禁用。 打开/ etc / selinux / config ...

vi /etc/selinux/config

...并将SELINUX设置为禁用

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.
SELINUXTYPE=targeted

setenforce 0

为了改变生效。

请检查您的CPU是否支持硬件虚拟化 - 如果是这种情况,该命令

egrep '(vmx|svm)' --color=always /proc/cpuinfo

应该显示一些东西,例如:

[root@server1 ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
[root@server1 ~]#

如果没有显示任何内容,那么您的处理器不支持硬件虚拟化,您必须停止在这里。

2安装古典主义2

首先这样做:

wget http://downloads.sourceforge.net/enomalism/enomalism.public
rpm --import enomalism.public
wget http://downloads.sourceforge.net/enomalism/enomalism001.pubkey.asc
rpm --import enomalism001.pubkey.asc

要安装KVM和Qemu,我们运行

yum install libvirt libvirt-python kvm qemu
ln -s /usr/bin/qemu-kvm /usr/bin/kvm

然后启动libvirt守护进程:

/etc/init.d/libvirtd start

要检查KVM是否已成功安装,请运行

virsh -c qemu:///system list

它应该显示如下:

[root@server1 ~]# virsh -c qemu:///system list
 Id Name                 State
----------------------------------

[root@server1 ~]#

如果它显示错误,那么出现问题。

接下来,我们需要在我们的服务器上设置一个网桥,以便我们的虚拟机可以从其他主机访问,就像它们是网络中的物理系统一样。

为此,我们安装了包bridge-utils ...

yum install bridge-utils

...并配置一个桥。 删除NetworkManager的系统启动链接,并创建网络的系统启动链接:

chkconfig --del NetworkManager
chkconfig --levels 235 network on

然后创建文件/ etc / sysconfig / network-scripts / ifcfg-virbr0 (请使用/ etc / sysconfig / network中BOOTPROTODNS1 (加上任何其他DNS设置,如果有的话), GATEWAYIPADDRNETMASKSEARCH-scripts / ifcfg-eth0文件):

vi /etc/sysconfig/network-scripts/ifcfg-virbr0
DEVICE=virbr0
TYPE=Bridge
BOOTPROTO=static
DNS1=145.253.2.75
GATEWAY=192.168.0.1
IPADDR=192.168.0.100
NETMASK=255.255.255.0
ONBOOT=yes
SEARCH="example.com"

修改/ etc / sysconfig / network-scripts / ifcfg-eth0如下(注释掉BOOTPROTODNS1 (和所有其他DNS服务器,如果有), GATEWAYIPADDRNETMASKSEARCH ,并添加BRIDGE = virbr0 ):

vi /etc/sysconfig/network-scripts/ifcfg-eth0
# nVidia Corporation Unknown (0x0760)
DEVICE=eth0
#BOOTPROTO=static
#DNS1=145.253.2.75
#GATEWAY=192.168.0.1
HWADDR=00:1e:90:f3:f0:02
#IPADDR=192.168.0.100
#NETMASK=255.255.255.0
ONBOOT=yes
#SEARCH="example.com"
BRIDGE=virbr0

然后重新启动系统:

reboot

重新启动后,运行

ifconfig

现在应该显示网桥( virbr0 ):

[root@server1 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1E:90:F3:F0:02
          inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1611 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1986 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:133898 (130.7 KiB)  TX bytes:2092110 (1.9 MiB)
          Interrupt:22 Base address:0xa000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:17 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1040 (1.0 KiB)  TX bytes:1040 (1.0 KiB)

virbr0    Link encap:Ethernet  HWaddr 00:1E:90:F3:F0:02
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1533 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1936 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:95507 (93.2 KiB)  TX bytes:2076556 (1.9 MiB)

[root@server1 ~]#

此外,现在应该加载KVM内核模块:

lsmod | grep -i kvm
[root@server1 ~]# lsmod | grep -i kvm
kvm_amd                37644  2
kvm                   137976  1 kvm_amd
[root@server1 ~]#

(该输出来自具有AMD-V处理器的系统,如果您的系统使用Intel VT CPU,则应显示如kvm_intel 。)

现在我们从http://sourceforge.net/project/showfiles.php?group_id=164855&package_id=186866&release_id=667675下载最新的Enomalism .rpm包,如下所示(请确保您抓住PY2.5包,而不是PY2。 4 !):

wget http://dfn.dl.sourceforge.net/sourceforge/enomalism/enomalism2-2.2.3.noarch.PY2.5.rpm

下载完成后,我们安装Enomalism如下:

yum install enomalism2-2.2.3.noarch.PY2.5.rpm

然后,我们为MySQL创建系统启动链接(以便每当系统启动时,MySQL自动启动)并启动MySQL服务器:

chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start

mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

为用户root设置密码(否则任何人都可以访问您的MySQL数据库!)。

如果最后一个命令在你身上引发错误...

[root@server1 named]# mysqladmin -h server1.example.com -u root password yourrootsqlpassword
mysqladmin: connect to server at 'server1.example.com' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
[root@server1 named]#

...我们可以设置密码如下:连接到MySQL:

mysql -u root -p

键入MySQL root用户的密码。 然后在MySQL shell上执行以下操作:

mysql> USE mysql;
mysql> UPDATE user SET Password = password('yourrootsqlpassword') WHERE Host = 'server1.example.com' AND User = 'root';
mysql> UPDATE user SET Password = password('yourrootsqlpassword') WHERE Host = '127.0.0.1' AND User = 'root';

mysql> SELECT * FROM user;

以确保用户root的所有行都具有密码。

如果一切正常,运行

mysql> FLUSH PRIVILEGES;

...并离开MySQL shell:

mysql> quit;

现在我们必须配置全能主义。 跑

cd /opt/enomalism2
scripts/init-db.sh yourrootsqlpassword enomalism enomalismpassword

yourrootsqlpassword替换为您的MySQL根密码。 enomalism是Enomalism将用于连接到MySQL数据库的数据库用户的名称, enomalismpassword是用户界面的数据库密码。 用您选择的用户名/密码替换两者。

/ opt / enomalism2目录中,应该有一个名为server1.example.com.cfg的文件。 我们将该文件复制到/ opt / enomalism2 / config目录中:

cp server1.example.com.cfg config/server1.example.com.cfg

uuidgen

并记下命令生成的ID(我们需要在下一步中修改/opt/enomalism2/config/server1.example.com.cfg ):

[root@server1 enomalism2]# uuidgen
2d54480f-66c6-4c15-aafc-7242208456e0
[root@server1 enomalism2]#

现在我们编辑/opt/enomalism2/config/server1.example.com.cfg

vi config/server1.example.com.cfg

请调整以下四个值:

[...]
sqlobject.dburi="mysql://enomalism:enomalismpassword@localhost:3306/enomalism2"
[...]
enomalism2.baseurl="http://192.168.0.100:8080/rest/"
[...]
enomalism2.ip_addr="192.168.0.100"
[...]
enomalism2.self="2d54480f-66c6-4c15-aafc-7242208456e0"
[...]

请确保为MySQL数据库使用正确的数据库用户和密码,并为下两个设置使用正确的IP地址。 在enomalism2.self行中,您应该使用uuidgen生成的ID。

您还将在该文件中找到enomalism2.drivestorage ='file'enomalism2.storagetarget ='file:/// xen /'的设置。 目前,Enomalism不支持LVM,所以你不应该改变这些设置!

下一个编辑/etc/libvirt/qemu.conf ...

vi /etc/libvirt/qemu.conf

...并取消注释行vnc_listen =“0.0.0.0”

[...]
vnc_listen = "0.0.0.0"
[...]

(否则您无法通过VNC从远程机器连接到KVM guest虚拟机!)

之后重新启动libvirtd

/etc/init.d/libvirtd restart

现在我们创建系统启动链接,以启发它:

chkconfig --levels 235 enomalism2.sh on
/etc/init.d/enomalism2.sh start

现在打开一个浏览器,然后转到http://192.168.0.100:8080 。 这应该完成古典主义的安装:

点击点击这里使用Enomalism2! 链接:

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏