当前位置: 首页 > 科技观察

OpenStack实战之旅:安装与配置

时间:2023-03-16 19:45:01 科技观察

【独家特色】OpenStack是一套用于管理虚拟机的平台软件。它不是一个单一的软件,而是集成了许多组件协同工作。简单的说,比如有十台服务器。VMware的话,我们在每台服务器上安装esx或者esxi,然后再安装一个vcenter。在vcenter的管理界面中,十台服务器的esx通过域名或者ip加入,可以在vcenter中进行统一管理。同样,RedHat也有一个名为virsh的程序来管理虚拟机。相关阅读:在Ubuntu上安装配置OpenStackNova这里我就不介绍其他的云平台管理软件了,只从技术角度介绍如何使用OpenStack。如果要将其用作生产环境,则需要考虑更多,例如架构、网络拓扑、存储方式、节点分布等等。在本文中,我将介绍采用ec2兼容身份验证的方法。所有组件都安装在控制器上。关键字定义控制端:类似于vcenter的管理系统。节点:类似于安装了esx的服务器。nova组件:安装在节点上,使节点可以根据控制终端的命令操作节点上的虚拟机或存储。glance组件:用于管理图片。环境准备ubuntu11.10,服务器双网卡步骤安装基本操作系统后$sudoapt-getupdate$sudoapt-getupgrade$sudoapt-getinstallbridge-utils#安装网桥软件配置网络接口这里是我的architecture是eth0连接外网,也就是我们可以访问的网口。eth1作为网桥,节点之间通过交换机连接。这样做的好处是内部节点和控制器的流量都经过br100交换机,而不会影响虚拟机上应用程序使用的网络。$sudovi/etc/network/interfacesautoeth0ifaceeth0inetstaticaddress192.168.200.21netmask255.255.255.0network192.168.200.0broadcast192.168.200.255gateway192.168.200.10autobr100ifacebr100inetstaticbridge_portseth1bridge_stpoffbridge_maxwait0bridge_fd0address10.200.200.2netmask255.255.255.0$sudo/etc/init.d/networkingrestart前期准备工作做好了,接下来就是安装nova、glance等组件$sudoapt-getinstall-yrabbitmq-server#安装MQ消息组件$sudoapt-getinstall-ypython-greenletpython-mysqldb#安装Python依赖接下来,安装各种nova组件和依赖$sudoapt-getinstallnova-volumenova-vncproxynova-apinova-ajax-console-proxy$sudoapt-getinstallnova-docnova-schedulernova-objectstore$sudoapt-getinstallnova-networknova-compute$sudoapt-getinstallglanceinstalleuca2oolsandunzip$sudoapt-getinstall-yeuca2oolsunzip接下来我们安装数据库,这里我选择了MySQL,其实我个人觉得PostgreSQL比较好。$sudosu-#MYSQL_PASS=nova设置mysql密码和nova数据库密码#cat<mysql-server-5.1mysql-server/root_password密码$MYSQL_PASS>mysql-server-5.1mysql-server/root_password_again密码$MYSQL_PASS>mysql-server-5.1mysql-server/start_on_bootbooleantrue>MYSQL_PRESEED#apt-getinstall-ymysql-server#exit退出根环境$sudosed-i's/127.0.0.1/0.0.0.0/g'/etc/mysql/my.cnf修改my.cnf配置文件$sudoservicemysqlrestart$MYSQL_PASS=nova在普通用户环境下重新设置密码$NOVA_PASS=notnova这是nova数据库的密码$sudomysql-uroot-p$MYSQL_PASS-e'CREATEDATABASEnova;'创建一个名为nova的数据库。建议新手使用nova这个名字。如果这里改了名字,还需要在nova的配置文件中更改$sudomysql-uroot-p$MYSQL_PASS-e"GRANTALLPRIVILEGESON*.*TO'nova'@'%'WITHGRANTOPTION;"$sudomysql-uroot-p$MYSQL_PASS-e"SETPASSWORDFOR'nova'@'%'=PASSWORD('$NOVA_PASS');"至此nova和glance的安装就完成了,下一步就是配置。nova配置$sudovi/etc/nova/nova.conf--dhcpbridge_flagfile=/etc/nova/nova.conf--dhcpbridge=/usr/bin/nova-dhcpbridge--logdir=/var/log/nova--state_path=/data/openstack/nova这里的/data/openstack/nova是我新建的一个卷和目录。确保你有这个并且属于nova用户,或者你可以使用他的默认设置--instances_path=/data/openstack/nova/instances修改默认存放实例的地方--lock_path=/var/lock/nova--force_dhcp_release=True--use_deprecated_auth--iscsi_helper=tgtadm--verbose--scheduler_driver=nova.scheduler.simple。SimpleScheduler--network_manager=nova.network.manager.FlatDHCPManager--my_ip=10.200.200.2这是我的内网ip地址--public_inter>--sql_connection=mysql://nova:notnova@localhost/nova刚刚创建的数据库--libvirt_type=kvm--api_paste_config=/etc/nova/api-paste.ini--image_service=nova.image.glance.GlanceImageService--ec2_dmz_host=192.168.200.21--ec2_url=http://192.168.200.21:8773/services/Cloud--rabbit_host=localhost--glance_api_servers=10.200.200.2:9292--flat_network_bridge=br100--flat_inter>--flat_network_dhcp_start=10.200.200.51指定从instances开始分配,但是好像这个选项不起作用--fixed_range=10.200.200.0/24这个选项指定instances的网段--flat_injected=False--multi_host=1使用multi_host,即以后可以使用multi_host也可以使用nova-network--libvirt_use_virtio_for_bridges使用virtio作为instances的网卡模式然后glance:$sudovi/etc/glance/glance-api.conf修改filesystem_store_datadir参数为指定你需要存放图片的目录,当然owner也改成glance用户$sudovi/etc/glance/glance-registry.conf这个文件可以选择修改sql_connection参数来指定你的数据库。如果要在mysql中修改使用数据库,请务必在mysql中创建相应的数据库sql_connection=mysql://nova:notnova@localhost/glance这是我的配置,我在mysql中创建了一个glance数据库$sudochown-Rroot:nova/etc/nova更改/etc/nova的所有者$sudochmod640/etc/nova/nova.conf重启每个服务$sudorestartlibvirt-bin$sudorestartnova-network$sudorestartnova-compute$sudorestartnova-api$sudorestartnova-objectstore$sudorestartnova-scheduler$sudorestartglance-registry$sudorestartglance-api注意:我们这里没有启动nova-volume,因为虽然我们安装了volume,但是volume需要一个单独的vg才能使用。我们还没有配置音量,所以我们无法启动它。这里网络服务和计算可能无法启动,暂时不用担心。接下来我们配置nova的运行环境。$sudonova-managedbsyncnova-manageuseradmin在这里我们可以创建一个用户,比如$sudonova-manageuseradmintest如果创建成功,屏幕会返回如下输出:exportEC2_ACCESS_KEY=d6aa7747-4324-4abc-9604-4f7d6a2f8f3fexportEC2_SECRET_KEY=2b204b75-da2d-47b8-ba7a-611d71f0ecbfnova-manageprojectusercreate创建一个像我们刚刚构建的项目$sudonova-manageprojectcreatetest-projtestnova-managenetworkcreate--help创建网络实例,如:$sudonova-managenetworkcreate--label=test-net--fixed_range_v4=10.200.200.0/24--num_network=1--network_size=256启动服务又失败$sudostartnova-network$sudostartnova-compute$sudostartnova-scheduler怎么样,成功了。另外,启动每个服务的时候,最好看看日志,比如sudotail-f/var/log/nova/nova-network判断是否有错误,或者使用psaux|grep[n]ova-network以确认该服务已启用。如果服务失败,您需要确认原因。修改后需要用sudostart代替sudorestart。这样,计算环境就部署好了。我们可以使用命令查看状态:$sudonova-manageservicelist$sudonova-managenetworklist等等。接下来,创建一个证书,以便我们可以使用euca工具$cd$mkdircreds$sudonova-manageprojectzipfiletest-projtestcreds/novacreds.zip$unzipcreds/novacreds.zip-dcreds/$sourcecreds/novarc注意,每次下次再次登录shell时,都需要source这个认证文件才能使用euca;当然你也可以将novarc>>的内容添加到你的用户配置文件或者bashrc中OK,完成,我们可以使用工具查看|-nova-network已启用:-)2011-10-1704:45:44AVAILABILITYZONE|:45可用区||-nova-schedulerenabled:-)2011-10-1704:45:45至此,服务已经成功启用。当发现服务不能正常使用时,使用psaux|grepnova查看服务是否开启,需要详细观察/var/log/nova/目录下各个服务的日志文件,获取更多信息。接下来,我们可以使用kvm创建镜像??镜像$sudoapt-getinstallkvm-pxe来安装这个,否则运行kvm时会有警告$kvm-imgcreate-frawserver.img5G$sudokvm-m1024-cdromrhel5.iso-drivefile=server.img,if=virtio,index=0-bootd-netnic-netuser-nographic-vnc:0这里我们使用RHEL5的iso,运行这条命令后,你可以连接vnc。在本机连接服务器:ssvncviewer192.168.200.21:0打开vnc,可以看到安装界面。安装完成后,在rhel镜像的/etc/rc.local开头写入如下段落:depmod-amodprobeacpiphp#simpleattempttogettheusersshkeyusingthemeta-dataservicemkdir-p/root/.sshecho>>/root/.ssh/authorized_keyscurl-m10-shttp://169.254.169.254/latest/meta-data/public-keys/0/openssh-key|grep'ssh-rsa'>>/root/.ssh/authorized_keysecho"AUTHORIZED_KEYS:"echo"***************************"cat/root/.ssh/authorized_keysecho"*************************"保存退出,镜像就做好了。使用glance上传图片$glance--verboseaddname="rhel5"disk_format=rawis_public=true