这是博主 @Ethan_熠森张将近一个月的劳动成果吧?有需要的人赶紧mark, 同时不要忘记感谢博主
OpenStack多节点部署(一)——服务器选型
服务器的选型在类似于我们这样的非互联网类的传统公司也会成为一个很大的问题。以为之前并没有相关大规模服务器部署的经验,而且在采购等等环节受制于国企的一些制度和利益的影响,并不是能如意的选择到自己真正适合需要的机器。
这几年我买买的最多的机器还是DELL的,因为是集团的指定供应商。但是感觉服务很一般,尤其是官方的服务,二级分销商可能还会热情一些。而且在销售上,二级分销商和官方居然是竞争的关系,经常会因为抢做我们的单子而发生争执。
另外,我总觉得DELL的机器要比惠普的差一些,特别是在主板布局以及接口等方面,如果你手边有这两种服务器的话把机箱盖打开对比一下就知道了。另外网上提到现在国产服务器的份额也在逐年增加,像联想、曙光等等,做的也不错,这个我没接触过,就不评论了。
我们用的做多的机型是R710和R510,相信大家对着两款机型比较熟悉,是兼容性比较强的机器,属于拿来做什么项目都行的类型。可扩展性比较强,DELL提供的扩展组件也比较多。如果后期要升级的话,建议最好找二级分销商,价格会低很多。同是国企的朋友最好注意第一次购买的时候一定要根据项目需求配置双CPU和大内存,因为这两块占的比重很大,不然后期升级的时候费用很高,相信财务上会比较麻烦。
DELL最近为了适应云计算领域新推出了PowerEdge C系列的机器, C6100、C6105、以及C6220,比较适用于云计算的大内存,大存储空间的特点,移除了云计算不会涉及到的一些组件,降低了成本,也是可以考虑下的。
还有就是买KVM的时候千万别忘了RemoteKey,不然总跑机房也挺麻烦的。
OpenStack多节点部署(二)——操作系统安装
在前面一章中,为大家介绍了搭建云计算运营系统的服务器选型,相信经过这段时间,大家都已经成功采购到了符合业务量需求的服务器配置。下面将分享操作系统的安装过程中的思路:
如果您已经从WIKI得到了OpenStack的部署文档,比如os-compute-starterguide-trunk,您会发现文档中的安装演示步骤都是以Ubuntu为模板的。这也不足为怪,因为OpenStack基金会与Ubuntu的东家Canonical合作甚密;并且文档是以搭建实验开发平台为读者目标进行编攒的,以Ubuntu的apt-get管理方式进行OpenStack的安装确实也会给初学者带来许多方便。但是,如果您需要搭建一个多节点平台,一个真正需要运营的生产环境,还是建议使用CentOs,或者是商业系统RedHat等。因为毕竟Ubuntu开发中面向的群体主要还是桌面用户,对于服务器的支持并不是十分友好。刚开始接触OpenStack的时候,我也是按照教程使用的Ubuntu12.04作为操作系统,碰到了许多问题,拖延了部署的时间。
1、安装后开机不进入系统,显示并定在了initramfs,这是因为服务器启动时间过长让Ubuntu系统错认为是某些硬件系统初始化失败,系统默认的超时时间过短,我们需要在
[plain] view plain copy
- sudo vi /etc/default/grub
中修改
[plain] view plain copy
- GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=600"
调大超时的时间,并且更新grub
[plain] view plain copy
- sudo grub-update
2、在/etc/network/interfaces中修改网络配置后重启网络服务,发现IP并没有改为我们在配置文件中设置的IP,发现是因为启动了Gnome的桌面,桌面系统中的网络管理软件接管了网络服务,需要在桌面右上角手动将其禁用。
3、Ubuntu没完没了的更新,让你需要经常重启服务器,造成服务的中断。
种种问题因篇幅不一一赘述,虽然说Ubuntu在桌面电脑的表现上还是上佳的,但是服务器上我们还是选用较为稳定的CentOs6.3吧。
安装CentOS6.3最好为光盘安装,在mirrors下载CentOS-6.3-x86_64-bin-DVD1.iso,刻录一张DVD光盘。如果没有光驱,可以用ultraISO制作U盘安装盘,需要注意的是制作完U盘安装盘后还要将CentOS-6.3-x86_64-bin-DVD1.iso这个文件也拷贝到U盘的根目录下,并且要将bios的启动方式从bios方式改为EFI方式。
计算节点的分区可以选择默认模式,如果是控制节点推荐手动分区,因为要安装nova-volume服务,需要一个独立的LVM卷。
CentOS6.3网络设备的标识方法从Eth0改为了Em1,在做配置的时候需要注意。最近已经成功测试了在R510/710系列上利用自动化部署cobbler自动安装CentOS6.3系统,稍后有时间会给大家分享。
先写到这里,后面章节会给大家陆续介绍OpenStack各个组件在CentOS上的安装。
OpenStack多节点部署(三)——网络配置
在上一章中,和大家讨论了操作系统安装的方方面面,这章将带来OpenStack的网络配置。
初接触OpenStack的人,在看了部署文档之后,可能会被Nova-Network,Fix-ip,Floating-ip等概念弄的一头雾水,下面会一一详细道来。
Flat DHCP Network
上图大家可能看的不是很明白,其实OpenStack的nova-network部署可以分成3个网段。公网网段,内网网段和虚拟机网段。公网网段指的是可以直接访问到互联网的网段(但是此IP不一定非要从公司外部也能访问,这里的内外是从OpenStack网络系统出发而不是从公司网络的视角出发,请注意),也就是Floating IP配置的网段,我把它绑定在了Eth0。内网网段指的是OpenStack系统内各服务器之间互联的顶层交换机所划的网段,这里将其设置为192.168.3.X,此网段无需出口,我把它绑定在了Eth1,在公司的网络也就是公网网络是访问不到的。虚拟机网段指的是虚拟机运行时其IP所在的网段,也就是Nova-Network中提到的Fix-IP,由于NOVA底层是采用libvirt,所以OpenStack内部默认将其设置为桥接网络br100,这里将其桥接在内网网络上,也就是Eth1。
在服务器选型的时候,我们已经选择了千兆双网卡的机型。这样公网网段和内网网段就可以绑定到两个不同的网口。有的实验环境中,比如沙克老师的文章将两个公网和内网两个网段都配置在了一个网卡上,在实验环境是可以的,但是生产环境不推荐,因服务器如果和外部网络数据交换量大的时候,会使内部服务如nova-scheduler,nova-volume等服务带来延迟。
我的服务器网络配置
[plain] view plain copy
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.2.15.3
netmask 255.255.255.0
broadcast 10.2.15.255
gateway 10.2.15.1
dns-nameservers 8.8.8.8
auto eth1
iface eth1 inet static
address 192.168.3.1
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.3.255
上面提到的Flat DHCP Network是Nova-Network服务的一种模式。另外还有Flat,VLan等,这里就不一一介绍了。Flat DHCP指的是所有虚拟机处在同一个平坦的网段上,且DHCP服务自动为其分配IP。
配置Fixed-IP命令
[plain] view plain copy
使用此命令,我们可以详细配置虚拟机网段Fixed-IP所在的网段,掩码,桥接网络名称,桥接网络端口等参数,后面在NOVA章将详细介绍。
OpenStack多节点部署(四)——KeyStone
前面啰嗦了这么多,终于要正式进入OpenStack各组件安装部署的章节了。首先为大家带来的是OpenStack的用户登陆鉴权组件,KeyStone的安装。
首先,安装mysql服务,并分别创建Nova, glance, swift等组件独立的用户和口令
[plain] view plain copy
安装过程中提示设置密码,这里设置为mygreatsecret
[plain] view plain copy
安装KeyStone组件
[plain] view plain copy
后面就是按照文档,创建租户Tenants,创建用户Users,创建角色Roles,最后进行租户、用户、角色之间的关联。不管创建什么类型,都会返回一个UID值,后面的步骤会用到前面的id,比如用户角色关联命令
[plain] view plain copy
这个$USER_ID和$ROLE_ID等就是前面创建用户或者角色时候得到的ID
比如先创建用户
[plain] view plain copy
查看ID
[plain] view plain copy
如上,我们创建的名字为admin的用户就会显示出来,后面的步骤就要用这个ID。
大家会发现这样最非常麻烦,而且id这样拷贝很容易出错,所以我们要用脚本来自动完成上面的这些操作,以及service endpoint的操作。
[plain] view plain copy
#!/bin/bash
#
# Initial data for Keystone using python-keystoneclient
#
# Tenant User Roles
# ------------------------------------------------------------------
# admin admin admin
# service glance admin
# service nova admin, [ResellerAdmin (swift only)]
# service quantum admin # if enabled
# service swift admin # if enabled
# service cinder admin # if enabled
# service heat admin # if enabled
# demo admin admin
# demo demo Member, anotherrole
# invisible_to_admin demo Member
# Tempest Only:
# alt_demo alt_demo Member
#
# Variables set before calling this script:
# SERVICE_TOKEN - aka admin_token in keystone.conf
# SERVICE_ENDPOINT - local Keystone admin endpoint
# SERVICE_TENANT_NAME - name of tenant containing service accounts
# SERVICE_HOST - host used for endpoint creation
# ENABLED_SERVICES - stack.sh's list of services to start
# DEVSTACK_DIR - Top-level DevStack directory
# KEYSTONE_CATALOG_BACKEND - used to determine service catalog creation
SERVICE_HOST=${SERVICE_HOST:-192.168.3.1}
#将这个IP修改为Keystone服务器的内网IP
SERVICE_TOKEN=${SERVICE_TOKEN:-admin}
SERVICE_ENDPOINT=${SERVICE_ENDPOINT:-http://localhost:35357/v2.0}
# Defaults
export SERVICE_TOKEN=$SERVICE_TOKEN
export SERVICE_ENDPOINT=$SERVICE_ENDPOINT
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
function get_id () {
echo `"$@" | awk '/ id / { print $4 }'` # '$@'代表函数的参数,参数就是get_id后面接的KeyStone命令
}
# Tenants
# -------
ADMIN_TENANT=$(get_id keystone tenant-create --name=admin)
SERVICE_TENANT=$(get_id keystone tenant-create --name=$SERVICE_TENANT_NAME)
# Users
# -----
ADMIN_USER=$(get_id keystone user-create --name=admin \
--pass=admin \
--email=admin@example.com)
NOVA_USER=$(get_id keystone user-create --name=nova \
--pass=nova \
--email=demo@example.com)
GLANCE_USER=$(get_id keystone user-create --name=glance \
--pass=glance \
--email=demo@example.com)
SWIFT_USER=$(get_id keystone user-create --name=swift \
--pass=swift \
--email=demo@example.com)
# Roles
# -----
ADMIN_ROLE=$(get_id keystone role-create --name=admin)
# ANOTHER_ROLE demonstrates that an arbitrary role may be created and used
# TODO(sleepsonthefloor): show how this can be used for rbac in the future!
MEMBER_ROLE=$(get_id keystone role-create --name=Member)
# Add Roles to Users in Tenants
keystone user-role-add --user_id $ADMIN_USER --role_id $ADMIN_ROLE --tenant_id $ADMIN_TENANT
keystone user-role-add --user_id $NOVA_USER --role_id $ADMIN_ROLE --tenant_id $SERVICE_TENANT
keystone user-role-add --user_id $GLANCE_USER --role_id $ADMIN_ROLE --tenant_id $SERVICE_TENANT
keystone user-role-add --user_id $SWIFT_USER --role_id $ADMIN_ROLE --tenant_id $SERVICE_TENANT
# The Member role is used by Horizon and Swift so we need to keep it:
keystone user-role-add --user_id $ADMIN_USER --role_id $MEMBER_ROLE --tenant_id $ADMIN_TENANT
# Services
# --------
# Keystone
KEYSTONE_SERVICE=$(get_id keystone service-create \
--name=keystone \
--type=identity \
--description="Keystone Identity Service")
keystone endpoint-create \
--region RegionOne \
--service_id $KEYSTONE_SERVICE \
--publicurl "http://$SERVICE_HOST:5000/v2.0" \
--adminurl "http://$SERVICE_HOST:35357/v2.0" \
--internalurl "http://$SERVICE_HOST:5000/v2.0"
# Nova
NOVA_SERVICE=$(get_id keystone service-create \
--name=nova \
--type=compute \
--description="Nova Compute Service")
keystone endpoint-create \
--region RegionOne \
--service_id $NOVA_SERVICE \
--publicurl "http://$SERVICE_HOST:8774/v2/\$(tenant_id)s" \
--adminurl "http://$SERVICE_HOST:8774/v2/\$(tenant_id)s" \
--internalurl "http://$SERVICE_HOST:8774/v2/\$(tenant_id)s"
# Nova needs ResellerAdmin role to download images when accessing
# swift through the s3 api. The admin role in swift allows a user
# to act as an admin for their tenant, but ResellerAdmin is needed
# for a user to act as any tenant. The name of this role is also
# configurable in swift-proxy.conf
#RESELLER_ROLE=$(get_id keystone role-create --name=ResellerAdmin)
#keystone user-role-add \
# --tenant_id $SERVICE_TENANT \
# --user_id $NOVA_USER \
# --role_id $RESELLER_ROLE
# Volume
VOLUME_SERVICE=$(get_id keystone service-create \
--name=volume \
--type=volume \
--description="Volume Service")
keystone endpoint-create \
--region RegionOne \
--service_id $VOLUME_SERVICE \
--publicurl "http://$SERVICE_HOST:8776/v1/\$(tenant_id)s" \
--adminurl "http://$SERVICE_HOST:8776/v1/\$(tenant_id)s" \
--internalurl "http://$SERVICE_HOST:8776/v1/\$(tenant_id)s"
# Glance
GLANCE_SERVICE=$(get_id keystone service-create \
--name=glance \
--type=image \
--description="Glance Image Service")
keystone endpoint-create \
--region RegionOne \
--service_id $GLANCE_SERVICE \
--publicurl "http://$SERVICE_HOST:9292/v1" \
--adminurl "http://$SERVICE_HOST:9292/v1" \
--internalurl "http://$SERVICE_HOST:9292/v1"
# Swift
SWIFT_SERVICE=$(get_id keystone service-create \
--name=swift \
--type="object-store" \
--description="Swift Service")
keystone endpoint-create \
--region RegionOne \
--service_id $SWIFT_SERVICE \
--publicurl "http://$SERVICE_HOST:8080/v1/AUTH_\$(tenant_id)s" \
--adminurl "http://$SERVICE_HOST:8080/v1" \
--internalurl "http://$SERVICE_HOST:8080/v1/AUTH_\$(tenant_id)s"
# EC2
EC2_SERVICE=$(get_id keystone service-create \
--name=ec2 \
--type=ec2 \
--description="EC2 Compatibility Layer")
keystone endpoint-create \
--region RegionOne \
--service_id $EC2_SERVICE \
--publicurl "http://$SERVICE_HOST:8773/services/Cloud" \
--adminurl "http://$SERVICE_HOST:8773/services/Admin" \
--internalurl "http://$SERVICE_HOST:8773/services/Cloud"
最后,用命令验证查看KeyStone是否安装正确
[plain] view plain copy
好了,有关KeyStone的相关部署方法就介绍到这里。
OpenStack多节点部署(五)——Nova
这章将为大家介绍OpenStack最重要的核心组件,虚拟机管理组件Nova的安装部署。虽然是最重要的组件,但是因为包装的非常完整,所以如果前面的网络配置和KeyStone部署都正确完成的话,Nova组件的安装是非常简单的。
首先安装Nova组件
[plain] view plain copy
2013-02-21 修改
OpenStack服务器节点迁移(修改IP)后引发的nova-compute不启动 由于这篇文章提到的遇到服务器搬迁外网地址需要修改等问题,导致nova不能启动,这里在nova.conf中增加--iscsi_ip_address=192.168.3.1,这样系统创建的volume都会指向内网IP,避免类似的错误。
修改节点的/etc/nova/nova.conf配置文件
[plain] view plain copy
配置文件中需要注意的是各服务访问的IP地址,OpenStack多节点部署(三)——网络配置中介绍过,我的控制节点有两个IP,一个是OpenStack系统内网IP 192.168.3.1,另一个是公司内部可访问Internet的IP 10.2.15.3。这里推荐将服务IP写成内网IP 192.168.3.1,这样如果控制节点搬迁,或者公司10网段IP变更,那么我们的配置文件可以不动。
但是要注意的是
[plain] view plain copy
这两个VNC参数的IP要为公司内部网络10网段的IP,因为这个必须是从服务器系统外围能访问的IP。
配置文件参数详解可参见bk-compute-adminguide-essex.pdf
之后为Nova-volume服务创建独立的逻辑卷
[plain] view plain copy
这里将/dev/sda6为你之前格式化为LVM的分区
创建名为nova-volumes的卷组
[plain] view plain copy
修改配置文件权限
[plain] view plain copy
修改/etc/nova/api-paste.ini,填写nova服务在keystone注册的用户名密码
[plain] view plain copy
同步数据库
[plain] view plain copy
创建虚拟机所在的Fixed_ip的ip地址段
[plain] view plain copy
192.168.4.32/27表示IP段从32开始,并且子网掩码为前27位为1
写入环境变量
[plain] view plain copy
最后重启各服务
[plain] view plain copy
再增加计算节点只需要安装nova-compute
[plain] view plain copy
修改计算节点的配置文件
[plain] view plain copy
各计算节点间配置文件的不同点只有
[plain] view plain copy
其IP为计算节点的IP
最后,查看是否各服务安装成功,各计算节点是否正常
[plain] view plain copy
OpenStack多节点部署(六)——glance
本章将为大家介绍OpenStack的镜像管理系统glance,负责存储和管理OpenStack的镜像和虚拟机的快照等。本章将是OpenStack多节点部署系列的最后一章了,在此也感谢大家一直以来对我的支持。还是那句话,stacker们大家可以在留言区多交流,我看到会及时回复的。
glance的安装部署比较简单,前半部分花一些时间讲解glance部署步骤,后面的篇幅主要介绍各类操作系统镜像制作的方方面面。
首先安装glance的软件包
[plain] view plain copy
修改glance api的配置文件,主要是填写在keystone中设置的用户名密码等
[plain] view plain copy
修改glance api的配置文件,增加keystone的支持
[plain] view plain copy
修改glance组件注册文件,修改数据库地址及令牌
[plain] view plain copy
修改glance组件注册配置文件,增加对keystone的支持
[plain] view plain copy
重启glance
[plain] view plain copy
验证glance是否安装成功,成功会返回0
[plain] view plain copy
另外说一下glance的配置位置,如果大家的镜像和虚拟机快照不是非常多的话,建议就和nova的控制节点装在一起就行了,如果快照特别多,可以考虑glance单配一台服务器。
下面给大家分享镜像制作方面的一些经验。镜像制作一定要单开一台服务器或者在客户机client上制作,如果其放在控制节点或计算节点上,制作过程中由于会占用服务器大量资源导致其他服务拖慢卡顿。制作完成后拷贝镜像文件到glance image服务器,或在客户机上安装glance-client服务即可。
首先创建镜像盘,这个所有镜像的制作步骤都一样
[plain] view plain copy
镜像文件有多种格式,常见的是qcow2和raw,qcow2是增量式的,raw是非增量式的。
制作Ubuntu镜像
[plain] view plain copy
按照正常安装系统的步骤安装,可一路点默认设置下来,重启后安装ssh和cloud-init模块
网上的安装教程里面多半是这样的
[plain] view plain copy
这个是错误的,cloud-init不能按照默认配置安装,要修改器安装脚本,否则安装后cloud-init访问不到OpenStack的metadata元数据服务器
正确的安装方法为
[plain] view plain copy
其实ubuntu的官网上有做好的UEC镜像的下载,地址为http://cloud-images.ubuntu.com/releases/12.04.2/release-20130222/
可直接wget http://cloud-images.ubuntu.com/releases/12.04.2/release-20130222/ubuntu-12.04-server-cloudimg-amd64-disk1.img下载12.04 64位的镜像
制作CentOS或Fedora镜像
因为CentOS、Fedora没有cloud-init模块,所以要用curl从metadata元数据服务器获得主机名等信息
[plain] view plain copy
另外还要修改/etc/sysconfig/network-scripts/ifcfg-eth0,将网卡的硬件串号等信息删除,设为DHCP模式
[plain] view plain copy
删除网卡网口绑定规则,否则将导致重启后网络不可用
[plain] view plain copy
最后上传镜像
[plain] view plain copy
制作windows镜像
[plain] view plain copy
[plain] view plain copy
由于windows server 2008默认没有带virtio的驱动,所以在启动镜像安装的时候我们要带上这个驱动盘,下载地址为 http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin
进入系统后,要将virtio驱动的网卡和磁盘驱动都装好,切记别忘了安装网卡驱动,安装完成后会显示两个网卡,镜像在nova再次启动后就只会剩下virtio驱动的虚拟网卡
最后上传镜像
[plain] view plain copy
手机扫一扫
移动阅读更方便
你可能感兴趣的文章