zoukankan      html  css  js  c++  java
  • cloudstack基础知识

    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_offeringG;
    *************************** 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
     FQDN: $fqdn
     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。 专注于以下四个领域: 分布式存储 分布式数据库 云计算 大数据 重点通过技术架构与性能优化(底层)实现基于私有云的大数据平台能力

  • 相关阅读:
    腾讯2014年实习生招聘笔试面试经历
    GitHub具体教程
    Hadoop Hive与Hbase关系 整合
    阿里中间件——消息中间件Notify和MetaQ
    Android分享介绍
    Python的包管理工具Pip
    [ACM] POJ 1094 Sorting It All Out (拓扑排序)
    机器学习实践指南:案例应用解析
    android之照相、相冊裁剪功能的实现过程
    组织:OASIS(结构化信息标准促进组织)
  • 原文地址:https://www.cnblogs.com/gordonchang/p/9016237.html
Copyright © 2011-2022 走看看