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 <> /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
关于《CloudStack 私有云平台的搭建和维护》未完待续,请持续关注