CloudStack 的安装和使用
1. CloudStack简介:
Apache CloudStack是一种开源软件,旨在部署和管理大型虚拟机网络,作为高度可用,高度可扩展的基础架构即服务(IaaS)云计算平台。CloudStack被许多服务提供商用于提供公共云服务,并由许多公司提供内部(私有)云产品,或作为混合云解决方案的一部分。
CloudStack是一个开箱即用的解决方案,包括大多数组织希望使用IaaS云的整个“堆栈”功能:计算编排,网络即服务,用户和帐户管理,完整和开放的本机API,资源记帐和一流的用户界面(UI)。
CloudStack目前支持最流行的虚拟机管理程序:VMware,KVM,Citrix XenServer,Xen Cloud Platform(XCP),Oracle VM服务器和Microsoft Hyper-V。
用户可以使用易于使用的Web界面,命令行工具和/或功能齐全的RESTful API来管理他们的云。此外,CloudStack还为希望部署混合云的组织提供与AWS EC2和S3兼容的API
2. Cloudstack 私有云平台规划
| 机器名 | 操作系统 | 软件版本 | IP地址 |
|---|---|---|---|
| cloudstack-node5 | CentOS 7.4 | cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 | 10.83.32.83 |
| cloudstack-node6 | CentOS 7.4 | cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 | 10.83.32.46 |
| cloudstack-node7 | CentOS 7.4 | cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 | 10.83.32.47 |
| cloudstack-node8 | CentOS 7.4 | cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 | 10.83.32.48 |
| cloudstack-node4 | CentOS 7.4 | cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 | 10.83.32.50 |
| cloudstack-node3 | CentOS 7.4 | cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 | 10.83.32.49 |
| cloudstack-node2 | CentOS 7.4 | cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 | 10.83.32.84 |
| cloudstack-node1 | CentOS 7.4 | cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 | 10.83.32.82 |
| cloudstack-management | CentOS 7.4 | cloudstack-management-4.11.1.0-1.el7.centos.x86_64 mariadb-server-5.5.56-2.el7.x86_64 | 10.83.32.45 |
| cloudstack-nfs | CentOS 7.4 | cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 | 10.83.32.81 |
3. CloudStack 安装要求
所有机器的内存不能低于2G,否则无法搭建成功。
Hypervisor 所在的主机,要求CPU 和主板支持硬件虚拟化(需要在主板的 BIOS 中设置 Intel-VT 为 enable)
操作系统为64位,Hypervisor 的主机不能有任何正在运行的虚拟机,否则在后续的 add host 操作中会遇到失败。最佳的建议是 hypervisor 主机上的操作系统为全新安装,且没有部署任何其余虚拟机
无论是管理服务器还是 hypervisor所在主机,都需要以 root 登录进行 CloudStack 组件安装。
Management Server 和 Hypervisor 主机必须是有独立静态 IP的主机,并且该网络段内不要有DHCP服务存在。
4. CloudStack 的安装步骤描述
CloudStack+KVM组合其实就是CloudStack-Management服务与CloudStack-Agent的合作,Agent端还有libvirt(虚拟化)这个重要组件。
管理端安装步骤:
安装操作系统
配置YUM源,安装cloudstack-management ,mysql-server 组件
初始化cloudstack的mysql数据库文件
挂载二级存储,导入系统VM模板
通过cloudstack-setup-management命令完成cloustack管理服务启动以及防火墙策略配置
agent端安装步骤:
安装操作系统
配置YUM源,安装cloudstack-agent组件,安装libvirt虚拟化组件
配置libvirt相关配置文件,/etc/libvirt/libvirtd.conf以及/etc/sysconfig/libvirtd
web管理控制台初始化CloudStack集群:
配置完成之后,通过cloudstack管理节点的web界面登录:http://cloudstack-management's ip:8080/client
默认用户名为admin,默认密码为password 登录之后进行区域【Zone】的创建即可。
5. Cloudstack 安装初始化配置:
1. 主机名和hosts文件配置
hostnamectl set-hostname cloudstack-node7 [root@cloudstack-node7 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.83.32.83 cloudstack-node5 10.83.32.82 cloudstack-node1 10.83.32.84 cloudstack-node2 10.83.32.49 cloudstack-node3 10.83.32.50 cloudstack-node4 10.83.32.45 cloudstack-management 10.83.32.46 cloudstack-node6 10.83.32.47 cloudstack-node7 10.83.32.48 cloudstack-node8 10.83.32.81 cloudstack-nfs
2. Selinux和Iptables配置
[root@cloudstack-node7 ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # disabled - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of disabled. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted #关闭selinux systemctl disable firewalld systemctl stop firewalld systemctl stop iptables systemctl disable iptables #关闭iptables
3. NTP时间服务器配置:
[root@cloudstack-node7 ~]# crontab -l 0 1 * * * /usr/sbin/ntpdate 10.10.0.11 > /dev/null 2>&1
因为公司有内网的NTP服务器,所以直接使用内网的NTP服务器,每一分钟同步一次时间。CentOS 7操作系统时间服务器的软件是Chrony.具体的配置可以参考网址https://www.centos.bz/2018/03/centos-7-chrony-%E8%AE%BE%E7%BD%AE%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%9B%86%E7%BE%A4%E7%B3%BB%E7%BB%9F%E6%97%B6%E9%97%B4%E5%90%8C%E6%AD%A5/
4. yum源配置
[root@cloudstack-node7 ~]# cat /etc/yum.repos.d/cloudstack.repo [cloudstack] name=cloudstack baseurl=http://cloudstack.apt-get.eu/centos/7/4.11/ enabled=1 gpgcheck=0 [root@c1 ~]# vi /etc/yum.repos.d/mysql.repo [mysql-connectors-community] name=MySQL Community connectors baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/x86_64/ enabled=1 gpgcheck=1 [root@cloudstack-node5 ~]# cat /etc/yum.repos.d/epel.repo [epel] name=Extra Packages for Enterprise Linux 7 - $basearch baseurl=http://mirrors.aliyun.com/epel/7/$basearch http://mirrors.aliyuncs.com/epel/7/$basearch #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 [epel-debuginfo] name=Extra Packages for Enterprise Linux 7 - $basearch - Debug baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug http://mirrors.aliyuncs.com/epel/7/$basearch/debug #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=0 [epel-source] name=Extra Packages for Enterprise Linux 7 - $basearch - Source baseurl=http://mirrors.aliyun.com/epel/7/SRPMS http://mirrors.aliyuncs.com/epel/7/SRPMS #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=0
一个是cloudstack的yum源,一个是EPEL yum源,一个是mysql-connector-python源,安装cloudstack-management,它依赖于mysql-connector-python,cloudstack-common,tomcat等其它组件。
5. 网卡绑定设置
centos7 设置br0桥接网卡 [root@cloudstack-node5 yum.repos.d]# cat /etc/sysconfig/network-scripts/ifcfg-br0 TYPE=Bridge BOOTPROTO=static NAME=br0 DEVICE=br0 ONBOOT=yes HOTPLUG=no DELAY=0 STP=no IPADDR=10.83.32.45 NETWORK=255.255.255.0 GATEWAY=10.83.32.1 DNS1=10.10.0.5 [root@cloudstack-node5 yum.repos.d]# [root@cloudstack-node5 yum.repos.d]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BRIDGE=br0 BOOTPROTO=none NAME=eth0 DEVICE=eth0 ONBOOT=yes HOTPLUG=no [root@cloudstack-node5 yum.repos.d]# 设置默认路由,必须的 [root@cloudstack-node5 yum.repos.d]# cat /etc/sysconfig/network-scripts/route-br0 0.0.0.0/0 via 10.83.32.1 dev br0 [root@cloudstack-node5 yum.repos.d]#
CloudStack 4.11版本开始每台机器都需要设置绑定网卡br0
6. CloudStack-Management 安装配置:
因为是最小化安装,所以需要安装一些依赖组件,同时cloudstack-management管理服务器需要安装mysql数据库服务器
yum groupinstall -y "Desktop Platform Development" "Server Platform Development" "Development Tools" "SNMP Support" yum install gcc gcc-c++ cmake make autoconf libtool-ltdl-devel gd-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel bison patch unzip libmcrypt-devel libmhash-devel libevent-devel ncurses-devel mlocate flex sysstat libaio-devel ntp openldap-devel openssl-devel libcurl-devel unzip perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker iotop bzip2* ntpdate wget unzip zip htop vim iftop nc nmap dstat iostat lrzsz screen lftp wget curl sysstat strace lsof telnet tree tcpdump yum -y install mariadb-server
配置mysql服务:
[root@cloudstack-node5 ~]# cat /etc/my.cnf|egrep -v "^$|#" [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock innodb_rollback_on_timeout=1 innodb_lock_wait_timeout=600 max_connections=350 log-bin=mysql-bin binlog-format = 'ROW' symbolic-links=0 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid !includedir /etc/my.cnf.d [root@cloudstack-node5 ~]# systemctl start mariadb systemctl enable mariadb #启动mysql服务
安装Cloudstack-Management:
#从MySQL导入GPG公钥: rpm --import http://repo.mysql.com/RPM-GPG-KEY-mysql #安装mysql-connector yum -y install mysql-connector-python 现在要安装管理服务器,因为前期配置了cloudstack的yum源仓库 yum -y install cloudstack-management 安装了应用程序本身后,我们现在可以设置数据库,我们将使用以下命令和选项执行此操作: cloudstack-setup-databases cloud:123456@localhost --deploy-as=root 完成此过程后,您应该会看到“CloudStack已成功初始化数据库”之类的消息。 既然已经创建了数据库,我们可以通过发出以下命令来设置管理服务器的最后一步: cloudstack-setup-management --tomcat7
配置二级存储NFS Server:
yum -y install rpcbind nfs-utils vim /etc/exports mkdir -p /home/export/secrond /home/export/secrond 10.83.32.0/24(rw,fsid=1,async,no_root_squash,no_subtree_check)
系统模板设置:
CloudStack使用许多系统VM来提供访问虚拟机控制台,包括Console Proxy VM和Secondary Storage VM。这两个虚拟机主要提供各种网络服务以及管理存储的各个方面的功能。当我们引导您的云时,此步骤将获取准备部署的系统映像。
现在我们需要下载系统VM模板并将其部署到我们刚刚挂载的共享。管理服务器包括用于正确操作系统VMs映像的脚本。
cd /software wget http://download.cloudstack.org/systemvm/4.11/systemvmtemplate-4.11.1-kvm.qcow2.bz2 #下载虚拟机模板映像文件 mkdir -p /export/secondary/ mount -t nfs -o nolock 10.83.32.81:/home/export/secrond /export/secondary/ vim /etc/rc.d/rc.local mount -t nfs -o nolock 10.83.32.81:/home/export/secrond /export/secondary/ #挂载NFS存储 /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary/ -f /software/systemvmtemp late-4.11.1-kvm.qcow2.bz2 -h kvm -F #导入系统虚拟机模板
启动Cloudstack management服务:
systemctl start cloudstack-management
打开浏览器访问:用户名/密码为:admin/password
http://10.83.32.45:8080/client/

7. CloudStack-Agent 安装配置:
一定要保证/mnt目录没有被使用,且目录为空,否则CloudStack无法对其挂载Primary Storage,新建实例,可能会失败,除非你有多个agent,/mnt已有的数据,请提前保存好
安装cloudstack-agent,需要cloudstack-common软件,还有其它附属软件包.
cd /software wget https://download.cloudstack.org/centos7/4.11/cloudstack-agent-4.11.1.0-1.el7.centos.x86_64.rpm wget https://download.cloudstack.org/centos7/4.11/cloudstack-common-4.11.1.0-1.el7.centos.x86_64.rpm yum groupinstall "Development Tools" -y yum remove java-1.8.0-openjdk-devel.x86_64 genisoimage ws-commons-util MySQL-python createrepo yum install -y java-1.8.0-openjdk-devel.x86_64 genisoimage ws-commons-util MySQL-python createrepo yum remove qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils yum install -y qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils yum localinstall -y cloudstack-agent-4.11.1.0-1.el7.centos.x86_64.rpm cloudstack-common-4.11.1.0-1.el7.centos.x86_64.rpm
我们需要编辑QEMU VNC配置。编辑/etc/libvirt/qemu.conf并确保以下行存在并取消注释来完成。
vim /etc/libvirt/qemu.conf vnc_listen=0.0.0.0 或者也可以使用sed命令完成 sed -i "s#\#vnc_listen = \"0.0.0.0\"#vnc_listen = \"0.0.0.0\"#g" /etc/libvirt/qemu.conf
为了实时迁移工作,libvirt必须监听不安全的TCP连接。我们还需要关闭libvirts尝试使用多播DNS广告。这两个设置都在/etc/libvirt/libvirtd.conf中
cat <<EOF >> /etc/libvirt/libvirtd.conf listen_tls = 0 listen_tcp = 1 tcp_port = "16059" auth_tcp = "none" mdns_adv = 0 EOF
在libvirtd.conf中打开“listen_tcp”是不够的,我们还要更改参数,我们还需要修改/etc/sysconfig/libvirtd:
取消注释以下行:
#LIBVIRTD_ARGS="--listen" 修改为 LIBVIRTD_ARGS="--listen" systemctl enable libvirtd && systemctl restart libvirtd
libvirtd程序是libvirt的虚拟化管理系统的服务器端守护组件。此守护程序在主机服务器上运行,并为虚拟客户机执行所需的管理任务。这包括诸如在主机服务器之间启动,停止和迁移guest虚拟机,配置和操作网络以及管理存储以供guest虚拟机使用等活动。
libvirt客户端库和实用程序连接到此守护程序以发出任务并收集有关主机系统和guest虚拟机的配置和资源的信息。
KVM配置完成为了完整起见,您应该检查KVM是否在您的计算机上运行正常:
[root@cloudstack-node6 ~]# lsmod | grep kvm kvm_intel 170086 9 kvm 566340 1 kvm_intel irqbypass 13503 9 kvm
推荐关注我的个人微信公众号 “云时代IT运维”,周期性更新最新的应用运维类技术文档。关注虚拟化和容器技术、CI/CD、自动化运维等最新前沿运维技术和趋势;





