CloudStack搭建指南(一)

理论基础

云计算的出现

基本上,云计算只是一种把 IT 资源当作服务来提供的手段。几乎所有 IT 资源都可以作为云服务来提供:应用程序、计算能力、存储容量、联网、编程工具,以至于通信服务和协作工具。
云计算最早为 Google、Amazon 等其他扩建基础设施的大型互联网服务提供商所采用。于是产生一种架构:大规模扩展、水平分布的系统资源,抽象为虚拟 IT 服务,并作为持续配置、合用的资源进行管理。

就最终用户而言,云计算意味着没有硬件购置成本、没有需要管理的软件许可证或升级、不需要雇佣新的员工或咨询人员、不需要租赁设施、没有任何种类的基建投资,而且还没有隐性成本。只是一种用仪表测量出来的、根据使用情况支付的订购费或固定的订购费。只是用您所需的量,而且只按使用量付费。

云计算体系结构图如下:

把基础设施当做服务(IaaS)

把基础设施当作服务 (IaaS) 处于最低层级,而且是一种作为标准化服务在网上提供基本存储和计算能力的手段。服务器、存储系统、交换机、路由器和其他系统协作 (例如,通过虚拟化技术) 处理特定类型的工作负载 — 从批处理到峰值负载期间的服务器/存储扩大。
最著名的商业示例是 Amazon Web 服务 (AWS),其 EC2 和 S3 服务分别提供基本计算和存储服务。国内代表阿里云、腾讯云、百度云、金山云等。

IaaS平台的虚拟化技术的好处

利用率更高 — 在虚拟化之前,企业数据中心的服务器和存储利用率一般平均不到 50% (事实上,通常利用率为 10% 到 15%)。通过虚拟化,可以把工作负载封装一并转移到空闲或使用不足的系统,这就意味着可以整合现有系统,因而可以延迟或避免购买更多服务器容量。

资源整合 — 虚拟化使得整合多个 IT 资源成为可能。除服务器和存储整合之外,虚拟化提供一个整合系统架构、应用程序基础设施、数据和数据库、接口、网络、桌面系统甚至业务流程,因而可以节约成本和提高效率。

节省电能/成本 — 运行企业级数据中心所需的电能不再无限制地使用,而成本呈螺旋式上升趋势。在服务器硬件上每花一美元,就会在电费上增加一美元 (包括服务器运行和散热方面的成本)。利用虚拟化进行整合使得降低总能耗和节约大量资金成为可能。

节约空间 — 服务器膨胀仍然是多数企业数据中心面临的一个严重问题,可扩大数据中心并不总是一个良好的选择,因为每增大一平方米空间,就会平均增加很多成本。虚拟化通过把多个虚拟系统整合到较少物理系统上,可以缓解空间压力。

灾难恢复 (Disaster recovery) /业务连续 (Business Continuity) — 虚拟化可提高总体服务级利用率,并提供灾难恢复解决方案新选项。

Cloudstack 介绍

CloudStack是一个开源的具有高可用性及扩展性的云计算平台CloudStack 是一个开源的云操作系统,它可以帮助用户利用自己的硬件提供类似于Amazon EC2那样的公共云服务。CloudStack可以通过组织和协调用户的虚拟化资源,构建一个和谐的环境。
Cloudstack支持管理大部分主流的hypervisors,如KVM,XenServer,VMware,Oracle VM,Xen等。

Cloudstack 部署图如下:


Zone:Zone 对应于现实中的一个数据中心,它是 CloudStack 中最大的一个单元。
即从包含关系上来说,一个 zone 包含多个 pod,一个 pod 包含多个 cluster,一个 cluster 包含多个 host。

提供点(Pods):
一个提供点通常代表一个机架,机柜里面的主机在同一个子网,每个区域中必须包含一个或多个提供点,提供点中包含主机和主存储服务器, CloudStack 的内部管理通信配置一个预留 IP 地址范围。预留的 IP 范围对云中的每个区域来说必须唯一。

集群(Clusters):
Cluster 是多个主机组成的一个集群。
同一个cluster中的主机有相同的硬件,相同的 Hypervisor,和共用同样的存储。同一个 cluster 中的虚拟机,可以实现无中断服务地从一个主机迁移到另外一个上。
集群由一个或多个宿主机和一个或多个主要存储服务器构成。集群的大小取决于下层虚拟机软件。大多数情况下基本无建议。当使用VMware时,每个VMware集群都被vCenter 服务器管理。管理员必须在本产品中登记vCenter。每个zone下可以有多个vCenter服务器。每个vCenter服务器可能管理多个VMware集群

主机(Hosts):
Host 就是运行的虚拟机(VM)主机。
宿主机就是个独立的计算机。宿主机运行来宾虚拟机并提供其相应的计算资源。每个宿主机都装有虚拟机软件来运行来宾虚拟机。比如一个开启了kvm支持的服务器,一个思杰XenServer服务器,或者一个ESXi服务器都可以作为宿主机。
宿主机在CloudStack部署中属于最小的组织单元。宿主机包含于集群中,集群又属于提供点,而区域中包含提供点(就是在逻辑概念上zone>pod>cluster>host),新增的宿主机可以随时添加以提供更多资源给来宾虚拟机,CloudStack自动探测宿主机的cpu数量和内存资源。宿主机对终端用户不可见。终端用户不能决定他们的虚拟机被分配到哪台宿主机。

CloudStack 中存在两种存储:
Primary storage:一级存储与 cluster 关联,它为该 cluster 中的主机的全部虚拟机提供磁盘卷。一个 cluster 至少有一个一级存储,且在部署时位置要临近主机以提供高性能。
Secondary storage:二级存储与 zone 关联,它存储模板文件,ISO 镜像和磁盘卷快照。

部署安装

cloudstack 安装前的准备

VMWARE Workstation虚拟机为实验平台,我的个节点硬件资源分配情况

master1 : 2G内存+40G硬盘+双核6600k
agent1 :  6G内存+40G硬盘+双核6600k
agent2 : 6G内存+40G硬盘+双核6600k
agent3 : 6G内存+40G硬盘+双核6600k
NFS : 1G内存+40G硬盘+双核6600k+500G硬盘+500G硬盘
系统:CentOS-6-x86_64(6.8)
网络选择:桥接

配置nfs服务器

安装ntp服务

为了同步云平台中主机的时间,需要配置NTP,但NTP默认没有安装。因此需要先安装NTP,然后进行配置。通过以下命令进行安装:

# yum -y install ntp

实际上默认配置项即可满足的需求,仅需启用NTP并设置为开机启动,如下所示:

# chkconfig ntpd on
# service ntpd start

NFS服务安装

本文档将配置的环境使用NFS做为主存储和辅助存储,需配置两个NFS共享目录,在此之前需先安装nfs-utils:

# yum -y install nfs-utils

接下来需配置NFS提供两个不同的挂载点。通过编辑/etc/exports文件即可简单实现。确保这个文件中包含下面内容:

/export/secondary *(rw,async,no_root_squash,no_subtree_check)
/export/primary *(rw,async,no_root_squash,no_subtree_check)

注意配置文件中指定了系统中两个并不存在的目录,下面需要创建这些目录并设置合适的权限,对应的命令如下所示:

# mkdir -p /export/primary
# mkdir –p /export/secondary

格式化硬盘

查看磁盘:

# fdisk  -l

格式化磁盘:

# mkfs.ext4  /dev/sdb 
# mkfs.ext4  /dev/sdc

为格式化好的磁盘添加开机自动挂载:

# echo "/dev/sdb  /export/secondary  ext4 defaults 0 0"  >> /etc/fstab
# echo "/dev/sdc  /export/primary  ext4 defaults 0 0"  >> /etc/fstab

配置防火墙

CentOS 6.x 版本默认使用NFSv4设置为以下内容:
在/etc/sysconfig/nfs文件中取消如下选项的注释:

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020

接下来还需配置防火墙策略,允许NFS客户端访问。编辑文件/etc/sysconfig/iptables

-A INPUT -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 662 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

通过以下命令重新启动iptables服务:

# service iptables restart

您也可以直接关闭防火墙:

# service iptables stop (关闭防火墙)
# chkconfig iptables off(禁止防火墙开机自起)
# service iptables status(查看防火墙状态)

然后需要配置NFS服务为开机自启动,执行如下命令:

# service rpcbind start
# service nfs start
# chkconfig rpcbind on
# chkconfig nfs on

最后可以在agent1上安装nfs-utils软件,测试您的nfs服务是否搭建成功showmount -e 192.168.0.20测试master1的nfs服务是否配置成功!

管理服务器安装

网络配置

安装好自己的虚拟机为自己的虚拟机设置网络,以下是我的所有虚拟机ip设置如下:

master1: 192.168.0.20
agent1:192.168.0.21
agent2:192.168.0.22
agent3:192.168.0.23
NFS: 192.168.0.24

默认情况下新安装的机器并未启用网络,在root权限下使用命令ifup eth0激活你的网卡,并用命令setup开启图形化界面固定你的ip,或这用vim /etc/sysconfig/network-scripts/ifcfg-eth0修改网卡配置文件,

根据您需求修改配置文件,指定IP地址,网络掩码等信息,例:

DEVICE=eth0
HWADDR=52:54:00:B9:A6:C0
NM_CONTROLLED=no
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.0.20
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1

修改主机名

需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会导致系统启动异常。
(1)修改:/etc/sysconfig/network

用vimi编辑器,里面有一行 HOSTNAME=localhost.localdomain (如果是默认的话),修改 localhost.localdomain 为你的主机名。例:

(2)修改:/etc/hosts

打开该文件,会有一行 127.0.0.1 localhost.localdomain localhost 。其中 127.0.0.1 是本地环路地址, localhost.localdomain 是主机名(hostname),也就是你待修改的。localhost 是主机名的别名(alias)。将第二项修改为你的主机名,第三项可选。例:

将上面两个文件修改完后,并不能立刻生效。如果要立刻生效的话,可以用 hostname your-hostname 作临时修改,它只是临时地修改主机名,系统重启后会恢复原样的。但修改上面两个文件是永久的,重启系统会得到新的主机名。

最后,重启后查看主机名 hostname --fqdn

通过hostname –fqdn命令重新检查主机名 。

关闭selinux

关闭selinux

# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

也可以用vi 直接编辑修改

安装epel 源

cloudstack yum源有部分包依赖 epel 源

# yum -y install epel-release 

安装 cloudstack 源

添加CloudStack软件仓库,创建/etc/yum.repos.d/cloudstack.repo文件,并添加如下信息。

[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/centos/6/4.8/
enabled=1
gpgcheck=0

或者把安装包下载到本地,然后上传到合适的文件夹,我上传到了opt/目录下,这样编译安装会快很多。

安装NTP

为了同步云平台中主机的时间,需要配置NTP,但NTP默认没有安装。因此需要先安装NTP,然后进行配置。通过以下命令进行安装:

# yum -y install ntp

实际上默认配置项即可满足的需求,仅需启用NTP并设置为开机启动,如下所示:

# chkconfig ntpd on
# service ntpd start

接下来进行CloudStack管理节点和相关工具的安装。

安装管理端

现在进入您放cloudstack软件包的文件件,使用如下命令安装管理服务器。

# yum -y install cloudstack-management-4.8.0-1.el6.x86_64.rpm cloudstack-common-4.8.0-1.el6.x86_64.rpm

数据库安装和配置

首先安装MySQL,并对它进行配置,以确保CloudStack运行正常。
运行如下命令安装:

# yum -y install mysql-server

MySQL安装完成后,需更改其配置文件/etc/my.cnf。在[mysqld]下添加下列参数:

innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'

正确配置MySQL后,启动它并配置为开机自启动:

# service mysqld start
# chkconfig mysqld on

设置mysql 密码及范围权限

# mysqladmin -uroot password 123456
# mysql -uroot  -p123456 -e "GRANT ALL PRIVILEGES ON *.* TO root@'%'    IDENTIFIED BY '123456'";

系统初始化

在程序执行完毕后,需初始化数据库,通过如下命令和选项完成:

# cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:123456

当该过程结束后,您应该可以看到类似信息:”CloudStack has successfully initialized the database.”。
数据库创建后,最后一步是配置管理服务器,执行如下命令:

# cloudstack-setup-management

上传系统模板

CloudStack通过一系列系统虚拟机提供功能,如访问虚拟机控制台,如提供各类网络服务,以及管理辅助存储的中的各类资源。该步骤会获取系统虚拟机模板,用于云平台引导后系统虚拟机的部署。
然后需要下载系统虚拟机模板,并把这些模板部署于刚才创建的辅助存储中;管理服务器包含一个脚本可以正确的操作这些系统虚拟机模板:

# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary/ -f /opt/systemvm64template-4.6.0-kvm.qcow2.bz2 -h kvm -F

访问用户界面

要访问CloudStack的WEB界面,仅需在浏览器访问 http://XXX.XXX.XXX:8080/client ,使用默认用户’admin’和密码’password’来登录。第一次登录可以看到欢迎界面。

安装agent节点及配置

先决条件

本文档描述的环境使用管理服务器同时作为计算节点,这意味着很多先决步骤已经在搭建管理服务器时完成;但为了清晰起见,仍然列出相关步骤:

(1)网络配置

(2)主机名

(3)SELinux

(4)NTP

(5)配置ClouStack软件库

你不需要在管理节点上执行这些操作,当然,如果您需要添加额外的主机以上步骤仍然需要执行。

Agent 安装

安装KVM代理仅仅需要一条简单的命令,但之后我们需要进行一些配置。

# yum -y install cloudstack-common-4.8.0-1.el6.x86_64.rpm cloudstack-agent-4.8.0-1.el6.x86_64.rpm

虚拟化配置

配置KVM

KVM中我们有两部分需要进行配置, libvirt和QEMU.

配置QEMU

KVM的配置项相对简单,仅需配置一项。编辑QEMU VNC配置文件/etc/libvirt/qemu.conf并取消如下行的注释。同时注释 security_driver="none"

vnc_listen=0.0.0.0
# security_driver="none"

配置Libvirt
CloudStack使用libvirt管理虚拟机。因此正确的配置libvirt至关重要。Libvirt属于cloudstack-agent的依赖组件,应提前安装好。

为了实现动态迁移,libvirt需要监听使用非加密的TCP连接。还需要关闭libvirts尝试使用组播DNS进行广播。这些都是在 /etc/libvirt/libvirtd.conf文件中进行配置。

设置下列参数:

listen_tls = 0
listen_tcp = 1
tcp_port = "16059"
auth_tcp = "none"
mdns_adv = 0

仅仅在libvirtd.conf中启用”listen_tcp”还不够,我们还必须修改/etc/sysconfig/libvirtd中的参数:

更改

LIBVIRTD_ARGS="-1"

重启libvirt服务

# service libvirtd restart

KVM配置完成

For the sake of completeness you should check if KVM is running OK on your machine:

# lsmod | grep kvm

输入lsmod | grep kvm命令后输出的信息

kvm_intel              55496  0
kvm                   337772  1 kvm_intel

系统配置

登陆到用户界面

CloudStack提供一个基于web的UI,管理员和终端用户能够使用这个界面。

http://:8080/client(后台管理网站)

如果管理服务器是全新的安装,。那么会出现一个安装向导。在稍后的访问中,你将看到一个登录界面,你需要通过用户名和密码登入来查看你的仪表盘.

用户名 -> 你账号的用户ID。默认用户名是admin。
密码 -> 用户ID对应的密码。默认用户名的密码是password。
域 -> 如果你是root用户,此处留空即可。

根管理员界面的概述

在管理服务器软件安装并且运行后, 你就可以运行CloudStack的用户界面.了。在这里通过UI,可以供给、查看并管理你的云基础架构。

打开你自己喜欢的浏览器并访问这个URL。请把IP地址替换成你自己的管理服务器的IP。

http://:8080/client

初次登录管理服务器时,会出现一个向导启动画面。后续访问时,您会直接进入控制面板。
如果你看到第一次的向导屏幕, 可以选择下面步骤之一进行。
继续执行基本安装。如果你仅仅是想体验CloudStack,请选择这个,并且这样你可以马上开始跟着向导进行简单的配置。我们将帮助你建立一个有以下功能的云:一个运行CloudStack软件的机器和使用NFS协议的存储;一个运行VMs的XenServer或KVM hypervisor的服务器;一个共享的公有网络。安装向导的提示会给你需要的所有信息。但如果你需要更多的详细信息,你可以按照试用安装向导进行.

我之前用过CloudStack。 如果您已经完成设计阶段,计划部署一个复杂CloudStack云,或是准备对用基础安装向导搭建的试验云进行扩展,请选择此项。在管理员UI中,您可以使用CloudStack中更强大的功能,例如高级VLAN网络、高可用、负载均衡器和防火墙等额外网络设备,以及支持Citrix XenServer、KVM、VMware vSphere等多种虚拟化平台。

根管理员的仪表盘显示出来:
在云的安装及后续管理过程中,您需要用根管理员登录UI。根管理员账号管理着CloudStack的部署以及物理设施。根管理员可以修改系统配置,改变基本功能,创建和删除用户账号,以及其他仅限于已授权人员执行的操作。在初始安CloudStack时,请务必修改默认密码为新的较独特的密码。
打开你自己喜欢的浏览器并访问这个URL。请把IP地址替换成你自己的管理服务器的IP。

http://:8080/client
使用当前root用户的ID和口令登录UI。缺省为admin,pawword。
点击帐户。
点击管理员帐号名。
点击查看用户。
点击管理员用户名。
点击更改密码按钮。 
输入新密码,然后点击确认。

初始化配置

选择“基础架构 --> 添加区域”按照截图进行配置.

名称:zone dns1:172.16.2.1 dns2:192.168.0.1(这些内容包括下面的填写仅为参考值。可根据实际情况进行修改)

物理网卡名称可以保持默认,改一下名也可以我改名为eth0

提供名称:pod 预留网关:192.168.0.1 预留掩码:255.255.255.0
起始IP:192.168.0.31 结束IP:192.168.0.50

来宾网关:192.168.0.1 掩码:255.255.255.0 起始IP:192.168.0.51 结束IP:192.168.0.80

集群名称我取名为cluster

主机名称:192.168.0.21 用户名:root 密码:***(这里用户名和密码,填写被添加主机的root用户和密码)

名称:primary 协议:选择nfs 服务器:192.168.0.24 路径:/export/primary

NFS服务器:192.168.0.24 路径:/export/secondary

单击“是”启动区域!

查看系统VM。大约5-10分钟启动成功,如果启动失败,查看日志文件进行改进!

如果配置错误在可以在这里启动区域或禁用区域

这里我的资源域已经启动了。

如果以上步骤均没有问题,则会显示如上图所示的界面,除了虚拟路由器数目仍旧为0,系统VM数目为2之外,其他所有组件的数目均为1。

系统VM是否启动成功可以查看其状态是否为Running:

系统VM是不同于主机上创建的普通虚拟机的,他们是CloudStack云平台自带的用于完成自身的一些任务的虚拟机。

Secondary Storage VM:简称为SSVM,用于管理二级存储的相关操作,如模板跟镜像文件的上传与下载,快照,volumes的存放,第一次创建虚拟机时从二级存储拷贝模板到一级存储并且自动创建快照,每一个资源域可以有多个SSVM,当SSVM被删除或停止,它会自动被重建并启动。

Console Proxy VM:用于在web 界面上展示控制台。

虚拟路由器将会在第一个实例启动后自动创建。

启动虚拟机实例

搭建一个http 服务器

搭建http 服务主要用来管理ISO系统和镜像模板

在master 节点安装 nginx

# yum  -y install nginx

防火墙中加入允许80 端口访问

也可以直接关闭防火墙!在master管理节点不建议关闭防火墙!

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

编辑 /etc/nginx/nginx.conf 配置文件,能够使访问目录

autoindex on;# 显示目录
autoindex_exact_size on;# 显示文件大小
autoindex_localtime on;# 显示文件时间

到 /usr/share/nginx/html 目录 删除所有文件 ,启动nginx

# /etc/init.d/nginx restart

上传ISO 到 /usr/share/nginx/html

看到如下界面

修改全局设置 secstorage.allowed 设置 ,二级存储ISO镜像和模板可以下载,IP网段改为0.0.0.0/0

制作模板

Cloudstack模版支持两种模式:

一种是通过KVM 制作的qcow2或raw文件 
另外就是直接上传ISO文件作为模版文件

先在Cloudstack的模板注册中,添加ISO镜像文件,然后启动实例,选择从ISO启动,然后安装系统。

URL 输入下载ISO的地址

完成后,已就绪状态是 “YES”

用ISO 安装虚拟机实例

选择ISO

选择磁盘方案

完成后选择 启动实例

安装centos 后 ,发现没有IP, 网卡处选择自动启动

对于CentOS,必须要修改网络接口的配置文件,在这里我们编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,更改下面的内容。

DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=dhcp
ONBOOT=yes

移除udev持久设备规则

# rm -f /etc/udev/rules.d/70*
# rm -f /var/lib/dhclient/*

移除SSH Keys

这步是为了确认所有要作为模板的VMs的SSH Keys都不相同,否则这样会降低虚拟机的安全性。

# rm -f /etc/ssh/*key*

清除日志文件

从主模板移除旧的日志文件是一个好习惯。

# cat /dev/null > /var/log/audit/audit.log 2>/dev/null
# cat /dev/null > /var/log/wtmp 2>/dev/null
# logrotate -f /etc/logrotate.conf 2>/dev/null
# rm -f /var/log/*-* /var/log/*.gz 2>/dev/null

清除用户历史

下一步来清除你曾经运行过的bash命令。

# history -c
# unset HISTFILE

关闭VM

现在你可以关闭你的主模板并且创建模板了!

# halt -p

创建模板!

成功后从模板列表中,可以看出

接下来就可以用模板创建VM了!

|| 版权声明
作者:废权
链接:https://blog.yjscloud.com/archives/29
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
THE END
分享
二维码
CloudStack搭建指南(一)
理论基础 云计算的出现 基本上,云计算只是一种把 IT 资源当作服务来提供的手段。几乎所有 IT 资源都可以作为云服务来提供:应用程序、计算能力、存储容量、联……
<<上一篇
下一篇>>
文章目录
关闭
目 录