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。

以下初始化操作每个节点都要运行

初始化

更新软件包

apt update && apt upgrade -y

修改hosts

cat /etc/hosts

ip为服务所在服务器ip

127.0.0.1    localhost
38.xx.221.14     cloud.mio.cs       cloud
38.xx.221.14     kvm.mio.cs       kvm
38.xx.221.14     nfs.mio.cs      nfs

服务器配置静态ip

cat /etc/netplan/00-installer-config.yaml

网卡改桥接 cloudbr0, 一定要改, 不然无法添加主机

network:
  version: 2
  renderer: networkd
  ethernets:
    id0:
      match:
        macaddress: 9C:6B:00:0F:E5:77
  bridges:
     cloudbr0:
       addresses: [38.xx.221.14/24]
       routes:
        - to: default
          via: 38.xx.221.1
       nameservers:
         addresses: [8.8.8.8,1.1.1.1]
       interfaces: [id0]
       dhcp4: false
       dhcp6: false
       parameters:
         stp: false
         forward-delay: 0

运行 netplan 命令检查

netplan apply

在 resolv.conf 文件中添加 Google 公共 DNS 服务器 IP 地址

cat /etc/resolv.conf
nameserver 8.8.8.8

安装 mysql 并添加 Apache CloudStack 仓库

hostname --fqdn
ping cloudstack.apache.org
apt-get install -y openntpd openssh-server sudo vim htop tar intel-microcode bridge-utils mysql-server

添加cloudstack源
4.19为版本

echo deb [signed-by=/usr/share/keyrings/cloudstack.gpg] http://download.cloudstack.org/ubuntu jammy 4.19  > /etc/apt/sources.list.d/cloudstack.list
wget -O- http://download.cloudstack.org/release.asc | gpg --dearmor | sudo tee /usr/share/keyrings/cloudstack.gpg > /dev/null
apt-get update -y;apt-get install -y cloudstack-management cloudstack-usage

配置MySQL

vim /etc/mysql/mysql.conf.d/mysqld.cnf

插入以下内容到 mysqld.cnf

server_id = 1
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_ENGINE_SUBSTITUTION"
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=1000
log-bin=mysql-bin
binlog-format = 'ROW'

新建 cloudstack.cnf

echo "[mysqld]" > /etc/mysql/mysql.conf.d/cloudstack.cnf

重启MySQL服务

systemctl restart mysql

使用默认空密码登录MySQL

mysql -u root -p

修改数据库密码

SELECT user,authentication_string,plugin,host FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'KON777-mysql';
use mysql;
UPDATE user SET plugin="mysql_native_password" WHERE User='root';
flush privileges;
\q

配置CloudStack数据库

cloudstack-setup-databases cloud:KON777-mysql@localhost --deploy-as=root:KON777-mysql

检查CloudStack设置状态, 查看日志是否有错误

cloudstack-setup-management
tail -f /var/log/cloudstack/management/management-server.log

使用默认地址登录

http://38.xx.221.14:8080/client/
默认账号密码
User        : admin
Password    : password

安装NFS服务

apt-get install nfs-kernel-server quota

新建目录

mkdir -p /export/primary /export/secondary

配置并重启 NFS 服务器:

echo "/export  *(rw,async,no_root_squash,no_subtree_check)" >> /etc/exports

echo "Domain = mio.cs" >> /etc/idmapd.conf

sed -i -e 's/^RPCMOUNTDOPTS="--manage-gids"$/RPCMOUNTDOPTS="-p 892 --manage-gids"/g' /etc/default/nfs-kernel-server

sed -i -e 's/^STATDOPTS=$/STATDOPTS="--port 662 --outgoing-port 2020"/g' /etc/default/nfs-common

echo "NEED_STATD=yes" >> /etc/default/nfs-common

sed -i -e 's/^RPCRQUOTADOPTS=$/RPCRQUOTADOPTS="-p 875"/g' /etc/default/quota
sudo ufw disable
sudo systemctl enable rpcbind; sudo systemctl enable nfs-kernel-server
sudo systemctl restart nfs-kernel-server; sudo systemctl restart rpcbind

检查

root@cloud:~# showmount -e
Export list for cloud:
/export *

设置 KVM 主机

apt-get install qemu-kvm cloudstack-agent

为控制台代理启用 VNC:

sed -i -e 's/\#vnc_listen.*$/vnc_listen = "0.0.0.0"/g' /etc/libvirt/qemu.conf

在 Ubuntu 22.04 上,将 LIBVIRTD_ARGS="--listen" 添加到 /etc/default/libvirtd 中, 不然主机会提示不安全

echo LIBVIRTD_ARGS=\"--listen\" >> /etc/default/libvirtd

配置默认的 libvirtd 配置 /etc/libvirt/libvirtd.conf

listen_tls = 0
listen_tcp = 1
tls_port = "16514"
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0

对于 Ubuntu 20.04/22.04 及更高版本,可能不支持传统的基于 socket/listen 的配置,我们可以按如下方式获得旧的行为:

systemctl mask libvirtd.socket libvirtd-ro.socket libvirtd-admin.socket libvirtd-tls.socket libvirtd-tcp.socket
systemctl restart libvirtd

关于KVM中 VM CPU型号的说明

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

vim /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

重置:

systemctl stop cloudstack-management;cloudstack-setup-databases cloud:KON777-mysql@localhost --deploy-as=root:KON777-mysql;systemctl restart cloudstack-management cloudstack-agent

cloudstack 问题方式汇总
https://blog.csdn.net/u011085172/article/details/68490707

https://juejin.cn/post/7063335482620379166#heading-19
https://rohityadav.cloud/blog/cloudstack-kvm/
https://www.jianshu.com/p/8a847cc7626c

CPVM:
/etc/iptables/rules.v4
/opt/cloud/bin/setup/postinit.sh

ssh -i /root/.ssh/id_rsa.cloud 169.254.165.173 -p 3922

sed -i 's/${VNCPORT}/8443/g' /etc/iptables/rules.v4

tail -f /var/log/cloud/cloud.out

sed -i 's/${VNCPORT}/8443/g' /etc/iptables/rules.v4;sh /opt/cloud/bin/setup/postinit.sh;tail -f /var/log/cloud/cloud.out

注意

添加主机时不能用服务器公网ip, 不然ACS无法添加路由, noVNC就无法使用

最后修改:2024 年 09 月 27 日
如果觉得我的文章对你有用,请随意赞赏