搭建Openstack云平台

时间:2024-06-17 13:06:20

实验室需要做一个大数据平台项目,临时接下需要部署实验室云平台的任务,由于之前没有接触过相关技术,仅以此篇作为纪录文,记录一下我的openstack的初步学习以及搭建过程。

1.openstcak及其组件的简要介绍

Openstack是一个开源的云计2016-02-25几个主要的组件组合起来完成具体工作。

计算(Compute:Nova。一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。

对象存储(Object Storage):Swift。一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为Glance提供镜像存储,为Cinder提供卷备份服务。自Austin版本集成到项目中

镜像服务(Image Service):Glance。一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。自Bexar版本集成到项目中。

身份服务(Identity Service):Keystone为OpenStack其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles。自Essex版本集成到项目中。

网络&地址管理(Network):Neutron。提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、负载均衡、L3服务,网络支持GRE、VLAN。插件架构支持许多主流的网络厂家和技术,如OpenvSwitch。自Folsom版本集成到项目中。

块存储 (Block Storage)Cinder。为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。自Folsom版本集成到项目中。

UI 界面 (Dashboard)Horizon。OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,例如:启动实例、分配IP地址、配置访问控制等。自Essex版本集成到项目中。

数据库服务(Database Service:Trove。为用户在OpenStack的环境提供可扩展和可靠的关系和非关系数据库引擎服务。自Icehouse版本集成到项目中。

2.openstack的搭建过程

本文主要介绍了在三台服务器上搭建opentack平台并使用dashboard创建虚拟机的的过程。Openstack分为三个节点:控制节点、网络节点和计算节点。

搭建Openstack云平台

      安装步骤参考链接所指的文章

https://github.com/xidianpanpei/OpenStack-Havana-Install-Guide-CN-OVS_MutliNode/blob/master/OpenStack_Grizzly_Install_Guide.rst

     上述链接所指的文章已经很好地介绍了openstack Havana的安装过程,在安装过程中最重要的就是细心和谨慎。稍有不慎,敲错指令就会导致后期无法运行成功。还有一个要注意的点就是IP地址的规划

节点角色

NICs

控制节点

Eth0(10.82.83.175),Eth1(192.168.0.107)

网络节点

Eth0(10.82.83.177),Eth1(192.168.0.108)

计算节点

Eth0(10.82.83.179),Eth1(192.168.0.109)

Eth0是外网地址,Eth1是内网地址,因此在配置的过程中需要对配置信息做相应地修改。

3.openstack启动和使用云主机

参考文章:http://www.chenshake.com/openstack-havana-dashboard-to-test-and-use/

4.openstack镜像和密码

在后期,可能会用到许多不同的镜像,这里对镜像进行一些总结。

  1. 虚拟机登录方式

对Openstack来说:访问虚拟机提供了两种方式,ssh方式和Dashboard的console。Console方式,相当于你服务器前面直接登陆。有些虚拟机镜像处于安全考虑,不允许root的账号直接远程ssh登陆。

  1. Cirror镜像

是openstack开发的测试镜像,因为他比较小,只有10M

镜像介绍:https://launchpad.net/cirros

镜像的地址: https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.imgCirros,是可以使用用户名和密码登陆,也可以使用密钥登陆。user:cirros,password:cubswin:)

  1. Ubuntu镜像

下载地址

http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img

这个是非常有名的镜像,大家用来测试也比较多。这个镜像默认是无法使用密码登陆,只能使用密钥登陆。所以你在console,也是无法登陆到虚拟机。

默认的用户名是:ubuntu,你需要使用密钥才能登陆。

如果你希望console可以登陆,那么在启动云主机处的创建后填入如下脚本:

搭建Openstack云平台

这个时候,创建完的虚拟机,在console,就可以用 user:ubuntu,pass:ubuntu 登陆,不需要密钥。

不过这个时候,你还是无法通过ssh访问虚拟机,因为ssh默认设置是禁用密码认证,所以你需要多做点工作。

#!/bin/sh
passwd ubuntu<<EOF
ubuntu
ubuntu
EOF
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
service ssh restart

这样你就可以使用ssh登陆到虚拟机,不需要通过console。

  1. CentOs镜像

国内用CentOS比较多,不过在Openstack上的CentOS image,以前都只能自己去制作。这个需要一个大家信任的第三方来完成。以下两个链接是教你如何制作镜像

http://catn.com/labs/centos-images/

http://catn.com/2013/04/18/building-a-virtual-machine-image-for-centos/

也可以用别人做好的现成的image,其镜像下载地址:

http://mirror.catn.com/pub/catn/images/qcow2/centos6.4-x86_64-gold-master.img

镜像账号:(user:root;pass:changeme1122)

你是可以在创建虚拟机的时候,直接把这个root的密码修改。默认是运行root登陆。

不过这个image,没有集成cloud-init。导致你看到的虚拟机名字,不是你设置的计算机名。

5.运行虚拟机会崩溃的解决方案

在安装完平台后,一定要对MTU进行设置。

编辑 /etc/neutron/dhcp_agent.ini

dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf

创建一个 /etc/neutron/dnsmasq-neutron.conf

dhcp-option-force=26,1400

重启服务

service neutron-dhcp-agent restart

  1. 如何排错

在安装过程中,出现错误是家常便饭,所以一定要学会如何排错。OpenStack的部署过程遇到的问题可归纳总结为配置文件问题、配置步骤缺失等,因为通常计算机不会犯错,犯错的只有人类……

故障通常有以下几种情况:

1.时间同步问题,两(多)个节点间时间不同步数据库问题,权限问题,数据库缺失,表结构不存在(数据库建立表结构时出错),用户名密码错误等

2.软件包没有正确安装,例如国外的源网络存在波动或网站存在故障或网站临时修改了源的路径等都会导致软件包安装出现重大错误,而安装的人却没有发现

3.配置文件中配置出错,这种错误最为常见,往往一个不易引人注意的错误就会出现问题,例如把0写成o,把1写成l,service写成server等

4.网络接口地址用错,控制节点上的endpoint-list发现public url用的是错误地址,如本地环回地址而不是管理接口地址

5.服务用户缺失,一般由软件bug或软件安装不正确导致,如以前有rabbitmq需要的rabbitmq不存在,导致rabbitmq的guest密码不可修改等问题。

6.文件权限问题,如配置文件在更换后没有配置文件权限,例如本来是root:nova的文件所有者,被换成了root:root,一定会出现服务无法正常运行的问题。

通常排错方法总结如下:

1.检查软件日志和系统日志,这是第一步就要做的,如果没有生成软件日志就考虑查看系统日志,可以将/var/log/messages文件清空再 执行一下相关的命令,查看此文件中的日志,可以在执行命令后没有生成日志的情况下使用此方法解决这一问题(在今天的故障排除中具有关键作用)。

最后推荐一个我在学习过程中觉得写的不错的博客:

http://www.chenshake.com/cloud-computing/

搭建好的云平台:

搭建Openstack云平台