注:翻译的人自己是linux和xen虚拟化技术的初学者外加六级最好一次成绩差20分,有地方与部分专业术语翻译可能会翻译不正确,欢迎您自己查看Google的ganeti网站„„
介绍
Ganeti是一款建立在Xen或者KVM之上的集群虚拟化管理系统。这份文档将说明如何引导一个Ganeti节点(Xen的dom0,或者KVM),创建一个可运行的集群并安装虚拟实例(Xen的domUS,KVM的guests)。你需要为所有你想要安装的节点重复执行这篇文档的大部分步骤,当然,如果你计划部署一个中大规模的Ganeti的话,我们建议你创建一些半自动的程序。
一些基本的Ganeti专业术语由《Ganeti administrato's guide》导言部分提供。如果你并不确定我们使用的用语的含义,请阅读这份文档。
Ganeti已经开发出了Linux版本并且和分布无关(distribution-agnostic)。这份文档将会使用Debian Lenny作为示例系统,这些范例也可用于其他任意一种linux的发行版。在使用Ganeti前,我们将假设你已经对自己正在使用的发行版,还有Xen或KVM等技术比较熟悉。
这份文档将会被分成2个主要部分: 1.安装本系统的主要部分和基本的组件 2.配置Ganeti的运行环境
这两部分都将被分成数个子模块。安装一个完整的Ganeti系统将需要执行所有制定的步骤,其中一些并不是对于所有的环境都严格要求完成的。我们将会在相应的章节介绍哪些步骤并不是必要的及其原因。
安装基础系统和基础组件
硬件要求
任何你的linux发行版本所支持的都没有问题。最好是位的系统,因为他们能够支持更多的内存。
Ganeti支持任何能够被linux识别的硬盘(IDE/SCSI/STAT等)。注意不能共享的存储方式(如San)需要拥有更高的性能(不过当然,他们可以用来存储镜像)。强烈推荐使用一个以上的硬盘驱动以提高速度。但是Ganeti同样可以工作在每台机器仅有一个硬盘的环境下。
安装基础系统
所有节点都需要的步骤
建议从一个干净的,最小安装的系统开始以下步骤。你唯一需要注意的是如果你希望使用ganeti的所有特性,请确保机器上为LVM卷组留有足够的空间(最少20GB),他们将会启动你的实例系统。Ganeti使用的卷组的名字默认是 xenvg
你同样可以只采用基于文件的存储方式(是镜像文件吧)而不是用LVM,但是这种安装方法本文件不会详细说明。
当你使用一个已经存在的系统进行操作时,请注意Ganeti的安装将会对系统配置做一些修改,所以请最好使用一个全新安装的,没有重要文件的系统。
为了取得最佳效果,我们建议您最好让所有的节点都拥有尽可能相同的硬件与软件配
置。这将会让管理员管理起来轻松不少。
主机名问题
请注意Ganeti需要系统的主机名。使用hostname命令将会输出全名,而只是主机名的缩写。换句话说,你应该使用 诸如node1.example.com 作为主机名而不是仅仅只有 node1.
Debian
Debian Lenny和Etch配置主机名与Ganeti中需要的是不同的。举个例子,这是Etch中输入命令 /etc/hosts 可能会有结果:
127.0.0.1 localhost
127.0.1.1 node1.example.com node1 然而在Ganeti中你需要的是: 127.0.0.1 localhost
192.0.2.1 node1.example.com node1
将192.0.2.1换成你的节点的地址。此外,系统中配置主机名的文件 /etc/hostname应该包括 node1.example.com 而不只是 node1(您需要在更改这个文件后运行命令/etc/init.d/hostname.sh start)。
为何需要一个完整的主机名
尽管大部分发行版本在/etc/hostname文件中仅记录有主机名的缩写,我们却坚信Ganeti的节点应该使用完整的主机名。理由是call “hostname -fqdn”需要解析库来工作(and is a ’guess‘ via heuristics at what your domain name)。既然Ganeti还可以用来作为DNS服务器,我们希望尽可能减少对它们的依赖,另外我们更希望用 uname() syscall来返回完整的节点的名字。
我们目前还没发现在Linux系统上使用完整主机名会有什么问题,我们还建议在Ganeti节点上仅安装一个最小的系统,并且使用实例(或者其他专用机器)来运行您剩余的网络服务任务。为了达成这一目的,您可以更改/etc/hostname文件来包含一个FQDN。
安装管理程序
以下步骤所有节点都需要执行:
Ganeti开发时被设计成拥有模块化的运行在不同虚拟环境下的功能。目前可用的虚拟环境有两种:Xen和KVM。Ganeti支持Xen的版本有3.0.3,3.0.4和3.1,支持KVM的版本是72以上。
请按照你使用的linux发行版本的建议的安装方式来安装、设置Xen,或者从网上资源安装Xen---如果你愿意的话,可以按照他们的方法装。至于KVM,请确保你的内核支持KVM和KVM工具。
在安装Xen时,你需要重启以进入你的新系统。在一些linux的发行版本中,这可能会涉及到配置GRUB,而其他一些发行版将会在你安装完内核后自动的进行配置。KVM则不需要重启。
安装在Debian的Xen
在Lenny或者Etch下你可以安装xen-linux-system相关的程序包,他们将会安装管理程序与相关的内核文件。此外,如果你安装的是32位的Lenny或者Etch,你应该安装libc-xen
包(运行命令 apt-get install libc6-xen)。
Xen设置
我们建议dom0一个较低的内存(512M或者1G比较合理),另外memory ballooning
在/etc/xen/xend-config.sxp文件中的变量 dom0-min-men设置为0时是不可用的,比如这样: (dom0-min-mem 0)
为了能够在运行高CPU和I/O设备利用率的实例时获得最佳性能,我们推荐仅为dom0配置1个虚拟CPU,例如使用内核参数 nosmp启动。
我们建议您关闭xen的在系统关闭是为虚拟机自动存储,随后在系统重启时将他们复原的功能。为了确定这一点,您可以查看/etc/default/xendomains文件中的变量 XENDOMAINS_SAVE是否被设置为空值。
如果您希望使用迁移,在xen的配置文件中,有一部分允许节点彼此迁移实例。举个例子:
(xend-relocation-server yes) (xend-relocation-port 8002) (xend-relocation-address '')
(xend-relocation-hosts-allow '^192\\\\.0\\\\.2\\\\.[0-9]+$')
第2行中,假设管理程序的参数 migration_port被设置成8002,或者将它设置为其他匹配的值。最后一行中,假设你的所有的节点在192.0.2.0/24这个网络中拥有次要IP,你可以根据的安装对它进行调整。
Debian
除了你需要设置在/etc/xen/xend-config.sxp 中的ballooning change,你需要设置内存和在文件/boot/grub/menu.lst中的nosmp参数。你需要修改变量xenhopt,增加dom0_men=1024,比如这样:
## Xen hypervisor options to use with the default Xen boot option # xenhopt=dom0_mem=1024M
而变量xenkopt需要包含nosmp选项,比如这样:
## Xen Linux kernel options to use with the default Xen boot option # xenkopt=nosmp
任意存在的变量都可以留下来:可以有这么一行配置: xenkopt=console=tty0 nosmp,举个例子,在修改这些文件后,你需要运行:
/sbin/update-grub
如果你还希望用Ganeti运行HVM实例,还希望VNC访问你的实例的控制台,在/etc/xen/xend-config.sxp中设置以下两条:
(vnc-listen '0.0.0.0') (vncpasswd ' ')
你需要重启Xen的守护进程以使这些设置产生效果: /etc/init.d/xend restart
选择实例的核心
在你安装完Xen后,你需要告诉Ganeti你将要创建的实例会使用那种内核。这将通过创建一个你的内核到/boot/vmlinuz-2.6.xenU的符号链接和到/boot/initrd-2.6-xenU [1]的initrd
来创建。注意如果你的domU的内核不使用initrd的话,你并不需要创建initrd的符号链接。
Debian
在安装完 xen-linux-system包之后,你需要运行(更换你所使用的实际的版本号): cd /boot
ln -s vmlinuz-2.6.26-1-xen-amd vmlinuz-2.6-xenU ln -s initrd.img-2.6.26-1-xen-amd initrd-2.6-xenU
安装DRBD
本步骤建议运行在所有节点上:如果你希望使用Ganeti的高级功能(HA)特性,你需要DRBD(http://www.drbd.org/),但如果你不需要他们或者你仅仅将Ganeti运行在一个单节点的集群上的话,DRBD就仅仅是个可选项。你可以晚些再将一个非HA集群升级为一个HA集群,但是你可能需要输出和重新输入你的全部的实例以取得这些HA新特性的优势。
Ganeti所支持的DRBD是8.0及以上的版本。我们建议您使用最少8.0.12的版本。请注意,8.2和更新的版本需要传递usermode_helper=/bin/true参数到模块,或者通过配置/etc/modules----也可以手动的插入。
现在有一个坏消息:除非你的发行版本已经提供了安装DRBD所涉及的重新编译内核。所幸,至少有提供用来启动的Xen-ified内核源(如果你打算使用Xen)。
好消息是你不需要配置DRBD。每在你设置实例的时候,Ganeti将会自动完成DRBD的配置。如果你安装了DRBD工具和内核的模块,那样最好。请检查你的系统被配置为每次启动都加载模型并且传递接下来的选项给模块:minor_count=NUMBER。我们建议您使用128作为minor_count这个参数的值---这将使您可以在每个节点上配置一共个实例(当每个实例仅使用一个硬盘时,包括首要的和次要的)。如果你需要在一个节点上安装更多的实例,您可以将这个数字提升到255.
Debian
在Debian中,你只能通过以下几种命令来安装(建立)DRBD模块,请确定你正在运行指定的(Xen或者KVM)内核:
apt-get install drbd8-source drbd8-utils m-a update m-a a-i drbd8
echo drbd minor_count=128 usermode_helper=/bin/true >> /etc/modules depmod -a
modprobe drbd minor_count=128 usermode_helper=/bin/true
我们推荐您注释掉/etc/drbd.conf文件中的默认资源,这样初始化脚本将不会尝试配置DRBD设备。您可以通过在这个文件中使用关键字 skip 为所有的resource 行的代码加上前缀(prefix),例如:
skip{
resource r0 { ... } } skip {
Resource \"r1\" { ... } }
其它需要的软件
请查阅《Ganeti quick installation guide》
为Ganeti设置运行环境:
配置网络
以下步骤所有节点都需要执行:
你可以将Ganeti运行在网桥模式或者路由模式。在网桥模式时,默认情况下,实例的网络接口(网卡设备)将会附加在运行在dom0的软桥接设备上。Xen默认会在启动时创建这样一个网桥,但是你的linux发行版本可能会通过其他方式完成这个任务,那么你在KVM下需要手动的对它进行设置。
注意Ganeti使用的名字默认是 xen-br0(它曾经用在Xen2.0中)而Xen3.0则默认使用xenbr0。请查看本文“安装集群”这节以学习如何选择一个不同的网桥,或者使用另外一种方式:路由模式。
为了在Xen下使用路由模式,你需要改变在Xen配置文件中的相关参数。如果你使用的是KVM,则不需要改变任何配置,但是您仍然需要正确的设置您的网络接口。
默认情况时在KVM下,你为每块网卡(per-nic)指定的link参数将会represent,如果值非空,您的实例将会使用不同的路由表字或编号。这可以保证不同实例组之间的隔离和相邻的节点与实例之间拥有不同的路由机制。
您需要配置Ganeti外部的路由表的基本路由路线与规则。Vif脚本仅会为您的实例增加32条您在表中指定的,通过他们接口(网卡设备)的路由(add /32 routes)(使用KVM或使用XEN的主表时)。
Debian下的网桥
推荐的配置Xen网桥的方法是编辑 /etc/network/interfaces文件并使用以下的代码来代替原来的以太网部分:
auto xen-br0
iface xen-br0 inet static
address YOUR_IP_ADDRESS netmask YOUR_NETMASK network YOUR_NETWORK
broadcast YOUR_BROADCAST_ADDRESS gateway YOUR_GATEWAY bridge_ports eth0 bridge_stp off bridge_fd 0
接下来的命令需要在本地控制台上执行: Ifdown eth0 ifup xen-br0
您可以使用命令ip和brctl show来检查网桥是否已经安装好:
# ip a show xen-br0
9: xen-br0: inet 10.1.1.200/24 brd 10.1.1.255 scope global xen-br0 inet6 fe80::220:fcff:fe1e:d55d/ scope link valid_lft forever preferred_lft forever # brctl show xen-br0 bridge name bridge id STP enabled interfaces xen-br0 8000.0020fc1ed55d no eth0 配置LVM 以下步骤所有节点都需要执行: 使用LVM卷组至少需要20GB的空间。 如果您在安装时并没有配置LVM卷组,为了初始化Ganeti,您还是需要先完成这个步骤。格式化你需要使用的设备/分区并将它们加入相关的LVM卷组: pvcreate /dev/sda3 vgcreate xenvg /dev/sda3 又或者: pvcreate /dev/sdb1 pvcreate /dev/sdc1 vgcreate xenvg /dev/sdb1 /dev/sdc1 如果您希望晚点添加设备,可以使用 vgextend命令: pvcreate /dev/sdd1 vgextend xenvg /dev/sdd1 注意:我们推荐配置LVM时不要为物理卷扫描DRBD设备。您可以通过编辑 /etc/lvm/lvm.conf和将/dev/drbd[0-9]+这个正则表达式添加给filter 变量来完成这个扫描,例如这样: filter = [\"r|/dev/cdrom|\ 请注意Ganeti会提供一个帮助脚本--lvmstrap,它将清除那些在您的系统中尚未使用的硬盘并将它们配置为LVM。这是个危险的命令,如果您希望使用这个功能的话,请先阅读他的 --help命令。 安装Ganeti 以下步骤所有节点都需要执行: 现在终于可以安装Ganeti了(我去,这文档只有1/3了)!从 http://code.google.com/p/ganeti/ 下载源文件,然后安装它(请将2.0.0改成最新 版本): tar xvzf ganeti-2.0.0.tar.gz cd ganeti-2.0.0 ./configure --localstatedir=/var --sysconfdir=/etc make make install mkdir /srv/ganeti/ /srv/ganeti/os /srv/ganeti/export 您还需要将源档案中的doc/examples/ganeti.initd复制到/etc/init.d/ganeti,然后使用您的linux发行版的启动脚本注册它,在Debian中您可以: update-rc.d ganeti defaults 20 80 为了自动重启失败的实例,您需要安装cron作业(cron job)来运行ganeti-watcher命令。在源文件中的doc/examples/ganeti.cron中提供了一个cron文件的范例,您可以将它(eventually altering the path,理解不能)复制到/etc/cron.d/ganeti。 安装了什么 之前的make install,或者使用您的linux发行版的安装方式来安装,将会在系统中安装以下文件: 一个在Ganeti命名空间下的python库文件(依据python的版本,他们可能会被放在 lib/python-$ver/site-packages 或者其它的位置)。 一些放在/usr/local/sbin或者 /usr/sbin下的程序 以上程序的man命令帮助文件 一些放在lib/ganeti/tools目录下的工具 一个放在lib/ganeti/iallocators下的范例iallocator脚本(详情请查看管理指南(damin guide)) 一个集群诊断所需要的cron任务。 一个Ganeti守护进程的自动启动的初始脚本。 make install提供了一些不会自动安装的base脚本并希望通过它们和丰富的集群命令,能让您工作得更加轻松。 安装系统支持包 以下步骤所有节点都要执行: 为了安装实例,你需要系统安装脚本。在本工程的网站中提供一个运行在Debian下的范例操作系统和几个可以安装Debian与Ubuntu实例的操作系统。您可以从那里下载他们并按照README文件中的介绍来完成操作。以下是安装的步骤(请将0.9换成和您的Ganeti兼容的最新版本): cd /usr/local/src/ wget http://ganeti.googlecode.com/files/ganeti-instance-debootstrap-0.9.tar.gz tar xzf ganeti-instance-debootstrap-0.9.tar.gz cd ganeti-instance-debootstrap-0.9 ./configure make make install 为了使用这个OS定义(definition),您的节点需要连入因特网并且还需要在所有节点上安装debootstrap,dump和restore命令。另外,如果这个OS在 /etc/default/ganeti-instance-debootstrap中配置成了分割这个实例的硬盘,您还需要安装 kpartx命令。 Debian:在所有节点上使用下面这个命令来安装需要的包: apt-get install debootstrap dump kpartx KVM:为了让debootstrap实例能够完全关闭,他们必须在实例中安装基本的acpi支持。具体需要哪些包,则要看你装的linux发行版是ubuntu还是debian,但是下面这个作为范例的默认文件有一行为Debian Lenny设置的被注释掉的配置: EXTRA_PKGS=\"acpi-support-base,console-tools,udev\" Kdb可以代替console-tools(控制台工具),如果需要的话,还可以添加更多的包。 另外,您可以创建您自己的OS定义,具体内容请查看man文件中的 ganeti-os-interface。 初始化集群 以下步骤配置在一个集群的第一个节点上。 最后一步是初始化集群。在你已经为所有节点重复执行完上述步骤后,请选择其中一个节点作为主节点,并且执行: gnt-cluster init 命令中的 CLUSTERNAME 是主机名,它必须能被所有在集群中的节点解析(比如,它必须在DNS服务器上有记录,又或者它存在于文件/etc/hosts中)。你必须为这个多节点的集群取一个不同于其中任意一个节点的名字。大体上说,最好方法是让集群有一个唯一的名字,即使它仅仅包含一台机器,这样将来你需要扩展它时就不会产生什么问题。请注意,为了达成上述目的,这个主机名必须保留一个独占IP地址,并且不能是第一个(主)节点的名字。 如果你希望使用一个不是xen-br0的网桥,或者不准备使用网桥,请使用 --nic-parameters选项进行更改。举个例子,在br0网桥上,你可以这样写: --nic-parameters link=br0 或者不使用网桥,使用一个的路由表: --nic-parameters mode=routed,link=100 如果你并没有xen-br0这个网络接口,您也可以在主节点上通过使用 --master--netdev 你可以为LVM卷组使用一个不同于xenvg的名字(但请注意这个名字在所有节点上都必须相同)。在这种情况下,您需要将 -g 为了将这个集群设置一个Xen HVM集群,请使用 --enabled-hypervisors=xen-hvm选项,开启HVM管理程序(您同样可以添加 ,xen-pvm 开启PVM(并行计算机))。您同样需要创建VNC(virtual network computing)集群密码文件 /etc/ganeti/vnc-cluster=password,这份文件中的一行将会记录这个集群的VNC密码。 要设置这个集群为仅适用KVM(KVM和Xen是不能同时使用的),请将 --enabled-hypervisors=kvm 记入初始化命令中。 您还可以使用该命令的--help参数来查看其它的用法。 管理程序/网络/集群的参数 请注意,默认的管理程序/网络/集群的参数可能对于您的运行环境而言并不是完全符合的,请仔细的检查他们,在集群初始化时更改他们,或者在初始化完成后使用gnt-cluster modify来进行修改。 您的实例类型,网络环境,管理程序类型和版本均有可能影响到你的集群的参数。 举个例子,KVM的实例默认配置成使用主机内核,并通过串行的控制台进行连接,这种方法对于linux系统的半虚拟化实例而言没有问题。但如果您想使用全虚拟化的实例的话,您可能希望使用VNC,并能在实例内部处理它们的内核。 将节点加入集群 以下步骤所有节点都要执行 在初始化完集群后,您需要将其他节点加入其中。您可以在主节点上执行以下步骤: gnt-node add 单独复制网络 以下步骤可选 Ganeti使用DRBD来为节点上的虚拟实例创建硬盘镜像。为了为这个镜像创建一个专用的网络接口(为了提高性能和安全强度),您需要为每个节点配置一个额外的接口。为每个节点使用加上参数-s的gnt-cluster init 和 gnt-node add两个命令来为副接口指定IP地址。请注意,如果您在集群安装的时候指定了这个选项,您必须在事后为每个节点都添加这个操作。 安装测试 执行命令 gnt-node list 来查看集群中的所有节点: # gnt-node list Node DTotal DFree MTotal MNode MFree Pinst Sinst node1.example.com 197404 197404 2047 16 125 0 0 以上显示了一个集群的: Ganeti守护进程可以互相通信 Ganeti可以检查节点的存储状况(DTotal/DFree) Ganeti可以与被选择的管理程序进行通信(MTotal/MNode/MFree) 集群 burnin Ganeti中提供一个叫 burnin的工具,它可以测试Ganeti的大部分功能。这个工具被安装在lib/ganeti/tools目录下(依据安装的方式,也可能安装在/usr或者/usr/local目录下)。更多信息请查看http://docs.ganeti.org/ganeti/2.3/html/admin.html#burnin-label 进一步的学习 您现在可以继续学习《Ganeti administrator's guide》,或者阅读Ganeti的man页面,学习各种命令(ganeti(7) gnt-cluster(8) gnt-node(8) gnt-instance(8) gnt-job(8))。 注: [1]内核和initrd路径可以在集群等级(这将会改变所有实例的默认配置)或实例等级上进行更改。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务