cloudstack基础知识
cloudstack基础知识
使用服务器日志
为了方便诊断系统,CloudStack 管理服务器在目录/var/log/cloud/management/下记录了所有网站、中间层和数据库的活动。CloudStack 会记录各种出错信息。我们推荐使用下述命令从管理服务器日志中寻找有问题的输出日志:
注:当复制和粘贴命令时,请确保没有多余的换行符,因为一些文档查看器可能会在复制时加上换行符。
grep -i -E 'exception|unable|fail|invalid|leak|warn|error' /var/log/cloudstack/management/management-server.log
CloudStack处理请求时会生成一个任务ID。如果您发现了日志中的某个错误,然后想调试该问题,您可以在管理服务器日志中grep这个任务ID。例如,假设您发现了以下的ERROR信息:
2010-10-04 13:49:32,595 ERROR [cloud.vm.UserVmManagerImpl] (Job-Executor-11:job-1076) Unable to find any host for [User|i-8-42-VM-untagged]
注意到任务ID是1076。你可以追踪返回事件的相近任务1076按照以下grep:
grep "job-1076)" management-server.log
CloudStack代理服务器在 /var/log/cloudstack/agent/
记录了它的活动。
恢复丢失的虚拟路由器
症状
虚拟路由器是运行着的,但主机失去连接。虚拟路由器不再按期望工作。
原因
虚拟路由器丢失或宕机。
解决方案
如果您确定虚拟路由器宕机了,或不再正常工作,请销毁它。您必须再建一个新的,此时备份路由器应保持运行(假定在使用冗余路由器配置的情况下)。
强制停止虚拟路由器。请使用带参数forced=true的stopRouter API执行该步。
在销毁虚拟路由器之前,请确保备份路由器正常运行。否则用户的网络连接将中断。
使用destroyRouter API销毁该虚拟路由器。
使用restartNetwork API(参数cleanup=false)重建丢失的虚拟路由器。关于冗余虚拟路由器的配置,请参考创建新的网络方案。
关于更多的API语法信息,参见API参考http://cloudstack.apache.org/docs/api/
配置虚拟路由
你可以设置以下内容:
IP地址范围
支持的网络服务
由虚拟路由为网络服务提供的默认域名
网关IP地址
CloudStack多久从虚拟路由器获取一次网络使用数据。如果你想搜集虚拟路由器的流量计量数据,设置全局变量router.stats.interval。如果你不使用虚拟路由器收集网络使用数据,设置该值为0
在VM重启时重设VM的root盘
你可以指定你想要放弃的root磁盘和创建一个新的,并且无论何时在VM重启时都使用新的。每次启动时都是一个全新的VM并且桌面不需要保存它的状态,出于安全环境考虑这非常有用。VM的IP地址在这个操作期间不会改变。
要启用在VM重启时重置root磁盘:
当创建一个新的服务方案时,设置isVolatile这个参数为True。从这个服务方案创建的VMs一旦重启,它们的磁盘就会重置。请参阅 “创建新的计算方案”。
存储方案是可以通过修改数据库改变的
MariaDB [cloud]> select * from disk_offering\G;
*************************** 1. row ***************************
id: 1
domain_id: NULL
name: Small Instance
uuid: 46b92083-ff84-4825-ad07-0d2bcde4da4c
display_text: Small Instance
disk_size: 0
type: Service
tags: NULL
recreatable: 0
use_local_storage: 0
unique_name: Cloud.Com-Small Instance
system_use: 0
customized: 1
removed: NULL
created: 2018-03-08 12:22:39
sort_key: 0
display_offering: 1
customized_iops: NULL
min_iops: NULL
max_iops: NULL
bytes_read_rate: NULL
bytes_write_rate: NULL
iops_read_rate: NULL
iops_write_rate: NULL
state: Active
hv_ss_reserve: NULL
cache_mode: NULL
provisioning_type: thin
推荐使用cpu超配,不支持内存超配
使用超配可以实现cpu资源争抢功能
模板相当于虚拟机的重用配置
模板中,主机名管理
默认情况下CentOS在启动的时候配置主机名。但是,Ubuntu却没有此功能,对于Ubuntu,安装时使用下面步骤。
Ubuntu
The hostname of a Templated VM is set by a custom script in /etc/dhcp/dhclient-exit-hooks.d, this script first checks if the current hostname is localhost, if true, it will get the host-name, domain-name and fixed-ip from the DHCP lease file and use those values to set the hostname and append the /etc/hosts file for local hostname resolution. Once this script, or a user has changed the hostname from localhost, it will no longer adjust system files regardless of its new hostname. The script also recreates openssh-server keys, which should have been deleted before templating (shown below). Save the following script to /etc/dhcp/dhclient-exit-hooks.d/sethostname, and adjust the permissions.
#!/bin/sh
# dhclient change hostname script for Ubuntu
oldhostname=$(hostname -s)
if [ $oldhostname = 'localhost' ]
then
sleep 10 # Wait for configuration to be written to disk
hostname=$(cat /var/lib/dhcp/dhclient.eth0.leases | awk ' /host-name/ { host = $3 } END { printf host } ' | sed 's/[";]//g' )
fqdn="$hostname.$(cat /var/lib/dhcp/dhclient.eth0.leases | awk ' /domain-name/ { domain = $3 } END { printf domain } ' | sed 's/[";]//g')"
ip=$(cat /var/lib/dhcp/dhclient.eth0.leases | awk ' /fixed-address/ { lease = $2 } END { printf lease } ' | sed 's/[";]//g')
echo "cloudstack-hostname: Hostname _localhost_ detected. Changing hostname and adding hosts."
printf " Hostname: $hostname\n FQDN: $fqdn\n IP: $ip"
# Update /etc/hosts
awk -v i="$ip" -v f="$fqdn" -v h="$hostname" "/^127/{x=1} !/^127/ && x { x=0; print i,f,h; } { print $0; }" /etc/hosts > /etc/hosts.dhcp.tmp
mv /etc/hosts /etc/hosts.dhcp.bak
mv /etc/hosts.dhcp.tmp /etc/hosts
# Rename Host
echo $hostname > /etc/hostname
hostname -b -F /etc/hostname
echo $hostname > /proc/sys/kernel/hostname
# Recreate SSH2
export DEBIAN_FRONTEND=noninteractive
dpkg-reconfigure openssh-server
fi
### End of Script ###
chmod 774 /etc/dhcp/dhclient-exit-hooks.d/sethostname
警告
当你准备好做你的主模板的时候请运行下列步骤。如果主模板在这些步骤期间重启了,那么你要重新运行所有的步骤。在这个过程的最后,主模板应该关机并且将其创建为模板,然后再部署。
模板中,密码管理
Linux系统安装
使用一下步骤开始Linux系统的安装:
下载cloud-set-guest-password脚本文件:
https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in
Rename the file:
mv cloud-set-guest-password.in cloud-set-guest-password
拷贝本文件到 /etc/init.d 。
在某些linux发行版拷贝此文件到 /etc/rc.d/init.d。
执行以下命令使脚本可执行:
chmod +x /etc/init.d/cloud-set-guest-password
根据不同的Linux发行版,选择适当的步骤继续。
在Fedora,CentOS/RHEL和Debian上运行:
chkconfig --add cloud-set-guest-password
VM快照的限制
如果一个VM存储了一些快照,你就不能给他附加新卷或删除存在的卷。如果你更改了VM的卷,他将不能通过之前卷结构下所做快照来进行恢复。如果你想给这样一个VM附加卷,请先删除快照。
如果你更改了VM的服务方案,那么包含了数据卷和内存的VM快照就不能保留了,任何已有的此类型的VM快照都将被丢弃。
你不能同时对VM在做卷快照和VM快照。
你只能使用CloudStack来创建其管理的主机上的VM快照。你在hypervisor上直接创建的任何快照都不能被CloudStack识别。
配置VM快照
vmsnapshots.max
云中虚拟机能够保存快照的最大数。 (number of VMs) * vmsnapshots.max是云中VM快照的总共可能数量。如果任何一个VM的快照数达到了最大值,那么快照删除任务会把最老的快照删掉。
vmsnapshot.create.wait
在提示失败和发生错误之前快照工作为了成功的做快照而等待的秒数。
配置动态CPU和RAM伸缩
要配置此功能,请使用下面的全局配置变量:
enable.dynamic.scale.vm:设置为True以启用此功能。默认情况下,此功能是被关闭的。
scale.retry:伸缩操作的重试次数。默认为2。
如果动态伸缩CPU和RAM
要修改虚拟机的CPU和/或RAM,你必须更改VM的计算方案为你想要的。你可以按照上文中所述的同样的步骤 “Changing the Service Offering for a VM”,但是要跳过停止虚拟机的步骤。当然,你可能必须先创建一个新的计算方案。
当你提交一个动态伸缩的请求的时候,当前主机可能会扩展资源。如果主机没有足够的资源,VM会被在线迁移至同一群集中的其他主机。如果群集中没有能满足CPU和RAM条件的主机,那么扩展操作会失败。不用担心,VM会往常一样继续运行。
修改系统 VM 的默系统方案
你可认为的修改一个特殊系统 VM 的系统方案。此外,作为一个 CloudStack 管理员,你也可以改变系统 VM 使用的默认系统方案。
创建一个新的系统方案
获取更多信息,查看 创建一个新的系统服务方案
备份数据库:
mysqldump -u root -p cloud | bzip2 > cloud_backup.sql.bz2
打开一个 MySQL 提示:
mysql -u cloud -p cloud
在 cloud 数据库运行以下查询。
在磁盘 _offering 表,验证原始默认方案和你想默认使用的新方案。
记录新方案的 ID
select id,name,unique_name,type from disk_offering;
对于原始默认方案,设置 _name 唯一值为 NULL
# update disk_offering set unique_name = NULL where id = 10;
确保你使用正确的 ID 值
对于你想使用默认值的新方案,参照以下进行唯一 _name 值设置:
对于默认控制台代理虚拟机 ( CPVM )方案, 设置唯一 _name 为 ‘ Cloud.com-ConsoleProxy ‘。对于默认辅助存储虚拟机 ( SSVM ) 方案, 设置唯一 _name 为 ‘ Cloud.com-SecondaryStorage ‘。例如:
update disk_offering set unique_name = 'Cloud.com-ConsoleProxy' where id = 16;
重启 CloudStack 管理器服务器。因为默认方案启动时被加载到内存,要求重启。
service cloudstack-management restart
销毁存在的 CPVM 或 SSVM 方案,并等待它们重建。 通过新的系统方案配置新的 CPVM 或 SSVM
@Gordon_chang
1997年毕业于北京联合大学,先后在中国万网,新媒传信,亚信等公司工作,现在在一家创业型公司担任云计算与大数据运维方面的 PM & Engineer。 专注于以下四个领域:
分布式存储
分布式数据库
云计算
大数据
重点通过技术架构与性能优化(底层)实现基于私有云的大数据平台能力