本文共 10996 字,大约阅读时间需要 36 分钟。
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 安装要求
4. CloudStack 的安装步骤描述
CloudStack+KVM组合其实就是CloudStack-Management服务与CloudStack-Agent的合作,Agent端还有libvirt(虚拟化)这个重要组件。
管理端安装步骤:
agent端安装步骤:
web管理控制台初始化CloudStack集群:
配置完成之后,通过cloudstack管理节点的web界面登录: ip:8080/client
默认用户名为admin,默认密码为password 登录之后进行区域【Zone】的创建即可。5. Cloudstack 安装初始化配置:
1. 主机名和hosts文件配置
hostnamectl set-hostname cloudstack-node7[root@cloudstack-node7 ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4#::1 localhost localhost.localdomain localhost6 localhost6.localdomain610.83.32.83 cloudstack-node510.83.32.82 cloudstack-node110.83.32.84 cloudstack-node210.83.32.49 cloudstack-node310.83.32.50 cloudstack-node410.83.32.45 cloudstack-management10.83.32.46 cloudstack-node610.83.32.47 cloudstack-node710.83.32.48 cloudstack-node810.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#关闭selinuxsystemctl disable firewalldsystemctl stop firewalldsystemctl stop iptablessystemctl disable iptables#关闭iptables
3. NTP时间服务器配置:
[root@cloudstack-node7 ~]# crontab -l0 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=cloudstackbaseurl=http://cloudstack.apt-get.eu/centos/7/4.11/enabled=1gpgcheck=0[root@c1 ~]# vi /etc/yum.repos.d/mysql.repo[mysql-connectors-community]name=MySQL Community connectorsbaseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/x86_64/enabled=1gpgcheck=1[root@cloudstack-node5 ~]# cat /etc/yum.repos.d/epel.repo[epel]name=Extra Packages for Enterprise Linux 7 - $basearchbaseurl=http://mirrors.aliyun.com/epel/7/$basearch http://mirrors.aliyuncs.com/epel/7/$basearch#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearchfailovermethod=priorityenabled=1gpgcheck=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7[epel-debuginfo]name=Extra Packages for Enterprise Linux 7 - $basearch - Debugbaseurl=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=$basearchfailovermethod=priorityenabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7gpgcheck=0[epel-source]name=Extra Packages for Enterprise Linux 7 - $basearch - Sourcebaseurl=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=$basearchfailovermethod=priorityenabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7gpgcheck=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-br0TYPE=BridgeBOOTPROTO=staticNAME=br0DEVICE=br0ONBOOT=yesHOTPLUG=noDELAY=0STP=noIPADDR=10.83.32.45NETWORK=255.255.255.0GATEWAY=10.83.32.1DNS1=10.10.0.5[root@cloudstack-node5 yum.repos.d]#[root@cloudstack-node5 yum.repos.d]# cat /etc/sysconfig/network-scripts/ifcfg-eth0TYPE=EthernetBRIDGE=br0BOOTPROTO=noneNAME=eth0DEVICE=eth0ONBOOT=yesHOTPLUG=no[root@cloudstack-node5 yum.repos.d]#设置默认路由,必须的[root@cloudstack-node5 yum.repos.d]# cat /etc/sysconfig/network-scripts/route-br00.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 tcpdumpyum -y install mariadb-server
配置mysql服务:
[root@cloudstack-node5 ~]# cat /etc/my.cnf|egrep -v "^$|#"[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockinnodb_rollback_on_timeout=1innodb_lock_wait_timeout=600max_connections=350log-bin=mysql-binbinlog-format = 'ROW'symbolic-links=0[mysqld_safe]log-error=/var/log/mariadb/mariadb.logpid-file=/var/run/mariadb/mariadb.pid!includedir /etc/my.cnf.d[root@cloudstack-node5 ~]#systemctl start mariadbsystemctl enable mariadb#启动mysql服务
安装Cloudstack-Management:
#从MySQL导入GPG公钥:rpm --import http://repo.mysql.com/RPM-GPG-KEY-mysql#安装mysql-connectoryum -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-utilsvim /etc/exportsmkdir -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 /softwarewget 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.localmount -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/systemvmtemplate-4.11.1-kvm.qcow2.bz2 -h kvm -F#导入系统虚拟机模板
启动Cloudstack management服务:
systemctl start cloudstack-management
打开浏览器访问:用户名/密码为:admin/password
7. CloudStack-Agent 安装配置:
一定要保证/mnt目录没有被使用,且目录为空,否则CloudStack无法对其挂载Primary Storage,新建实例,可能会失败,除非你有多个agent,/mnt已有的数据,请提前保存好
安装cloudstack-agent,需要cloudstack-common软件,还有其它附属软件包.cd /softwarewget https://download.cloudstack.org/centos7/4.11/cloudstack-agent-4.11.1.0-1.el7.centos.x86_64.rpmwget https://download.cloudstack.org/centos7/4.11/cloudstack-common-4.11.1.0-1.el7.centos.x86_64.rpmyum groupinstall "Development Tools" -yyum remove java-1.8.0-openjdk-devel.x86_64 genisoimage ws-commons-util MySQL-python createrepoyum install -y java-1.8.0-openjdk-devel.x86_64 genisoimage ws-commons-util MySQL-python createrepoyum remove qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utilsyum install -y qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utilsyum 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.confvnc_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.conflisten_tls = 0listen_tcp = 1tcp_port = "16059"auth_tcp = "none"mdns_adv = 0EOF
在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 kvmkvm_intel 170086 9kvm 566340 1 kvm_intelirqbypass 13503 9 kvm
关于《CloudStack 私有云平台的搭建和维护》未完待续,请持续关注
转载于:https://blog.51cto.com/zgui2000/2365586