热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

cloudstack基础知识

cloudstack基础知识http:cloudstack-administration-zh-cn.readthedocs.iozh_C

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

cloudstack基础知识


推荐阅读
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 解决Win10下MySQL连接问题:Navicat 2003无法连接到本地MySQL服务器(10061)
    本文介绍如何在Windows 10环境下解决Navicat 2003无法连接到本地MySQL服务器的问题,包括启动MySQL服务和检查配置文件的方法。 ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • 解决 Windows Server 2016 网络连接问题
    本文详细介绍了如何解决 Windows Server 2016 在使用无线网络 (WLAN) 和有线网络 (以太网) 时遇到的连接问题。包括添加必要的功能和安装正确的驱动程序。 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 本文介绍了 AngularJS 中的 $compile 服务及其用法,通过示例代码展示了如何使用 $compile 动态编译和链接 HTML 元素。 ... [详细]
  • [c++基础]STL
    cppfig15_10.cppincludeincludeusingnamespacestd;templatevoidprintVector(constvector&integer ... [详细]
  • ZooKeeper 入门指南
    本文将详细介绍ZooKeeper的工作机制、特点、数据结构以及常见的应用场景,包括统一命名服务、统一配置管理、统一集群管理、服务器动态上下线和软负载均衡。 ... [详细]
  • 自动验证时页面显示问题的解决方法
    在使用自动验证功能时,页面未能正确显示错误信息。通过使用 `dump($info->getError())` 可以帮助诊断和解决问题。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 数字资产量化交易通过大数据分析,以客观的方式制定交易决策,有效减少人为的主观判断和情绪影响。本文介绍了几种常见的数字资产量化交易策略,包括搬砖套利和趋势交易,并探讨了量化交易软件的开发前景。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本项目通过Python编程实现了一个简单的汇率转换器v1.02。主要内容包括:1. Python的基本语法元素:(1)缩进:用于表示代码的层次结构,是Python中定义程序框架的唯一方式;(2)注释:提供开发者说明信息,不参与实际运行,通常每个代码块添加一个注释;(3)常量和变量:用于存储和操作数据,是程序执行过程中的重要组成部分。此外,项目还涉及了函数定义、用户输入处理和异常捕获等高级特性,以确保程序的健壮性和易用性。 ... [详细]
author-avatar
互粉-结局_596
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有