一个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中
的BOOTPROTO
, DNS1
(加上任何其他DNS设置,如果有的话), GATEWAY
, IPADDR
, NETMASK
和SEARCH
值-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
如下(注释掉BOOTPROTO
, DNS1
(和所有其他DNS服务器,如果有), GATEWAY
, IPADDR
, NETMASK
和SEARCH
,并添加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!
链接: