了解最新公司动态及行业资讯
基础架构即服务 (IaaS) 云的构建可能是一件复杂的事情,而且 根据定义,它们有太多的选择,这往往会导致混淆 即使是经验丰富的管理员,他们也是构建云平台的新手。这 此 Runbook 的目标是提供一组简单的说明,以 让你以最少的麻烦启动并运行CloudStack。
警告
本指南仅用于构建CloudStack测试/演示云。 因为已经做出了某些网络选择,让您启动并运行 最短的时间。本指南不能用于生产设置。
警告
如果您没有物理服务器可以“玩”,您可以使用例如Oracle VirtualBox 6.1+。 要求是在 VM 的“设置”的“系统”页面上启用“启用嵌套 VT-x/AMD-V”作为扩展功能。 您需要创建“Red Hat(64 位)”类型和 40+GB 磁盘空间的 VM。 VM 中需要有 1 个 NIC,桥接到笔记本电脑/台式机的 NIC (wifi 或有线 NIC,无关紧要),并最好设置 Adapter Type=“Paravirtualized Network (virtio-net)” 以获得更好的网络性能(VM 的设置、网络部分、Adapter1、 展开“高级”)。确保 VM 上的 NIC 配置为混杂(在 VirtualBox 中, 选择“全部允许”或仅选择“允许虚拟机”作为混杂模式),以便它可以传递来自 CloudStack的系统VM到网关。此外,请确保您允许足够的内存 (6G+) 和 足够的 CPU 内核 (3+) 用于演示目的。
本指南将重点介绍如何在CentOS上使用KVM构建CloudStack云 7.9 使用 VLAN 进行 NFS 存储和第 2 层隔离, (扁平家庭网络也可用于此目的)和单件 硬件(服务器/虚拟机)
KVM,即基于内核的虚拟机是一种虚拟化技术,用于 Linux 内核。KVM 支持在带有硬件的处理器上实现原生虚拟化 虚拟化扩展。
若要完成本指南,需要以下项目:
至少一台支持并已启用硬件虚拟化的计算机。
网关位于(例如)xxx.xxx.xxx.1 的 /24 网络,不需要 DHCP 在这个网络上,任何一台运行CloudStack的计算机都不会有一个 动态地址。同样,这样做是为了简单起见。
在开始之前,您需要在安装之前准备环境 CloudStack的。我们现在将介绍准备步骤。
使用 CentOS 7.9.2009 最低x86_64安装 ISO,您需要安装 硬件上的 CentOS 7。默认值通常是可以接受的 安装 - 但请确保配置 IP 地址/参数,以便以后可以根据需要安装 来自互联网的软件包。稍后,我们将根据需要更改网络配置。
安装完成后,您将需要访问您的 服务器 - 通过 SSH。
在开始之前更新系统总是明智的:
# yum -y upgrade
在继续之前,请确保“bridge-utils”和“net-tools”已安装并可用:
# yum install bridge-utils net-tools -y
通过控制台或 SSH 连接时,您应该以 root 身份登录。我们将从创建开始 Cloudstack将用于联网的桥接器。创建并打开 /etc/sysconfig/network-scripts/ifcfg-cloudbr0 并添加以下设置:
注意
IP 寻址 - 在本文档中,我们假设您将拥有 一个用于CloudStack实现的/24网络。这可以是任何 RFC 1918 网络。但是,我们假设您将匹配计算机地址 我们正在使用。因此,我们可以使用 172.16.10.2,因为您可能是 例如,使用 192.168.55.0/24 网络,您将使用 192.168.55.2。另一个例子 如果您在 192.168.1.0/24 网络上的本地家庭网络上使用 VirtualBox - 在这种情况下,您可以使用家庭范围中的单个可用 IP 地址(此 VM 的 VirtualBox NIC) 应处于桥接模式才能正常运行)
DEVICE=cloudbr0TYPE=BridgeONBOOT=yesBOOTPROTO=staticIPV6INIT=noIPV6_AUTOCONF=noDELAY=5IPADDR=172.16.10.2 #(or e.g. 192.168.1.2)GATEWAY=172.16.10.1 #(or e.g. 192.168.1.1 - this would be your physical/home router)NETMASK=255.255.255.0DNS1=8.8.8.8DNS2=8.8.4.4STP=yesUSERCTL=noNM_CONTROLLED=no
保存配置并退出。然后,我们将编辑 NIC,使其 利用了这座桥。
打开 NIC 的配置文件(例如 /etc/sysconfig/network-scripts/ifcfg-eth0) 并按如下方式编辑它:
注意
接口名称 (eth0) 仅用作示例。将 eth0 替换为默认以太网接口名称。
TYPE=EthernetBOOTPROTO=noneDEFROUTE=yesNAME=eth0DEVICE=eth0ONBOOT=yesBRIDGE=cloudbr0
注意
如果您的物理 nic(在我们的示例中为 eth0)已经 设置 在遵循本指南之前,请确保没有重复 在 /etc/config/network-scripts/ifcfg-cloudbr0 的 IP 配置和 /etc/sysconfig/network-scripts/ifcfg-eth0 将导致失败 将阻止网络启动。基本上,IP配置 的 eth0 应该移动到网桥中,eth0 将被添加到网桥中。
现在我们已经正确设置了配置文件,我们需要运行一些 启动网络的命令:
# systemctl disable NetworkManager; systemctl stop NetworkManager# systemctl enable network# reboot
CloudStack要求主机名设置正确。如果您使用了默认的 选项,则您的主机名当前设置为 localhost.localdomain. 为了测试这一点,我们将运行:
# hostname --fqdn
此时,它可能会返回:
localhost
为了纠正这种情况 - 我们将通过编辑 /etc/hosts 来设置主机名 文件,使其遵循与此示例类似的格式(请记住将 带有您的 IP 的 IP,例如 192.168.1.2):
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.16.10.2 srvr1.cloud.priv
修改该文件后,请使用以下命令重新启动网络:
# systemctl restart network
现在用
# hostname --fqdn
并确保它返回 FQDN 响应
目前,为了使CloudStack正常工作,SELinux必须设置为 允许或禁用。我们既想为将来的启动配置它,又想在 当前正在运行的系统。
要将 SELinux 配置为在正在运行的系统中是宽松的,我们需要运行 以下命令:
# setenforce 0
为了确保它保持该状态,我们需要配置文件 /etc/selinux/config 来反映允许状态,如下例所示:
# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - No SELinux policy is loaded.SELINUX=permissive# SELINUXTYPE= can take one of these two values:# targeted - Targeted processes are protected,# mls - Multi Level Security protection.SELINUXTYPE=targeted
NTP 配置是将所有时钟保留在云中的必要条件 服务器同步。但是,默认情况下不安装 NTP。因此,我们将安装 并在此阶段配置 NTP。安装完成方式如下:
# yum -y install ntp
实际的默认配置对于我们的目的来说很好,所以我们只需要 启用它并将其设置为在启动时启动,如下所示:
# systemctl enable ntpd# systemctl start ntpd
我们需要配置机器来使用CloudStack软件包仓库。
注意
Apache CloudStack官方版本是源代码。因此,有 没有可用的“官方”二进制文件。完整的安装指南介绍了如何操作 获取源代码并生成 RPM 和 yum 存储库。这 guide 试图让事情尽可能简单,因此我们使用 社区提供的 yum 存储库之一。此外,这个例子 假设安装了4.18.1.0 Cloudstack - 根据需要替换版本。
要添加CloudStack仓库,请创建/etc/yum.repos.d/cloudstack.repo和 插入以下信息。
[cloudstack] name=cloudstack baseurl=http://download.cloudstack.org/centos/$releasever/4.18/ enabled=1 gpgcheck=0
我们的配置将使用 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 /export/secondary
CentOS 7.x 发行版本默认使用 NFSv4。NFSv4 需要该域设置 所有客户端上的匹配项。在我们的例子中,域是 cloud.priv,因此请确保 /etc/idmapd.conf 中的域设置未添加注释,设置如下:
Domain = cloud.priv
现在,您需要在文件底部添加配置值 /etc/sysconfig/nfs(或只是取消注释并设置它们)
LOCKD_TCPPORT=32803LOCKD_UDPPORT=32769MOUNTD_PORT=892RQUOTAD_PORT=875STATD_PORT=662STATD_OUTGOING_PORT=2020
为简单起见,我们需要禁用防火墙,以便它不会阻止连接。
注意
CentOS7 上的防火墙配置超出了此范围 指导。
为此,只需使用以下两个命令:
# systemctl stop firewalld# systemctl disable firewalld
我们现在需要将 nfs 服务配置为在启动时启动并实际启动 通过执行以下命令在主机上执行:
# systemctl enable rpcbind# systemctl enable nfs# systemctl start rpcbind# systemctl start nfs
我们将安装CloudStack管理服务器和周围的工具。
我们将从安装 MySQL 开始并配置一些选项以确保它 与CloudStack一起运行良好。
首先,由于 CentOS 7 不再提供 MySQL 二进制文件,我们需要添加一个 MySQL 社区仓库, 它将提供 MySQL 服务器(以及稍后的 Python MySQL 连接器):
# yum -y install wget# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm# rpm -ivh mysql-community-release-el7-5.noarch.rpm
通过运行以下命令进行安装:
# yum -y install mysql-server
在撰写本指南时,这应该安装 MySQL 5.x。 现在安装了 MySQL,我们需要对 /etc/my.cnf 中。具体来说,我们需要将以下选项添加到 [mysqld] 部分:
innodb_rollback_on_timeout=1innodb_lock_wait_timeout=600max_connections=350log-bin=mysql-binbinlog-format = 'ROW'
注意
对于 Ubuntu 16.04 及更高版本,请确保在文件中指定用于二进制日志记录。根据您的数据库设置进行设置。server-id
.cnf
server-id
server-id=source-01innodb_rollback_on_timeout=1innodb_lock_wait_timeout=600max_connections=350log-bin=mysql-binbinlog-format = 'ROW'
现在MySQL已经正确配置,我们可以启动它并将其配置为 启动时启动,如下所示:
# systemctl enable mysqld# systemctl start mysqld
从 MySQL 社区存储库安装 Python MySQL 连接器(我们之前已添加):
# yum -y install mysql-connector-python
请注意,以前需要的库现在已经与CloudStack捆绑在一起了 管理服务器,不再需要单独安装。mysql-connector-java
我们现在要安装管理服务器。为此,我们执行 以下命令:
# yum -y install cloudstack-management
CloudStack 4.18需要Java 11 JRE。安装管理服务器 将自动安装 Java 11,但最好明确确认 Java 11 是选定的/活动的(如果您已经安装了以前的 Java 版本):
$ alternatives --config java
确保选中 Java 11。
安装应用程序本身后,我们现在可以设置数据库,我们将这样做 使用以下命令和选项:
# cloudstack-setup-databases cloud:password@localhost --deploy-as=root
当这个过程完成时,你应该会看到一条消息,比如“CloudStack有 已成功初始化数据库。
现在数据库已经创建完毕,我们可以进行最后一步的设置 通过发出以下命令启动管理服务器:
# cloudstack-setup-management
CloudStack使用许多系统虚拟机来提供访问的功能。 虚拟机的控制台,提供各种网络服务,以及 管理存储的各个方面。
我们需要下载 systemVM 模板并将其部署到辅助存储。 我们将使用本地路径 (/export/secondary),因为我们已经在 NFS 服务器本身上, 否则,您需要将二级存储挂载到临时挂载点,然后使用 该装入点,而不是 /export/secondary 路径。
执行 followint 脚本:
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloudstack.org/systemvm/4.18/systemvmtemplate-4.18.1-kvm.qcow2.bz2 -h kvm -F
管理服务器的设置到此结束。我们仍然需要配置 CloudStack,但是我们会在设置好虚拟机管理程序后再这样做。
我们还使用管理服务器作为计算节点,这 意味着我们已经执行了许多先决条件步骤,当 设置管理服务器,但为了清楚起见,我们将在此处列出它们。 这些步骤是:
您现在不需要对管理服务器执行此操作,因为我们已经这样做了。
只需一个命令即可安装 KVM 代理,但 之后,我们需要配置一些东西。我们还需要安装 EPEL 存储库。
# yum -y install epel-release# yum -y install cloudstack-agent
我们有两个不同的 KVM 部分需要配置,libvirt 和 QEMU。
我们需要编辑 QEMU VNC 配置。这是通过编辑 /etc/libvirt/qemu.conf 完成的 并确保以下行存在且未注释。
vnc_listen=0.0.0.0
CloudStack使用libvirt来管理虚拟机。因此,这是至关重要的 libvirt 配置正确。Libvirt 是 cloud-agent 的依赖项 并且应该已经安装。
即使我们使用的是单个主机,也建议执行以下步骤 让 Faimilar 满足一般要求。 为了让实时迁移正常工作,libvirt 必须监听不安全的情况 TCP 连接。我们还需要关闭 libvirts 尝试使用多播 DNS 广告。这两个设置都在 /etc/libvirt/libvirtd.conf 中
设置以下参数:
listen_tls = 0listen_tcp = 1tcp_port = "16509"auth_tcp = "none"mdns_adv = 0
在 libvirtd.conf 中打开“listen_tcp”是不够的,我们必须改变 参数,我们还需要修改 /etc/sysconfig/libvirtd:
取消注释以下行:
#LIBVIRTD_ARGS="--listen"
重新启动 libvirt
# systemctl restart libvirtd
为了完整起见,您应该检查 KVM 是否在您的 计算机(您应该看到kvm_intel或kvm_amd模块显示为已加载):
# lsmod | grep kvmkvm_intel 55496 0kvm 337772 1 kvm_intelkvm_amd # if you are in AMD cpu
KVM的安装和配置到此结束,现在我们将进行 使用CloudStack UI来实际配置我们的云。
要访问CloudStack的Web界面,只需将浏览器指向 您机器的 IP 地址,例如 http://172.16.10.2:8080/client 默认用户名为“admin”,默认密码为“password”。
区域是CloudStack中最大的组织实体 - 我们将 创建一个。
警告
我们将配置一个高级区域,以便我们同时访问两者 云的“管理”网络以及“公共”网络 - 我们将这样做 通过对两者使用相同的 CIDR(但其不同部分,即不同的 IP 范围) “管理”(Pod)和“公共”网络 - 这是你永远不会做的事情 在生产中 - 这仅出于本指南中的测试目的而严格执行!
单击“继续安装”以继续 - 您将被要求更改您的 root 管理员密码 - 请这样做,然后单击确定。
将弹出一个新的区域向导。请选择“高级”(不要勾选“安全组”),然后单击“下一步”。
在此页面上,我们输入DNS服务器所在的位置。 CloudStack区分内部DNS和公共DNS。内部 DNS 是 假定能够解析仅限内部的主机名,例如 NFS 服务器的 DNS 名称。向来宾 VM 提供公共 DNS 以进行解析 公共 IP 地址。您可以为这两种类型输入相同的 DNS 服务器,但 如果这样做,则必须确保内部和公共 IP 地址 可以路由到 DNS 服务器。在我们的特定情况下,我们不会使用任何名称 对于内部资源,我们确实会将它们设置为相同 外部资源,以免将 NamerServer 设置添加到我们的列表中 要求。
名称 - 我们将此设置为云的永远描述性的“Zone1”。
IPv4 DNS 1 - 我们将为我们的云设置此值。8.8.8.8
IPV4 DNS 2 - 我们将为我们的云设置此值。8.8.4.4
内部 DNS1 - 我们还将为我们的云设置此值。8.8.8.8
内部 DNS2 - 我们还将为我们的云设置此值。8.8.4.4
虚拟机管理程序 - 这将是此区域中使用的主要虚拟机管理程序。在我们的 情况下,我们将选择 KVM。
单击“下一步”继续。
Cloudstack支持多种网络隔离方法。这 默认 VLAN 选项足以满足我们的目的。为了改进 性能和/或安全性,Cloudstack允许不同的流量类型运行 通过连接到虚拟机管理程序的专用网络接口卡。 我们不会在这里进行任何更改,默认设置很好 对于Cloudstack的这个演示安装。
单击“下一步”继续。
在普通/公有云安装中,必须为此目的分配可公开访问的 IP, 但由于我们只是部署一个演示/测试环境,我们将使用我们本地网络的一部分(例如,从 .11 到 .20 或其他自由范围)
网关 - 我们将使用 #or 您的物理网关,例如 192.168.1.1172.16.10.1
网络掩码 - 我们将使用255.255.255.0
VLAN/VNI - 我们将这个留空
起始 IP - 我们将使用 #(或例如 192.168.1.11)172.16.10.11
结束 IP - 我们将使用 #(或例如 192.168.1.20)172.16.10.20
单击“添加”以添加范围。
单击“下一步”继续。
在这里,我们将为Cloudstack的内部管理流量配置一个范围 - CloudStack 将此范围的 IP 分配给系统 VM。这也将成为我们本地网络的一部分 (即本地家庭网络的不同部分,从 .21 到 .30),以及其余的 IP 参数 (netmaks/gateway) 与用于公共流量相同。
Pod 名称 - 我们将用于我们的云。Pod1
保留系统网关 - 我们将使用 #(或任何物理网关,例如 192.168.1.1)172.16.10.1
保留系统网络掩码 - 我们将使用255.255.255.0
启动保留的系统 IP - 我们将使用 #(或例如 192.168.1.21)172.16.10.21
结束保留的系统 IP - 我们将使用 #(或例如 192.168.1.30)172.16.10.30
单击“下一步”继续。
接下来,我们将为来宾虚拟机配置一系列 VLAN ID。
范围 - 就足够了。100
200
单击“下一步”继续。
多个集群可以属于一个 Pod,多个主机可以属于一个 簇。我们将有一个集群,我们必须为我们的集群命名。
进入Cluster1
单击“下一步”继续。
在这里,我们指定了虚拟机管理程序主机的详细信息。在我们的例子中, 我们在将要使用的同一台计算机上运行管理服务器 作为虚拟机管理程序。
Hostname - we’ll use the IP address since we didn’t set up a DNS server for name resolution. (this is your local server, so swap with the correct IP)172.16.10.2
Username - we’ll use root
Password - enter the operating system password for the root user
Click “Next” to continue.
With your cluster now setup - you should be prompted for primary storage information. Enter the following values in the fields:
Name - We’ll use Primary1
Scope - We’ll use even though either is fine in this case. With “Zone” scope, all hosts in all clusters would have access to this storage pool.Cluster
Protocol - We’ll use NFS
Server - We’ll be using the IP address (this is your local server, so swap with the correct IP)172.16.10.2
Path - Well define as the path we are using/export/primary
Click “Next” to continue.
You’ll be prompted for secondary storage information - populate it as follows:
提供程序 - 选择NFS
名字-Secondary1
NFS 服务器 - 我们将使用 IP 地址(这是您的本地服务器,因此请与正确的 IP 交换)172.16.10.2
路径 - 我们将使用/export/secondary
单击“下一步”继续。
现在,单击“启动区”,您的云应该开始设置 - 可能需要 几分钟的设置完成。
完成后,单击“启用区域”,您的区域将准备就绪。
就是这样,你已经完成了Apache CloudStack演示云的安装。
要检查CloudStack安装的健康状况,请转到基础设施 - >系统VM并刷新 UI - 应不时看到“S-1-VM”和“V-2-VM”系统虚拟机(SSVM 和 CPVM)处于 State=Running 和 Agent State=Up 中 之后,你可以进入图像 –>模板,点击名为“CentOS 5.5(64位)无GUI (KVM)”的内置模板, 然后单击“区域”选项卡 - 并观察状态如何从下载的百分之几到完全下载, 之后,“状态”将显示为“下载完成”,“就绪”列将显示“是”。 完成此操作后,你将能够从此模板部署 VM。