您的位置:首页 > 运维架构 > Linux

CentOS6.2下一步一步源代码安装OpenStack(七)安装配置计算节点

2012-11-02 15:00 656 查看


CentOS6.2下一步一步源代码安装OpenStack(七)安装配置计算节点

分类: OpenStack安装2012-05-03
22:14 1040人阅读 评论(0) 收藏 举报

8月28日更新:

第五步中qemu-common的安装有问题,我从f13的源码中编译出来的qemu存在问题,兼容性不好,一个是我通过virt-manager安装windows虚拟机中创建完成后无法启动直接报错;二个是我在dash中对实例进行suspend操作时报错操作失败,因此建议在元数据的注入时采用guestfs这样只需要安装三外软件包libguestfs,libguestfs-mount,fuse这些包在组“Virtualization Tools”中,安装简单可以不用编译nbd模块,省去第四、五步,但是据说guestfs速度比nbd慢,如果坚持要用nbd,请参考这里http://jamyy.dyndns.org/blog/2012/02/3582.html

1.操作系统的准备

操作系统的准备请看CentOS6.2下一步一步源代码安装OpenStack(一)操作系统准备与计算节点相关的部分我已经用蓝色字体标出。

2.时间同步、防火墙及selinux

2.1时间同步

计算节点要与控制节点通信,保持时间的同步很重要,我们需要配置ntp服务器。

2.1.1配置启动控制节点的ntp

[root@cc ~]# vim /etc/ntp.conf

在:

# Hosts on local network are less restricted.

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

下添加你要提供时间同步服务的网段,如我的为:

restrict 10.61.2.0 mask 255.255.255.0 nomodify notrap

去掉以下两行前的注释:

server 127.127.1.0 # local clock

fudge 127.127.1.0 stratum 10

[root@cc ~]# vim /etc/sysconfig/ntpd

在后面添加:

SYNC_HWCLOCK=yes

使时间更新到bios

启动ntp:

[root@cc ~]# chkconfig ntpd on && service ntpd start

2.1.2配置启动计算节点的ntp

[root@node1 ~]# vim /etc/ntp.conf

以下三行:

server 0.centos.pool.ntp.org

server 1.centos.pool.ntp.org

server 2.centos.pool.ntp.org

替换为:

server 10.61.2.88

这里的ip还是你的控制节点的ip

[root@node1 ~]# vim /etc/sysconfig/ntpd

在后面添加:

SYNC_HWCLOCK=yes

使时间更新到bios

启动ntp:

[root@node1 ~]# chkconfig ntpd on && service ntpd start

2.1.3一段时间观察同步情况

控制节点情况:



计算节点情况:



2.2防火墙配置

我的机器均只使用了一个网卡,配置的本地ip段为10.61.2.0/24,为简单我会直接对本地的ip数据包全部放行。CentOS在启动时会加载/etc/sysconfig/iptables中的过滤规则,所以我选择编辑它加入我的一条简单规则,注意控制节点和计算节点都要添加

[root@node1 ~]# vim /etc/sysconfig/iptables

在:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

后添加:

-A INPUT -s 10.61.2.0/24 -j ACCEPT

该规则只有在机器重启后才会有效,要想现在就运行该规则请运行:

[root@node1 ~]# iptables -I INPUT 9 -s 10.61.2.0/24 -j ACCEPT

这里的数字表示该规则插入的位置,我这里是放在

ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh

后面,请运行:

[root@node1 ~]# iptables -L

查看该规则位置 ,位置从1开始计数

2.3关闭selinux

selinux会引起一些权限的问题,因此我选择关闭

[root@node1 ~]# setenforce 0

[root@node1 ~]# vim /etc/selinux/config

修改SELINUX=disabled

3.组件安装

组件的安装见CentOS6.2下一步一步源代码安装OpenStack(二)组件安装,这里我们只安装nova、glance、python-novaclient其它后两个为nova所依赖的

4.编译nbd模块

参考:http://jamyy.dyndns.org/blog/2012/02/3582.html

安装kernel-devel及kernel-headers:

yum --enablerepo=iso --disablerepo=base,updates,extras install kernel-devel kernel-headers

安装kernel source code:

wget ftp://ftp.redhat.com/pub/redhat/linux/enterprise/6ComputeNode/en/os/SRPMS/kernel-2.6.32-220.el6.src.rpm

rpm -ihv kernel-2.6.32-220.el6.src.rpm

备份:

cd /usr/src/kernels/

mv $(uname -r) $(uname -r)-old

解压源文件:

tar jxpf /root/rpmbuild/SOURCES/linux-2.6.32-220.el6.tar.bz2 -C ./

mv linux-2.6.32-220.el6 $(uname -r)

编译:

cd $(uname -r)

make mrproper

cp ../$(uname -r)-old/Module.symvers ./

cp /boot/config-$(uname -r) ./.config

make oldconfig

make prepare

make scripts

make CONFIG_BLK_DEV_NBD=m M=drivers/block

cp drivers/block/nbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/

depmod -a

注意:nbd模块不会在机器启动后自己load,必须用命令modprobe nbd加载,怎样使其开机自动加载?

开机自启动方法:编辑/etc/rc.d/rc.local 在文件尾添加一行:modprobe nbd

5.安装qemu-common

计算节点上还需要有qemu-nbd工具,该工具在qemu-common中,遗憾的是CentOS中并不包含qemu-common,不得不自己从f13找来与CentOS版本最接近的qemu源代码rpm自己编译,但安装qemu-common时仍然与已安装的qemu-kvm冲突。因此先卸载qemu-kvm及qemu-img,再重新安装,安装时发现依赖seabios-bin,还得从源rpm编译。。。

5.1编译qemu及seabios

我会提供已经编译好的包供大家下载,如果采用我提供的包请直接查看5.3软件的安装,下载信息我会放在OpenStack相关软件下载及说明



5.1.1安装编译所依赖的包

有些包在CentOS-6.2-x86_64-bin-DVD2.iso中,因此要将该镜像也挂载上,并修改iso.repo文件

[root@node1 ~]# mkdir /media/iso2

[root@node1 ~# mount -o loop -t iso9660 ~/CentOS-6.2-x86_64-bin-DVD2.iso /media/iso2

[root@node1 ~]# vim /etc/yum.repos.d/iso.repo

[iso]

name=iso

baseurl=file:///media/iso/

file:///media/iso2/

gpgcheck=1

enables=0

gpgkey=file:///media/iso/RPM-GPG-KEY-CentOS-6

添加了红色字体这一行

安装依赖:

[root@node1 ~]# yum --enablerepo=iso --disablerepo=base,updates,extras install rpm-build glib2-devel SDL-devel texi2html gnutls-devel cyrus-sasl-devel libaio-devel pciutils-devel pulseaudio-libs-devel ncurses-devel iasl

5.2安装qemu及seabios源rpm并编译

参考:http://wiki.xen.org/wiki/RHEL6_Xen4_Tutorial

下载:

[root@node1 ~]# wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/13/Everything/source/SRPMS/qemu-0.12.3-8.fc13.src.rpm

[root@node1 ~]# wget ftp://ftp.redhat.com/pub/redhat/linux/enterprise/6ComputeNode/en/os/SRPMS/seabios-0.6.1.2-8.el6.src.rpm(发现编译不能生成seabios-bin改用其它src)

[root@node1 ~]# wget http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/source/SRPMS/seabios-0.6.2-3.fc16.src.rpm

安装:

[root@node1 ~]# rpm -ihv qemu-0.12.3-8.fc13.src.rpm

[root@node1 ~]# rpm -ihv seabios-0.6.2-3.fc16.src.rpm

编译:

[root@node1 ~]# cd rpmbuild/SPECS/

[root@node1 SPECS]# rpmbuild -bb qemu.spec

最后编译结果:

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-kvm-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-img-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-common-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-user-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-system-x86-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-system-ppc-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-system-sparc-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-system-arm-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-system-mips-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-system-cris-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-system-m68k-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-system-sh4-0.12.3-8.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/x86_64/qemu-kvm-tools-0.12.3-8.el6.x86_64.rpm

[root@node1 SPECS]# rpmbuild -bb seabios.spec

最后编译结果:

Wrote: /root/rpmbuild/RPMS/x86_64/seabios-0.6.2-3.el6.x86_64.rpm

Wrote: /root/rpmbuild/RPMS/noarch/seabios-bin-0.6.2-3.el6.noarch.rpm

5.3重新安装qemu

卸载旧版本:

[root@node1 SPECS]# yum --enablerepo=iso --disablerepo=base,updates,extras remove qemu-img qemu-kvm seabios

安装新版本:

[root@node1 SPECS]# rpm -ihv /root/rpmbuild/RPMS/noarch/seabios-bin-0.6.2-3.el6.noarch.rpm

[root@node1 SPECS]# rpm -ihv /root/rpmbuild/RPMS/x86_64/seabios-0.6.2-3.el6.x86_64.rpm

[root@node1 SPECS]# rpm -ihv /root/rpmbuild/RPMS/x86_64/qemu-common-0.12.3-8.el6.x86_64.rpm

[root@node1 SPECS]# rpm -ihv /root/rpmbuild/RPMS/x86_64/qemu-system-x86-0.12.3-8.el6.x86_64.rpm

[root@node1 SPECS]# rpm -Uhv /root/rpmbuild/RPMS/x86_64/qemu-img-0.12.3-8.el6.x86_64.rpm

[root@node1 SPECS]# rpm -Uhv /root/rpmbuild/RPMS/x86_64/qemu-kvm-0.12.3-8.el6.x86_64.rpm

[root@node1 SPECS]# yum --enablerepo=iso --disablerepo=base,updates,extras install libvirt virt-who

启动libvirtd:

[root@node1 SPECS]# chkconfig libvirtd on && service libvirtd start

6.运行nova-compute

计算节点上只要运行nova-compute就可以了,当然还可以运行nova-network,这时需要在/etc/nova下添加policy.json文件

从控制节点拷贝配置文件nova.conf到/etc/nova/nova.conf

修改其中的my_ip为计算节点的ip

修改其中的vncserver_listen为计算节点的ip

我这里还没弄好swift实例采用本地文件系统存储,因此要创建一个本地目录,该目录可在nova.conf中用instances_path=/home/instances指定:

[root@node1 ~]# mkdir /home/instances

运行:

[root@node1 ~]# nova-compute

7.测试

7.1查看nova-compute是否启动

[root@node1 ~]# nova-manage service list



注意:控制节点上我采用nova-all启动相关服务,但nova-all不会启动nova-compute和nova-consoleauth,如果要能够在控制节点上创建实例,需另外启动nova-compute,在采用vnc操作实例要另外启动nova-consoleauth来进行验证,我的控制节点重启后没有挂载nova-volumes,所以nova-volume没有启动起来,但在这里没有什么影响,你看到node1这个主机上有两个nova-compute及nova-network这个不用管,这是我以前安装的时候遗留下来的。

7.2通过horizon创建实例



现在就可以在控制节点通过ssh连接实例了:



另外我在我的计算节点上无法ping通实例:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐