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=vmxCloudStack 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就无法使用