部署CloudStack 4.18.0演示环境

CloudStack简介

CloudStack是一个开源的具有高可用性及扩展性的云计算平台,功能和OpenStack类似,因OpenStack需单独部署的组件很多,所以CloudStack较OpenStack来说部署相对容易。
目前Cloudstack支持管理大部分主流的hypervisors,如KVM,XenServer,VMware,Oracle VM,Xen等。同时CloudStack是一个开源云计算解决方案。可以加速高伸缩性的公共和私有云(IaaS)的部署、管理、配置。使用CloudStack作为基础,数据中心操作者可以快速方便的通过现存基础架构创建云服务。


cloudstack层级概念:

Regions:为了提高云的可靠性,可以选择将资源分为多个地理区域。区域是CloudStack部署中最大的可用组织单位。一个区域由几个可用性zones组成,其中每个zone大致相当于一个数据中心。每个Regions均由其在一个zone中运行的管理服务器集群控制。regions中的zones通常相隔非常近。Regions 是用于提供容错和灾难恢复的有用技术。

Zone:Zone 对应于现实中的一个数据中心。

Pod:Pod 对应着一个机架。同一个 pod 中的机器在同一个子网(网段)中。

Cluster:Cluster 是多个主机组成的一个集群。同一个 cluster 中的主机有相同的硬件,相同的 Hypervisor,和共用同样的存储。同一个 cluster 中的虚拟机,可以实现无中断服务地从一个主机迁移到另外一个上。

Host:Host 就是运行虚拟机(VM)的主机,也就是Hypervisor

从层级上来说,一个regions包含多个zone,一个 zone 包含多个 pod,一个 pod 包含多个 cluster,一个 cluster 包含多个 host。

CloudStack存储概念:

CloudStack存储按用途分为主存储(Primary Storage)和二级存储(Secondary Storage),主存储用来存储虚拟机的卷,二级存储用来存放虚拟机的模板,ISO镜像和快照。

Primary storage:一级存储与 cluster 关联,它为该 cluster 中的主机的全部虚拟机提供磁盘卷。一个 cluster 至少有一个一级存储,且在部署时位置要临近主机以提供高性能。CloudStack支持共享存储和分布式存储类型,如:NFS、glusterFS、Ceph等。

Secondary storage:二级存储与 zone 关联,它存储模板文件,ISO 镜像和磁盘卷快照,一个数据中心的模板文件可以给多个Pod使用,这是二级存储的设计意义。

CloudStack其他概念:

模板:可以启动虚拟机的操作系统镜像。
系统模板:CloudStack中的系统虚拟机,用于执行系统任务,如处理KVM、vmware、Xen、网络任务,系统模板需要导入到二级存储中,CloudStack会自动管理系统模板的启停。
ISO 镜像:包含操作系统数据或启动媒质的磁盘镜像。
磁盘卷快照:虚拟机数据的已储存副本,能用于数据恢复或者创建新模板。
网络设置:复杂的概念,一般选择使用基础网络,有需要的参考官方文档
http://docs.cloudstack.apache.org/projects/archived-cloudstack-administration/zh_CN/latest/networking_and_traffic.html


部署CloudStack

小规模的演示环境部署,为了更好的理解CloudStack,建议对下面的功能分别单独部署。

环境说明

演示全部使用Centos 7 2009 minimal进行安装,共4个服务器。

1. Managemant Server:CloudStack管理服务器,安装CloudStack管理程序,理解为Vmware用来管理Vsphere的VCSA。本次只部署单节点。CloudStack Managemant支持HA部署参考:http://docs.cloudstack.apache.org/en/4.18.0.0/conceptsandterminology/choosing_deployment_architecture.html#multi-node-management-server
2. NFS Server:用于提供一级存储和二级存储,使用NFS协议。
3. Image Server:用于CloudStack的IOS和模板文件的镜像下载。CloudStack使用HTTP的形式访问镜像服务器下载和注册ISO或者模板文件。
4. KVM Server:计算节点,使用KVM

前三个服务器可以使用虚拟机,为了保证性能的正常,建议KVM计算节点使用实体机,实在没有的话也可以用虚拟机。但是需要开启虚拟机内虚拟化。

查看是否支持虚拟化:
grep -E '(vmx|svm)' /proc/cpuinfo

显示 0 代表未开启

开启方式各个虚拟化平台的不一样,vmware Vsphere需 ssh 进入Console后

vi /etc/vmware/config
修改

vhv.enable = "TRUE"

重启Vsphere后开启 reboot

配置规划
hostname ip cpu/mem disk
cs-mgt01 10.101.7.21 4c/8g 100G
cs-nfs 10.101.7.23 2c/2g 200G
cs-is 10.101.7.30 2c/2g 100G
cs-kvm01 10.101.7.31 8c/16g 100G
准备工作

Centos清华镜像

https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso

使用yum 安装cloudstack,过程很慢,为了安装过程更加顺畅,减少等待时间,建议对cloudstack rpm包和系统模板先行下载

cloudstack rpm:
http://cloudstack.apt-get.eu/centos/7/4.18/

cloudstack systemvm:
http://cloudstack.apt-get.eu/systemvm/4.18/

需要的文件有management(mgt需要)、common(mgt、kvm都需要)、agent(kvm需要)、systemvmtemplate(mgt需要)

具体需要下载的链接如下:

http://cloudstack.apt-get.eu/centos/7/4.18/cloudstack-management-4.18.0.0-1.el7.x86_64.rpm

http://cloudstack.apt-get.eu/centos/7/4.18/cloudstack-common-4.18.0.0-1.el7.x86_64.rpm

http://cloudstack.apt-get.eu/centos/7/4.18/cloudstack-agent-4.18.0.0-1.el7.x86_64.rpm

http://cloudstack.apt-get.eu/systemvm/4.18/systemvmtemplate-4.18.0-kvm.qcow2.bz2
CloudStack 各服务器部署
  • Centos安装(全部)

    安装过程略

  • 初始化(全部):

    1. 更换国内源
    
    cp /etc/yum.repos.d/CentOS-Base.repo CentOS-Base.repo_bak
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo     # 阿里镜像源
    yum install epel-release.noarch  -y
    curl -o /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo    # 下载阿里epel镜像源
    yum clean all
    yum makecache
    yum update
    
    
    1. 关闭selinux和firewall
    
    sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
    setenforce 0
    
    systemctl stop firewalld.service
    systemctl disable firewalld.service 
    
    
    1. 添加各节点hosts
    vi /etc/hosts
    

    添加

    10.101.7.21 cs-mgt01
    10.101.7.23 cs-nfs
    10.101.7.30 cs-is
    10.101.7.31 cs-kvm01
    
    

    4.安装wget net-tools

    yum install -y wget net-tools
    
    
  • 配置nfs服务器(cs-nfs)

    为了减少来回切换服务器,先进行nfs服务器的nfs服务配置

    # 安装nfs服务
    
    yum install -y nfs-utils            
    
    # 创建两个共享文件夹
    
    mkdir -p /export/{primary,secondary}        
    
    # 共享配置
    
    cat >> /etc/exports << EOF
    
    /export/secondary *(rw,async,no_root_squash,no_subtree_check)
    
    /export/primary *(rw,async,no_root_squash,no_subtree_check)
    
    EOF
    
    # 启动nfs
    
    systemctl enable rpcbind nfs
    systemctl start rpcbind nfs
    
    exportfs -a 重新加载
    
    # 后面可以使用showmount命令在其他节点查看共享是否成功:
    
    showmount -e 10.101.7.23
    
    
  • 配置CloudStack Managemant服务器(cs-mgt01)

    1. 安装数据库
      可以使用mysql或者mariadb,这里直接用yum 安装mariadb
    yum install -y mariadb mariadb-server
    
    1. 修改my.cnf
    vi /etc/my.cnf 
    
    [mysqld]
    innodb_rollback_on_timeout=1
    innodb_lock_wait_timeout=600
    max_connections=350
    log-bin=mysql-bin
    binlog-format = 'ROW'
    

    max_connections 一台Managemant设置为350,2台HA设置为700,类推

    1. 设置自启动
    systemctl start mariadb 
    systemctl enable mariadb 
    
    1. 初始化设置密码
    mysql_secure_installation
    
    1. 导入CloudStack yum源
    cat > /etc/yum.repos.d/cloudstack.repo << 'EOF'
    [cloudstack]
    name=cloudstack
    baseurl=http://cloudstack.apt-get.eu/centos/7/4.18/
    enabled=1
    gpgcheck=0
    EOF
    
    yum makecache
    
    
    1. YUM 安装 CloudStack

    看一下CloudStack源中的版本

    yum list cloudstack-management --showduplicates

    为了不受版本因素影响到安装的成功率,指定安装4.18.0.0

    将前面下载好的systemvmtemplate 文件传入 /root/ 目录
    Managemant、common 两个rpm文件传入 /var/cache/yum/x86_64/7/cloudstack/packages/ 目录

    然后执行

    yum install -y cloudstack-management-4.18.0.0
    
    1. 导入CloudStack数据库(123456换成你设置的mysql密码)
    cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:123456
    

    输出一系列的OK表示成功

    1. 初始化cloudstack-management
    cloudstack-setup-management
    
    1. 启动cloudstack-management
    systemctl start cloudstack-management
    
    1. 访问Management dashboard(需等待服务启动完成,约1到2分钟)

    http://10.101.7.21:8080/

    默认用户名/密码:admin/password,登录框左下角可以选择语言

    management排障有关

    systemctl status cloudstack-management #查看状态

    netstat -tunlp|grep 8080 #查看8080端口进程

    /var/log/cloudstack/management/management-server.log #日志路径

    1. 上传系统模板

    首先需要挂载nfs共享路径

    # 建立一个挂载文件夹
    mkdir -p /mnt/secondary/
    
    mount -t nfs 10.101.7.23:/export/secondary /mnt/secondary
    
    #导 入kvm系统模板
    /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
    -m /mnt/secondary  -f /root/systemvmtemplate-4.18.0-kvm.qcow2.bz2  -h kvm -F
    
    
    1. 导入成功后即可取消挂载点,防止management重启后报错
    umount /mnt/secondary
    rmdir /mnt/secondary
    
  • 配置计算节点KVM服务器(cs-kvm01)

    计算节点需要先配置一个桥接网卡,用来使计算节点下的VM桥接到网络中,网卡名称需要为cloudbr0

    1. 配置桥接网卡
    # 新建桥接网卡
    
    cat > /etc/sysconfig/network-scripts/ifcfg-cloudbr0 << EOF
    DEVICE=cloudbr0
    TYPE=Bridge
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=10.101.7.31
    PREFIX=24
    GATEWAY=10.101.7.1
    DNS1=119.29.29.29
    EOF
    
    # 修改网卡配置文件,桥接到cloudbr0上,eno1是我的物理网卡名称,输入 ip a 查看自己的网卡名称,如ens160
    
    cat > /etc/sysconfig/network-scripts/ifcfg-eno1 << EOF
    TYPE=Ethernet
    DEVICE=eno1
    ONBOOT=yes
    BRIDGE=cloudbr0
    EOF
    
    #重启网络,可能需要重启2次
    
    systemctl restart network
    
    
    1. 计算节点也需要导入CloudStack yum源
    cat > /etc/yum.repos.d/cloudstack.repo << 'EOF'
    [cloudstack]
    name=cloudstack
    baseurl=http://cloudstack.apt-get.eu/centos/7/4.18/
    enabled=1
    gpgcheck=0
    EOF
    
    yum makecache
    
    
    1. YUM 安装 CloudStack Agent

    将前面下载好的Agent、common 两个rpm文件传入 /var/cache/yum/x86_64/7/cloudstack/packages/ 目录
    然后执行

    yum install -y cloudstack-agent-4.18.0.0
    
    1. 修改libvirt默认配置
    #修改vnc默认监听地址
    
    sed -i 's/^#vnc_listen =.*/vnc_listen = "0.0.0.0"/g' /etc/libvirt/qemu.conf
    
    # 指定cloudstack-management地址
    sed -i "s/host=.*/host=10.101.7.21/g" /etc/cloudstack/agent/agent.properties
    
        # 指定CPU模式
    sed -i "/host=.*/a \guest.cpu.mode=host-model" /etc/cloudstack/agent/agent.properties
    
    # 重启libvirt
    systemctl restart libvirtd
    
    # agent自启动
    systemctl start cloudstack-agent && systemctl enable cloudstack-agent
    

关于KVM中 VM CPU型号的说明

默认agent.properties配置的CPU模式是QEMU,由QEMU模拟CPU,实际使用中发现windows server2016是安装不了的,故需要修改agent.properties配置文件变更CPU模式

vi /etc/cloudstack/agent/agent.properties

修改为
guest.cpu.mode=host-model

实机可以修改为
guest.cpu.mode=host-passthrough
guest.cpu.features=vmx

CloudStack CPU模式有几种可以选择

custom:自定义,指定/usr/share/libvirt/cpu_map.xml 中的型号
host-model:主机模式,将识别为和主机最接近的CPU型号,在迁移时有很好的兼容性。
host-passthrough:主机直通,提供最佳性能,但只能迁移到cpu型号一样的主机上。

官方的一些示例:
自定义:
guest.cpu.mode=custom
guest.cpu.model=SandyBridge

主机模式:
guest.cpu.mode=host-model

主机直通
guest.cpu.mode=host-passthrough
guest.cpu.features=vmx

  • 配置Image Server服务器(cs-is)

    镜像文件HTTP服务器,可以由其他节点兼任

    1. 安装nginx
    yum -y install nginx
    
    1. 编辑 nginx 配置文件
    vi /etc/nginx/nginx.conf 
    

    在access_log /var/log/nginx/access.log main一行后加上

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

    清空 /usr/share/nginx/html 目录

    cd /usr/share/nginx/html
    rm -rf *
    
    
    1. 启动nginx
    systemctl enable nginx
    systemctl start nginx
    
    1. 浏览器访问
      传入linux或者windows的iso、qcow2镜像文件到/usr/share/nginx/html目录

    访问 http://10.101.7.30/ 查看

Management dashboard配置

访问http://10.101.7.21:8080/


image.png

使用默认admin登录后进入资源域配置,添加一个core域

image.png

类型选择 基本

image.png

Zone 信息
名称一般填写数据中心名称,如没有内部DNS可以和上面的DNS填写一样的,虚拟化系统选择KVM,网络方案默认带安全组

image.png

物理网络默认即可

image.png

Pod页
一般对应机架,预留系统IP地址是给系统模板VM使用的,5个就差不多了

image.png

来宾网络
来宾网络是实例虚拟机使用的地址区间,系统模板VM还是会占用几个,所以不要分的太小


image.png

集群名称

image.png

添加主机

image.png

添加一级存储
协议选择 nfs
服务器填写 IP,也可以是域名,如果你有轮询等高可用的话
路径是nfs服务器的共享路径,可以在mgt服务器使用 showmount -e 10.101.7.23 查看


image.png

添加二级存储
提供程序选择 nfs
服务器填写 IP,也可以是域名,如果你有轮询等高可用的话
路径是nfs服务器的共享路径


image.png

启动资源域,等待返回成功

image.png

等待主存储和二级存储资源数据出现

image.png

等待系统VM启动完成

image.png

全局设置

搜索 secstorage.allowed.internal.sites
定义允许哪些网络可以访问二级存储,不限制填写 0.0.0.0/0

image.png

最大来宾数
默认是50,真实环境很可能会满

image.png

修改完后重启cloudstack-management生效

systemctl restart cloudstack-management

注册ISO和模板

看一下HTTP镜像服务器
访问 http://10.101.7.30/ 查看镜像是否已经可以访问

image.png

注册iso

image.png

Managemant会下载此镜像到二级存储中,当显示Successfully Installed,即可以使用iso创建vm

image.png

依上再注册一个windows的iso

image.png
创建实例VM

添加实例,然后启动虚拟机

image.png

VM状态页

image.png

操作栏,查看控制台可以进入vm控制台

image.png

web控制台

image.png
Windows 虚拟机

Windows server 2016安装时需注意上面提到的cpu mode,修改后即可以使用iso镜像进行安装。
实际使用中,如果没有在安装时分配足够的磁盘,只有C盘,我们还需要挂载数据卷,如:D盘、E盘,这时需要创建新卷

image.png

创建后附加此卷到VM

image.png

然后你会发现怎么都找不到添加的磁盘,有KVM虚拟化经验的会知道,是因为没有scsi驱动,需要安装virtio-win的驱动
下载地址 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
把下载后的驱动挂载或者传入VM,安装,本次使用的是最新的 virtio-win-0.1.229
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.229-1/virtio-win-0.1.229.iso

image.png

安装后磁盘管理即可发现磁盘,操作连接 联机、初始化、分配卷标,即可正常使用

image.png

资源管理器

image.png

至此,CloudStack 4.18.0 演示环境部署完成

复盘

演示环境:

一个Managemant服务器负责Hypervisor、VM、存储的管理和调度
一个NFS共享服务器负责提供一级和二级存储
一个KVM服务器负责计算
一个HTTP服务器负责提供ISO和模板镜像用来下载注册,任一节点都可兼任

后续如果还想深入的话,方向也就容易理解了:

  1. 扩展管理节点,实现高可用HA,也就是最少两个Managemant热活
  2. 扩展计算节点,多个Hypervisor实现资源池,热迁移
  3. 扩展存储节点,使用分布式存储,如:glusterFS、Ceph

甚至于裸机性能足够时,使用超融合架构,管理、计算、存储一体。

排障

  1. 系统虚拟机和虚拟路由器无法启动.
    现象:cloudstack Command failed due to Internal Server Error/(s-1-VM) Command failed due to Internal Server Error

    解决办法:删除系统vm和虚拟路由器,系统会自动重建

  2. KVM下Windows系统性能拉跨,安装后C盘无法加载为SCSI驱动

    创建Windows系统实例时,按正常的方式,先上传ISO或者模板,在选择操作系统类型时,按常规的2008,2016选择时,安装系统时,CloudStack为了让安装过程顺利,系统磁盘的默认格式是IDE,性能很弱,就算后续进入桌面后,手动安装了virtio驱动,C盘也不会更换为SCSI驱动,需要变更ISO或模板的操作系统类型为 Windows PV,PV模式根磁盘才会加载SCSI驱动。
    所以系统盘使用SCSI驱动有两种方式,以windows 2016为例
    第一种方式:IOS镜像操作系统类型选择为windows 2016,正常安装系统,进入系统后打上virtio驱动,设备管理器中卸载IDE Controller控制器,正常关机,变更实例的操作系统类型为Windows PV,重启实例。如若不行,新尝试挂载一个卷

    第二种方式,注册一个virtio.ios,安装windows系统之前,直接选择ISO镜像或实例操作系统类型为Windows PV,安装过程中在磁盘界面,在管理界面取消附加的安装盘iso,然后附加virtio的iso,手动加载virtio.iso,选择scsi驱动安装,在重新附加安装盘iso,安装系统后根磁盘就是SCSI磁盘,当然还需要再安装一下virtio驱动包

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容