部署规划指南
部署 Red Hat CloudForms 的规划
摘要
第 1 章 Red Hat CloudForms 简介
Red Hat CloudForms 为企业提供了解决虚拟环境的管理所需的远见、控制和自动化。这个技术让使用虚拟基础架构的企业改进可见性及控制,并可让刚开始进行虚拟化部署的企业可以构建和操作管理得当的虚拟基础架构。
Red Hat CloudForms 提供以下功能组件:
- 洞察力:发现、监控、利用率、性能、报表、分析、计费和趋势。
- 控制:安全、合规、警告、基于策略的资源和配置强制。
- 自动化:IT 流程、任务和事件、预配、负载管理和编排。
- 集成:系统管理、工具和进程、事件控制台、配置管理数据库(CMDB)、基于角色的管理(RBA) 和 Web 服务。
1.1. 构架
以下图示演示了 Red Hat CloudForms 的功能。其特性设计是要协同工作,以提供对虚拟基础设施的强大管理和维护。
该架构有以下组件构成:
- Red Hat CloudForms Appliance(工具)是作为安全、高性能、预配虚拟机提供。可提供 HTTPS 通讯支持。
- Red Hat CloudForms Server(服务器)位于该工具中。它是 SmartProxy 与虚拟管理数据库之间的通讯软件层,包括 HTTPS 通讯支持。
- 虚拟管理数据库(VMDB)位于该工具或另一台计算机可访问的工具中。它是所收集的有关您虚拟架构信息的明确来源,还保存有关工具任务的信息。
- Red Hat CloudForms Console(控制台)是网页界面,用来查看并控制服务器及工具,通过 Web 2.0 混合应用程序及网页服务(WS 管理)界面使用。
- SmartProxy 可位于该工具中,也可位于 ESX 服务器中。如果没有嵌入在服务器中,则可使用该工具部署 SmartProxy。必须在每个存储位置配置 SmartProxy,同时工具也必须能够访问 SmartProxy。SmartProxy 代表工具通过端口 443 与 HTTPS 通讯。
1.2. 要求
要使用 Red Hat CloudForms,必须满足以下要求:
以下网页浏览器之一:
- Mozilla 的扩展支持发行本(ESR)中支持的 Mozilla Firefox 版本
- Internet Explorer 10 或更新版本
- Google Chrome 商业版
- 最低分辨率为 1280x1024 的显示器。
- Adobe Flash Player 9 或更高的版本。发布时,可在 http://www.adobe.com/products/flashplayer/ 访问。
- 必须已安装 Red Hat CloudForms 工具,并在您的企业版环境中激活。
- 虚拟机以及要控制的云实例必须可以访问 SmartProxy。
- 要控制的资源必须与一个 SmartProxy 关联
由于浏览器的限制,红帽只支持在每个都标签浏览器中登录一个标签页。只为活跃的标签页保存控制台设置。出于同样的原因, Red Hat CloudForms 不保证浏览器的返回按钮会有预期的效果。红帽建议使用控制台提供的痕迹导航(breadcrumb)。
1.3. 术语
本文档通篇使用以下术语。操作前请复习这些术语。
- 帐户角色
- 用户对 Red Hat CloudForms 控制台不同部分和功能的访问等级。可为用户分配各种帐户角色,以限制或允许访问该控制台及虚拟基础设施。
- 动作
- 评估某个条件后执行的操作。
- 警报
- Red Hat CloudForms 警告会就该虚拟环境在很多关键配置更改及阈值限制通知管理员及监控的系统。这些通知是以电子邮件或 SNMP 陷阱的形式发送。
- 分析配置文件
- 主机、虚拟机或实例的自定义扫描。可从分类、文件、事件日志及注册条目中收集信息。
- 云
- 高可用计算资源池。这些资源的使用根据用户要求衡量,并根据成本测量。
- Red Hat CloudForms 工具
- 虚拟管理数据库(VMDB)及 Red Hat CloudForms 所在虚拟机。
- Red Hat CloudForms 控制台
- Red Hat CloudForms 工具中集成的基于网络的界面。
- Red Hat CloudForms 角色
- 为 Red Hat CloudForms 服务器分配的名称,规定 Red Hat CloudForms 服务器可以做什么。
- Red Hat CloudForms 服务器
- Red Hat CloudForms 工具中运行的应用程序,并与 SmartProxy 及 VMDB 通讯。
- 集群
- 提供高可用性及负载平衡的分组主机。
- 条件
- 任意事件触发的控制策略测试,可决定后续动作。
- 发现
- Red Hat CloudForms 服务器运行的进程,可查找虚拟机及云提供商。
- 偏移
- 虚拟机、实例、主机、集群在其不同时间点的对比。
- 事件
- 检查条件的触发器。
- 事件监控器
- Red Hat CloudForms 工具中用来为事件监控外部提供者,并将其发送给 Red Hat CloudForms 服务器的软件。
- 主机
- 运行 hypervisor 的计算机,可托管并监控虚拟机。支持的 hypervisor 包括 RHEV-H、VMware ESX 主机、Windows Hyper-V 主机。
- 实例/云实例
- 依赖预先定义的映象的按需虚拟机,并使用可伸缩之硬件资源集,比如 CPU、内存、联网接口。
- 管理的/注册的 VM
- 连接到主机并存在于 VMDB 中的虚拟机。同时,连接到提供者及 VMDB 中现有的模板。注:模本不能与主机连接。
- 管理的/未注册的 VM
- 位于存储库中,或不再连接到提供者或主机,同时存在于 VMDB 中的虚拟机或模板。如果将该虚拟机从提供者清单中删除,则之前视为已注册的虚拟机可能成为未注册的虚拟机。
- 提供者
- 是一台载入软件的计算机,可用来管理多台位于多台主机中的虚拟机。
- 策略
- 用来管理虚拟机的事件、条件及动作组合。
- 策略配置文件
- 一组策略。
- 刷新
- Red Hat CloudForms 服务器运行的进程,用来检查提供者、主机与其他资源比如存储位置、存储库、虚拟机或实例之间的关系。
- 区域
- 使用区域创建中央数据库,用来报告和制作图表。
- 资源
- 主机、提供者、实例、虚拟机、存储库或数据存储。
- 资源池
- 在其中分配 CPU 及内存资源的一组虚拟机。
- 存储库
- 包含虚拟机的数据存储位置。
- SmartProxy
- SmartProxy 是代表 Red Hat CloudForms 工具在主机、提供者、存储及虚拟机中执行动作的软件。
- 将 SmartProxy 配置为位于 Red Hat CloudForms 工具或 ESX 服务器版本中。可使用 Red Hat CloudForms 工具部署 SmartProxy,并使其可见于 VMFS 存储。每个存储位置中必须有一个 SmartProxy。SmartProxy 代表 Red Hat CloudForms 工具动作。如果 SmartProxy 没有嵌入 Red Hat CloudForms 工具,则会在标准端口 443 通过 HTTPS 与 Red Hat CloudForms 工具通讯。
- SmartState 分析
- SmartProxy 运行的进程会收集虚拟机或实例的详情,其中包括帐户、驱动程序、网络信息、硬件及安全补丁。这个进程还会由主机和集群中的 Red Hat CloudForms 服务器运行。这些数据是保存在 VMDB 中。
- SmartTags
- 用来为您的云及基础设施中的资源创建自定义、可搜索索引的描述符。
- 存储位置
- 连接到某个资源的设备,比如 VMware 数据存储,可用来存储数码信息。
- 标签
- Red Hat CloudForms 用户定义的描述性术语或资源,可用来将系统分类。
- 模板
- 模板就是一个预先配置的虚拟机备份,可以被用来捕获原始虚拟机中安装的软件和软件配置,也包括硬件配置。
- 未管理的虚拟机
- 在 VMDS中没有虚拟机与之关联的数据存储中找到的文件。这些文件可在 Red Hat CloudForms 服务器没有其配置信息的提供者中注册。可能的原因是尚未发现该提供者,也可能是已发现该提供者,但未提供安全认证。
- 虚拟机
- 系统的软件实施,其功能与物理机类似。虚拟机利用一台或一组物理主机的硬件基础设施,提供可伸缩的按需系统预置。
- 虚拟管理数据库(VMDB)
- Red Hat CloudForms 工具用来保存有关您资源、用户及所有管理虚拟企业所需内容的数据库。
- 虚拟指纹
- 网页界面中代表资源的映象,比如提供者或虚拟机,简要显示该资源属性。每个虚拟指纹都被分为四个部分,以用来提供资源信息,比如软件及电源状态。
- 区
- 可将 Red Hat CloudForms 基础设施划分为区,以便配置故障切换,同时隔离流量。可根据您的环境创建区。可根据地理位置、网络位置或功能划分区。首次启动后,会将新服务器放到默认区中。
1.4. 获得帮助并提供反馈信息
如果您对本文档所描述的操作有问题时,请访问红帽客户门户网站:http://access.redhat.com。通过客户门户网站,您可以:
- 搜索或者浏览有关红帽产品技术支持文章的知识库。
- 向红帽全球支持服务(GSS)提交支持案例。
- 访问其它产品文档。
红帽还托管了大量讨论红帽软件和技术的电子邮件列表。公开列表位于 https://www.redhat.com/mailman/listinfo。点击任意列表名称即可订阅该列表或者访问列表归档。
1.5. 文档反馈
如果您发现了排印错误或者有改进本文档的建议,请在客户门户网站向 GSS 提交报告。
提交报告时,请确定包含了手册识别符:Deployment Planning Guide
如果您有针对文档的建议,请尽量具体描述。如果发现任何错误,请附带章节号以及上下文,以便我们查找。
第 2 章 规划
本指南提供一些常规指导,以帮助您规划在 Red Hat CloudForms 中的部署,其中包括创建包含 Red Hat CloudForms 工具的多个区域,CPU 大小推荐、数据库大小推荐及数据库配置。
2.1. 区域
区域是用来集中保存从公共及专用虚拟化环境中收集的数据。一个区域最终代表 VMDB 的单一数据库。当需要管理多个地理位置时,区域就变得很有用,因为它们可在每个具体位置启用所有数据收集,同时可避免数据收集流量延缓网络链接。
使用多个区域时,每个区域都有其专用 ID。可创建主区域以便将所有子区域中的数据集中到单一主数据库中。要这样做,请将每个子区域配置为将其数据复制到主区域数据库中(红帽建议使用区域 99)。这个父区域和子区域是一对多的关系。
区域可包含多个区,每个区依次包含工具。区是用来进一步分离网络流量,同时启用故障切换配置。可以为每个工具配置大量指定的服务器角色。这些角色仅限用于包含其所在工具的区。
在一个区中只能为每个服务器角色运行一种故障切换类型。如果多个工具有同样的故障切换角色,则多出的角色是作为备份,只有在主工具出现故障时才能激活。无故障切换的服务器角色可在一个区的多个工具中同时运行,因此可根据那些角色负责的负载调整资源。
下图演示了 Red Hat CloudForms 环境中多个区域协同工作的示例。
如图所示:主工具位于芝加哥,包含一个主区域及管理多个工具的子区域。莫澳技术中心有管理两个区的单一子区域。同样,圣地亚哥技术中心有管理单一区的单一子区域。
- 不支持将父区域复制到较高级的父区域。
- 子区域上线后可配置父区域。
您可在下图中仔细观察区域:
如图所示:在这个区域中,我们有几个 Red Hat CloudForms 工具可作为 UI 节点及辅助角色节点。这些辅助角色节点在您环境的提供者中执行任务。该区域还使用向主 Red Hat CloudForms 工具中的主数据库报告的区域数据库。所有工具均可连接到认证服务(Active Directory、LDAP、身份管理)、传出邮件(SMTP)及网络服务(SNMP)。
2.2. 租户
Red Hat CloudForms 支持多租户,可让您分离一个租户的资源,并将用户帐户与其他帐户分离。另外,还可将租户以层级方式嵌套,在底部启用,并让上面的各层继承其权限。这个配置允许您为具体租户细化用户权限。
- 租户模型
有大量租赁规划共选择:
- 无租户 - 与之前没有租户支持的系统类似,可创建单一大型租户,并在没有任何资源细分或用户帐户的前提下执行所有操作。
- 企业模型 - 创建单一租户的一般情况,然后可根据所在机构的结果或部分划分。然后那些部门可将其资源进一步细分到不同的项目。使用这个模型,用户访问可使用单一 URL,同时还可将资源分为嵌套的层级租户。
- 多租户模型(CCP) - 使用认证的云提供者创建,这个模型允许多个租户彼此完全隔离,使用独立带宽及特定 URL。
2.3. 数据库大小分配助手
红帽建议创建时完全分配虚拟机磁盘。随着时间的推移,有三个主要因素会影响您的数据库大小:
- 虚拟机计数:随着时间的推移,这是影响虚拟机数据库(VMDB)计算的最重要因素。
- 主机计数:与该提供者关联的主机数。
- 存储计数:从提供者或主机角度看的独立存储元素数,不是所有虚拟机的虚拟磁盘总数。
2.4. PostgreSQL 配置文件示例
# ----------------------------- # PostgreSQL configuration file - MIQ Dedicated Appliance Configuration # ----------------------------- # # This file consists of lines of the form: # # name = value # # (The "=" is optional.) Whitespace may be used. Comments are introduced with # "#" anywhere on a line. The complete list of parameter names and allowed # values can be found in the PostgreSQL documentation. # # The commented-out settings shown in this file represent the default values. # Re-commenting a setting is NOT sufficient to revert it to the default value; # you need to reload the server. # # This file is read on server startup and when the server receives a SIGHUP # signal. If you edit the file on a running system, you have to SIGHUP the # server for the changes to take effect, or use "pg_ctl reload". Some # parameters, which are marked below, require a server shutdown and restart to # take effect. # # Any parameter can also be given as a command-line option to the server, e.g., # "postgres -c log_connections=on". Some parameters can be changed at run time # with the "SET" SQL command. # # Memory units: kB = kilobytes Time units: ms = milliseconds # MB = megabytes s = seconds # GB = gigabytes min = minutes # h = hours # d = days #------------------------------------------------------------------------------ # FILE LOCATIONS #------------------------------------------------------------------------------ # The default values of these variables are driven from the -D command-line # option or PGDATA environment variable, represented here as ConfigDir. #data_directory = 'ConfigDir' # use data in another directory # (change requires restart) #hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file # (change requires restart) #ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file # (change requires restart) # If external_pid_file is not explicitly set, no extra PID file is written. #external_pid_file = '(none)' # write an extra PID file # (change requires restart) #------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - listen_addresses = '10.132.50.128' # MIQ Value; #listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost', '*' = all # (change requires restart) #port = 5432 # (change requires restart) max_connections = 1600 # MIQ Value increased #max_connections = 100 # (change requires restart) Note: Increasing max_connections costs ~400 bytes of shared memory per connection slot, plus lock space (see max_locks_per_transaction). #superuser_reserved_connections = 3 # (change requires restart) #unix_socket_directory = '' # (change requires restart) #unix_socket_group = '' # (change requires restart) #unix_socket_permissions = 0777 # begin with 0 to use octal notation # (change requires restart) #bonjour = off # advertise server via Bonjour # (change requires restart) #bonjour_name = '' # defaults to the computer name # (change requires restart) # - Security and Authentication - #authentication_timeout = 1min # 1s-600s #ssl = off # (change requires restart) #ssl_ciphers = 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH' # allowed SSL ciphers # (change requires restart) #ssl_renegotiation_limit = 512MB # amount of data between renegotiations #password_encryption = on #db_user_namespace = off # Kerberos and GSSAPI #krb_server_keyfile = '' #krb_srvname = 'postgres' # (Kerberos only) #krb_caseins_users = off # - TCP Keepalives - # see "man 7 tcp" for details tcp_keepalives_idle = 3 # MIQ Value; #tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds; # 0 selects the system default tcp_keepalives_interval = 75 # MIQ Value; #tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds; # 0 selects the system default tcp_keepalives_count = 9 # MIQ Value; #tcp_keepalives_count = 0 # TCP_KEEPCNT; # 0 selects the system default #------------------------------------------------------------------------------ # RESOURCE USAGE (except WAL) #------------------------------------------------------------------------------ # - Memory - #shared_buffers = 128MB # MIQ Value SHARED CONFIGURATION shared_buffers = 4GB # MIQ Value DEDICATED CONFIGURATION increased #shared_buffers = 32MB # min 128kB # (change requires restart) #temp_buffers = 8MB # min 800kB #max_prepared_transactions = 0 # zero disables the feature # (change requires restart) # Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory # per transaction slot, plus lock space (see max_locks_per_transaction). # It is not advisable to set max_prepared_transactions nonzero unless you # actively intend to use prepared transactions. #work_mem = 1MB # min 64kB #maintenance_work_mem = 16MB # min 1MB #max_stack_depth = 2MB # min 100kB # - Kernel Resource Usage - #max_files_per_process = 1000 # min 25 # (change requires restart) #shared_preload_libraries = '' # (change requires restart) # - Cost-Based Vacuum Delay - #vacuum_cost_delay = 0ms # 0-100 milliseconds #vacuum_cost_page_hit = 1 # 0-10000 credits #vacuum_cost_page_miss = 10 # 0-10000 credits #vacuum_cost_page_dirty = 20 # 0-10000 credits #vacuum_cost_limit = 200 # 1-10000 credits # - Background Writer - #bgwriter_delay = 200ms # 10-10000ms between rounds #bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round #bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round # - Asynchronous Behavior - #effective_io_concurrency = 1 # 1-1000. 0 disables prefetching #------------------------------------------------------------------------------ # WRITE AHEAD LOG #------------------------------------------------------------------------------ # - Settings - #wal_level = minimal # minimal, archive, or hot_standby # (change requires restart) #fsync = on # turns forced synchronization on or off #synchronous_commit = on # synchronization level; on, off, or local #wal_sync_method = fsync # the default is the first option # supported by the operating system: # open_datasync # fdatasync (default on Linux) # fsync # fsync_writethrough # open_sync #full_page_writes = on # recover from partial page writes wal_buffers = 16MB # MIQ Value; #wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers # (change requires restart) #wal_writer_delay = 200ms # 1-10000 milliseconds #commit_delay = 0 # range 0-100000, in microseconds #commit_siblings = 5 # range 1-1000 # - Checkpoints - checkpoint_segments = 15 # MIQ Value; #checkpoint_segments = 3 # in logfile segments, min 1, 16MB each #checkpoint_timeout = 5min # range 30s-1h checkpoint_completion_target = 0.9 # MIQ Value; #checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0 #checkpoint_warning = 30s # 0 disables # - Archiving - #archive_mode = off # allows archiving to be done # (change requires restart) #archive_command = '' # command to use to archive a logfile segment #archive_timeout = 0 # force a logfile segment switch after this # number of seconds; 0 disables #------------------------------------------------------------------------------ # REPLICATION #------------------------------------------------------------------------------ # - Master Server - # These settings are ignored on a standby server #max_wal_senders = 0 # max number of walsender processes # (change requires restart) #wal_sender_delay = 1s # walsender cycle time, 1-10000 milliseconds #wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables #vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed #replication_timeout = 60s # in milliseconds; 0 disables #synchronous_standby_names = '' # standby servers that provide sync rep # comma-separated list of application_name # from standby(s); '*' = all # - Standby Servers - # These settings are ignored on a master server #hot_standby = off # "on" allows queries during recovery # (change requires restart) #max_standby_archive_delay = 30s # max delay before canceling queries # when reading WAL from archive; # -1 allows indefinite delay #max_standby_streaming_delay = 30s # max delay before canceling queries # when reading streaming WAL; # -1 allows indefinite delay #wal_receiver_status_interval = 10s # send replies at least this often # 0 disables #hot_standby_feedback = off # send info from standby to prevent # query conflicts #------------------------------------------------------------------------------ # QUERY TUNING #------------------------------------------------------------------------------ # - Planner Method Configuration - #enable_bitmapscan = on #enable_hashagg = on #enable_hashjoin = on #enable_indexscan = on #enable_material = on #enable_mergejoin = on #enable_nestloop = on #enable_seqscan = on #enable_sort = on #enable_tidscan = on # - Planner Cost Constants - #seq_page_cost = 1.0 # measured on an arbitrary scale #random_page_cost = 4.0 # same scale as above #cpu_tuple_cost = 0.01 # same scale as above #cpu_index_tuple_cost = 0.005 # same scale as above #cpu_operator_cost = 0.0025 # same scale as above #effective_cache_size = 128MB # - Genetic Query Optimizer - #geqo = on #geqo_threshold = 12 #geqo_effort = 5 # range 1-10 #geqo_pool_size = 0 # selects default based on effort #geqo_generations = 0 # selects default based on effort #geqo_selection_bias = 2.0 # range 1.5-2.0 #geqo_seed = 0.0 # range 0.0-1.0 # - Other Planner Options - #default_statistics_target = 100 # range 1-10000 #constraint_exclusion = partition # on, off, or partition #cursor_tuple_fraction = 0.1 # range 0.0-1.0 #from_collapse_limit = 8 #join_collapse_limit = 8 # 1 disables collapsing of explicit # JOIN clauses #------------------------------------------------------------------------------ # ERROR REPORTING AND LOGGING #------------------------------------------------------------------------------ # - Where to Log - log_destination = 'stderr' # Valid values are combinations of # stderr, csvlog, syslog, and eventlog, # depending on platform. csvlog # requires logging_collector to be on. # This is used when logging to stderr: logging_collector = on # Enable capturing of stderr and csvlog # into log files. Required to be on for # csvlogs. # (change requires restart) # These are only used if logging_collector is on: log_directory = '/www/postgres/log' # Customer specific setting #log_directory = 'pg_log' # directory where log files are written, # can be absolute or relative to PGDATA log_filename = 'postgresql-%Y-%m-%d.log' # log file name pattern, # can include strftime() escapes log_file_mode = 0644 # creation mode for log files, # begin with 0 to use octal notation log_truncate_on_rotation = on # If on, an existing log file with the # same name as the new log file will be # truncated rather than appended to. # But such truncation only occurs on # time-driven rotation, not on restarts # or size-driven rotation. Default is # off, meaning append to existing files # in all cases. log_rotation_age = 1d # Automatic rotation of logfiles will # happen after that time. 0 disables. log_rotation_size = 0 # Automatic rotation of logfiles will # happen after that much log output. # 0 disables. # These are relevant when logging to syslog: #syslog_facility = 'LOCAL0' #syslog_ident = 'postgres' #silent_mode = off # Run server silently. # DO NOT USE without syslog or # logging_collector # (change requires restart) # - When to Log - #client_min_messages = notice # values in order of decreasing detail: # debug5 # debug4 # debug3 # debug2 # debug1 # log # notice # warning # error #log_min_messages = warning # values in order of decreasing detail: # debug5 # debug4 # debug3 # debug2 # debug1 # info # notice # warning # error # log # fatal # panic #log_min_error_statement = error # values in order of decreasing detail: # debug5 # debug4 # debug3 # debug2 # debug1 # info # notice # warning # error # log # fatal # panic (effectively off) log_min_duration_statement = 5000 # MIQ Value- ANY statement > 5 seconds #log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements # and their durations, > 0 logs only # statements running at least this number # of milliseconds # - What to Log - #debug_print_parse = off #debug_print_rewritten = off #debug_print_plan = off #debug_pretty_print = on #log_checkpoints = off #log_connections = off #log_disconnections = off #log_duration = off #log_error_verbosity = default # terse, default, or verbose messages #log_hostname = off log_line_prefix = '%t:%r:%c:%u@%d:[%p]:' # MIQ Value; #log_line_prefix = '' # special values: # %a = application name # %u = user name # %d = database name # %r = remote host and port # %h = remote host # %p = process ID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %i = command tag # %e = SQL state # %c = session ID # %l = session line number # %s = session start timestamp # %v = virtual transaction ID # %x = transaction ID (0 if none) # %q = stop here in non-session # processes # %% = '%' # e.g. '<%u%%%d> ' log_lock_waits = on # MIQ Value - used to track possible deadlock issues #log_lock_waits = off # log lock waits >= deadlock_timeout #log_statement = 'none' # none, ddl, mod, all #log_temp_files = -1 # log temporary files equal or larger # than the specified size in kilobytes; # -1 disables, 0 logs all temp files #log_timezone = '(defaults to server environment setting)' #------------------------------------------------------------------------------ # RUNTIME STATISTICS #------------------------------------------------------------------------------ # - Query/Index Statistics Collector - #track_activities = on track_counts = on # MIQ Value; #track_counts = on #track_functions = none # none, pl, all #track_activity_query_size = 1024 # (change requires restart) #update_process_title = on #stats_temp_directory = 'pg_stat_tmp' # - Statistics Monitoring - #log_parser_stats = off #log_planner_stats = off #log_executor_stats = off #log_statement_stats = off #------------------------------------------------------------------------------ # AUTOVACUUM PARAMETERS #------------------------------------------------------------------------------ autovacuum = on # MIQ Value; #autovacuum = on # Enable autovacuum subprocess? 'on' # requires track_counts to also be on. log_autovacuum_min_duration = 0 # MIQ Value; #log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and # their durations, > 0 logs only # actions running at least this number # of milliseconds. autovacuum_max_workers = 1 # max number of autovacuum subprocesses # (change requires restart) autovacuum_naptime = 30min # MIQ Value; #autovacuum_naptime = 1min # time between autovacuum runs autovacuum_vacuum_threshold = 500 # MIQ Value; #autovacuum_vacuum_threshold = 50 # min number of row updates before # vacuum autovacuum_analyze_threshold = 500 # MIQ Value; #autovacuum_analyze_threshold = 50 # min number of row updates before # analyze autovacuum_vacuum_scale_factor = 0.05 # MIQ Value; #autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum #autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze #autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum # (change requires restart) #autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for # autovacuum, in milliseconds; # -1 means use vacuum_cost_delay #autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for # autovacuum, -1 means use # vacuum_cost_limit #------------------------------------------------------------------------------ # CLIENT CONNECTION DEFAULTS #------------------------------------------------------------------------------ # - Statement Behavior - #search_path = '"$user",public' # schema names #default_tablespace = '' # a tablespace name, '' uses the default #temp_tablespaces = '' # a list of tablespace names, '' uses # only default tablespace #check_function_bodies = on #default_transaction_isolation = 'read committed' #default_transaction_read_only = off #default_transaction_deferrable = off #session_replication_role = 'origin' #statement_timeout = 0 # in milliseconds, 0 is disabled #statement_timeout = 43200000 # MIQ statment timeout of 12 hours as a default #vacuum_freeze_min_age = 50000000 #vacuum_freeze_table_age = 150000000 #bytea_output = 'hex' # hex, escape #xmlbinary = 'base64' #xmloption = 'content' # - Locale and Formatting - datestyle = 'iso, mdy' #intervalstyle = 'postgres' #timezone = '(defaults to server environment setting)' #timezone_abbreviations = 'Default' # Select the set of available time zone # abbreviations. Currently, there are # Default # Australia # India # You can create your own file in # share/timezonesets/. #extra_float_digits = 0 # min -15, max 3 #client_encoding = sql_ascii # actually, defaults to database # encoding # These settings are initialized by initdb, but they can be changed. lc_messages = 'en_US.UTF-8' # locale for system error message # strings lc_monetary = 'en_US.UTF-8' # locale for monetary formatting lc_numeric = 'en_US.UTF-8' # locale for number formatting lc_time = 'en_US.UTF-8' # locale for time formatting # default configuration for text search default_text_search_config = 'pg_catalog.english' # - Other Defaults - #dynamic_library_path = '$libdir' #local_preload_libraries = '' #------------------------------------------------------------------------------ # LOCK MANAGEMENT #------------------------------------------------------------------------------ deadlock_timeout = 5s # MIQ Value - one second is too low, 5 seconds is more "interesting" #deadlock_timeout = 1s #max_locks_per_transaction = 64 # min 10 # (change requires restart) # Note: Each lock table slot uses ~270 bytes of shared memory, and there are # max_locks_per_transaction * (max_connections + max_prepared_transactions) # lock table slots. #max_pred_locks_per_transaction = 64 # min 10 # (change requires restart) #------------------------------------------------------------------------------ # VERSION/PLATFORM COMPATIBILITY #------------------------------------------------------------------------------ # - Previous PostgreSQL Versions - #array_nulls = on #backslash_quote = safe_encoding # on, off, or safe_encoding #default_with_oids = off escape_string_warning = off # MIQ Value no sure why this is enabled #escape_string_warning = on #lo_compat_privileges = off #quote_all_identifiers = off #sql_inheritance = on standard_conforming_strings = off # MIQ Value not sure why this is enabled #standard_conforming_strings = on #synchronize_seqscans = on # - Other Platforms and Clients - #transform_null_equals = off #------------------------------------------------------------------------------ # ERROR HANDLING #------------------------------------------------------------------------------ #exit_on_error = off # terminate session on any error? #restart_after_crash = on # reinitialize after backend crash? #------------------------------------------------------------------------------ # CUSTOMIZED OPTIONS #------------------------------------------------------------------------------ #custom_variable_classes = '' # list of custom variable class names
第 3 章 容量规划
3.1. 容量及利用率收集
Red Hat CloudForms 服务器可从您的虚拟基础架构中收集并分析容量及利用率数据。使用这个数据了解当前环境限制和增长规划。
对于容量及利用率数据, Red Hat CloudForms 计算趋势线,并以图表显示。使用 Red Hat CloudForms 为图表指定间隔收集的容量和利用率数据计算线性回归,以生成趋势线。数据越充分,越能够预计趋势线值。
有三个服务器角色与容量和利用率收集和度量创建关联。
- 容量及利用率协调器角色会检查何时应收集数据,类似一个规划程序。如果应该收集,则会有一个用于容量和利用率数据收集器的任务排队。完成容量和利用率数据收集需要这个协调器角色。如果在某个具体区的一个以上服务器均有此角色,则每次只能有一个处于活跃状态。
- 容量和利用率数据收集器实际执行容量和利用率数据收集。这个角色是一个专用辅助角色,在一个区中可有多个服务器有此角色。
- 容量和利用率数据处理器会处理收集的所有数据,并由 Red Hat CloudForms 生成图表。这个角色有专用辅助角色,且在一个区中可有多个服务器有此角色。
3.2. 分配容量及利用率服务器角色
- 导航至 → ,并选择该服务器,以便在左侧窗格中配置 → 。
- 导航至 → 部分,并在根据您配置列出的容量及使用角色中选择正确的角色。
- 点击 保存。
数据收集会立即开始。但第一次收集会在服务器启动后 5 分钟后开始,此后每 10 分钟收集一次。因此,启用容量及利用率收集器服务器角色后的最长收集会需要 10 分钟。具体提供者进行第一次收集可能需要几分钟,因为 Red Hat CloudForms 正在收集过去一个月的数据。
除设置服务器角色外,还必须选择为那些集群和数据存储收集数据。有关详情,请查看《常规配置》。您必须是超级管理员方可编辑这些设置。
3.3. Data Collection for Red Hat Enterprise Virtualization 3.3 和 3.4
要为 Data Collection for Red Hat Enterprise Virtualization 3.3 和 3.4 收集容量和利用率数据,则必须作为用户将 Red Hat CloudForms 添加到 RHEV-M 数据库。
此过程是在历史数据库所在的 PostgreSQL 服务器中进行,一般为 RHEV-M 服务器。
作为 root 用户使用 SSH 访问 RHEV-M 数据库服务器:
$ ssh root@example.postgres.server
切换到 postgres 用户:
# su - postgres
进入数据库提示符:
-bash-4.1$ psql
为 Red Hat CloudForms 创建新用户:
postgres=# CREATE ROLE cfme LOGIN UNENCRYPTED PASSWORD 'smartvm' SUPERUSER VALID UNTIL 'infinity';
退出 RHEV-M 数据库服务器提示符:
postgres=# \q -bash-4.1$ exit
将服务器的防火墙更新为可中端口 5432 接收 TCP 通讯:
# iptables -I INPUT -p tcp -m tcp --dport 5432 -j ACCEPT # service iptables save
通过将以下行添加到
/var/lib/pgsql/data/pg_hba.conf中启用外部 md5 认证:host all all 0.0.0.0/0 md5
通过更新
/var/lib/pgsql/data/postgresql.conf的listen_addresses行为远程连接启用 PostgreSQL 进行侦听:listen_addresses = '*'
重新载入 PostgreSQL 配置:
service postgresql reload
3.4. 为数据收集统计数据库证书
创建新用户后,为该提供者在设置中添加该用户的证书。
- 在 → → 中选择一个基础设施提供者,以更新其设置。
-
点击
配置,然后点击
所选基础设施提供者。
- 在 证书 部分点击 容量 & 利用率数据库。
- 为新创建的数据库用户输入该证书。
- 点击 保存。
- 重启该容量及利用率数据收集器。
3.5. Data Collection for Red Hat Enterprise Linux OpenStack Platform
可从 Red Hat Enterprise Linux OpenStack Platform(RHEL-OSP)提供者收集数据前,必须安装 Ceilmeter,并将其配置为接受外部系统查询。
这些步骤需要基于 Red Hat Enterprise Linux 6.4 的 RHEL-OSP 安装,并在可访问 RHEL-OSP 及 RHEL 服务器自选 通道的 satellite 中注册。在您的 RHEL-OSP 系统中完成所有步骤。
添加所需频道,并更新系统:
# rhn-channel --add -c rhel-x86_64-server-6-ost-3 -c rhel-x86_64-server-optional-6 # yum update -y # reboot
安装
Ceilometer:# yum install *ceilometer*
安装并启动 MongoDB 存储:
# yum install mongodb-server # sed -i '/--smallfiles/!s/OPTIONS=\"/OPTIONS=\"--smallfiles /' /etc/sysconfig/mongod # service mongod start
创建以下用户及角色:
# SERVICE_TENANT=$(keystone tenant-list | grep services | awk '{print $2}') # ADMIN_ROLE=$(keystone role-list | grep ' admin ' | awk '{print $2}') # SERVICE_PASSWORD=servicepass # CEILOMETER_USER=$(keystone user-create --name=ceilometer \ --pass="$SERVICE_PASSWORD" \ --tenant_id $SERVICE_TENANT \ --email=ceilometer@example.com | awk '/ id / {print $4}') # RESELLER_ROLE=$(keystone role-create --name=ResellerAdmin | awk '/ id / {print $4}') # ADMIN_ROLE=$(keystone role-list | awk '/ admin / {print $2}') # for role in $RESELLER_ROLE $ADMIN_ROLE ; do keystone user-role-add --tenant_id $SERVICE_TENANT \ --user_id $CEILOMETER_USER --role_id $role done在
ceilometer.conf中配置认证令牌:# openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken auth_host 127.0.0.1 # openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken auth_port 35357 # openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken auth_protocol http # openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken admin_tenant_name services # openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken admin_user ceilometer # openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken admin_password $SERVICE_PASSWORD
在
ceilometer.conf中配置用户证书:# openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT os_auth_url http://127.0.0.1:35357/v2.0 # openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT os_tenant_name services # openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT os_password $SERVICE_PASSWORD # openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT os_username ceilometer
启动 Ceilometer 服务:
# for svc in compute central collector api ; do service openstack-ceilometer-$svc start done
使用该服务类别注册端点。使用您外部接口的 IP 地址替换
$EXTERNALIFACE:# keystone service-create --name=ceilometer \ --type=metering --description="Ceilometer Service" # CEILOMETER_SERVICE=$(keystone service-list | awk '/ceilometer/ {print $2}') # keystone endpoint-create \ --region RegionOne \ --service_id $CEILOMETER_SERVICE \ --publicurl "http://$EXTERNALIFACE:8777/" \ --adminurl "http://$EXTERNALIFACE:8777/" \ --internalurl "http://localhost:8777/"启用从外部系统访问 Ceilometer 的功能:
# iptables -I INPUT -p tcp -m multiport --dports 8777 -m comment --comment "001 ceilometer incoming" -j ACCEPT # iptables save
确认 OpenStack 及 Ceilometer 服务状态:
# openstack-status # for svc in compute central collector api ; do service openstack-ceilometer-$svc status done
作为运行实例的用户(例如:
admin)验证,从而确认 Ceilometer 正常运行。将示例发送到 CPU 指示器计算线程,并确认按照/etc/ceilometer/pipeline.yaml中指定的间隔更改该数值。默认间隔为 600 秒。# . ~/keystonerc_admin # ceilometer sample-list -m cpu |wc -l
- 在 Red Hat CloudForms 中添加配置的 OpenStack 提供者。详情请查看《管理提供者》中《添加 OpenStack 提供者》一节。添加此提供者后,几分钟内即可填入您的实例容量和利用率数据。
3.6. 收集的数据
Red Hat CloudForms 为收集的数据生成图表,以便用来规划硬件和虚拟机。视不同数据类型,这些图表可包括平均线,最高线,最低线及趋势线。
报告每日容量和利用率数据,在所需间隔开始及结束点的不完整日期(午夜至午夜少于 24 个小时点的日期)除外。对于少于 24 个小时点的日期,其数据可能会不准确,并可能破坏趋势线。因此,至少有一个完整的午夜至午夜按小时记录的数据,以便在 → 标签中显示容量和利用率图表。
3.6.1. 主机、集群和虚拟机的容量和利用率图表
表 3.1. 主机、集群和虚拟机的容量和利用率图表
| 资源类型 | CPU 使用 | CPU 状态 | 磁盘 I/O | 内存使用 | 网络 I/O | 运行的 VMS | 运行的主机 |
|---|---|---|---|---|---|---|---|
|
主机 |
是 |
是 |
是 |
是 |
是 |
是 |
不适用 |
|
集群 |
是 |
是 |
是 |
是 |
是 |
是 |
是 |
|
虚拟机 |
是 |
是 |
是 |
是 |
是 |
不适用 |
不适用 |
有关查看主机、集群和虚拟机容量和使用图表的步骤,请参看《管理基础设施指南》中的以下章节:
3.6.2. 数据存储的容量和利用率图表
创建的图表包括:
表 3.2. 数据存储的容量和利用率图表
| 按 VM 类型分配的空间 | 虚拟机和主机 |
|---|---|
|
已使用空间 |
按类型分配的 VM 数 |
|
磁盘文件空间 |
主机 |
|
快照文件空间 |
虚拟机 |
|
内存文件空间 | |
|
非虚拟机文件 | |
|
已使用磁盘空间 |
有关查看数据存储容量和利用率图表的步骤,请参看《管理基础设施清单指南》中的以下章节:
3.7. 图表功能
每个图表都提供一组特殊功能,其中包括放大图表和快捷菜单。
3.7.1. 放大图表
- 导航至要放大的图表。悬停在图表的任意位置,此时会出现两行虚线让您对准图表坐标。
-
点击图表左下角的
(点击放大)放大该图表。
-
要返回常规视图,请在放大的图表中点击
(点击缩小)。
3.7.2. 提取图表数据
- 导航至要从中获取详情的图表。
- 悬停在数据点上查看坐标。
点击数据点打开图表的快捷菜单。在此示例中,可使用快捷菜单进入按小时显示的图表,或显示捕获该数据是正在运行的虚拟机。
- 如果正在查看 CPU、磁盘、内存 或 网络 图表,从 图表 选项中选择会将该也中所有图表改为采用新的间隔。
- 如果您正在查看 CPU、磁盘、内存 或 网络 图表,从 显示 选项中选择可让您进一步查看那个时候正在运行的虚拟机或 主机。
- 如果您要查看 VM 或者 主机 图表,可使用 显示 菜单查看正在运行或已停止的虚拟机。将会延迟可用虚拟机的数据点时间。在这里可以点击虚拟机查看其详情。
3.8. 优化
Red Hat CloudForms 的优化功能可让您查看使用趋势,并鉴别和解决您环境中的瓶颈。此外,您可以预测附加虚拟机的容量。
报告每日优化数据,在所需间隔开始及结束点的不完整日期(午夜至午夜少于 24 个小时点的日期)除外。少于 24 个小时点的日期可能会不准确,并可能破坏趋势线。因此,至少有一个完整的午夜至午夜按小时记录的数据,以便在 优化 页面需要至少两个完整日期数据,因为所有列入图表中的数据都是来自趋势计算,并要求至少有两个数据点。
3.9. 利用率趋势
Red Hat CloudForms 允许您查看集群、提供者和数据存储的资源利用率。可从概述、详情或报告视图中选择。
3.9.1. 查看利用率趋势概述
这个过程演示了如何查看利用率趋势概述。
- 导航至 → 。
- 如果还没有选择,则请点击 概述。
- 展开左侧的树,直到可以看到所需提供者、集群或数据存储。
- 点击该项目。
使用 概述 中的 选项 标签,更改该数据特征。
- 使用 趋势 选择您要向前回溯多少以计算该趋势。
- 在 概述 标签中使用 所选日期 选择要中该图表中查看使用百分比的日期。
- 使用 分类 只查看具体应用标签的趋势。
- 使用 时间配置文件 选择现有时间配置文件。如果登录的用户没有任何可用时间配置文件,则不会显示此选项。
- 查看 时区。
3.9.2. 查看利用率趋势的详细曲线
这个过程为您演示如何查看利用率趋势的详细曲线。
- 导航至 → 。
- 展开左侧的树,直到可以看到所需提供者、集群或数据存储。
- 点击该项目。
- 如果还没有选择,则请点击 详情。
- 在 选项 部分,选择您要向前回溯多少以查看要使用的任意类别的趋势。
3.9.3. 查看利用率趋势报告
要找出更多资源使用,请查看利用率趋势报告。
- 导航至 → 。
- 展开左侧的树,直到可以看到所需提供者、集群或数据存储。
- 点击该项目。
- 如果还没有选择,则请点击 报告。
- 在 选项 部分,选择您要向前回溯多少以查看要使用的任意类别的趋势。
3.10. 规划
您可以使用在 VMDB 中收集的数据规划在哪里添加附加虚拟机。 Red Hat CloudForms 允许您使用参考虚拟机作为示例,以规划在哪台主机和集群添加新虚拟机。
3.10.1. 规划在哪里添加新虚拟机
使用 Red Hat CloudForms 规划功能帮助您规划虚拟机放置。
- 导航至 → 。
在 参考 VM 选择,使用下拉菜单选择最可能要添加的虚拟机。
选择用来进行计算的所需 VM 选项。
在 资源 列表中选择数据类型作为您的计划来源。例如:选择 分配 根据每个资源(CPU、内存或磁盘空间)的当前分配值为参考虚拟机进行计算。使用 保留 根据具体资源(CPU 速度、CPU 计数、内存或磁盘空间)的当前值进行规划,虽然在某个具体时间尚未没有为其分配那个数值。如果要根据参考虚拟机的用量历史记录进行计算,则请选择 用量。选择 手动输入 为每个资源输入您自己的参数集。
在 目标选项 / 显示 中选择您是否要使用集群或主机作为您的目标。
另外,还要选择该规划的 CPU、内存及数据存储空间上限。如果选择主机作为目标,则可以为可作为的目标主机选择过滤器。
- 在 趋势选项 中选择要将趋势数据向前回溯多久,如果可用,则可选择 时间配置文件 和 时区。注:如果登录的用户有 时间配置文件 可用,则只会显示 时间配置文件。
- 点击 提交。
概述 标签可在其中添加的最佳集群或主机。报告 标签以表格格式显示最合适的参考虚拟机及统计数据。在 报告 标签中还可以生成报告的 PDF 文档,或以 txt 或者 csv 格式下载该数据。
3.11. 瓶颈
Red Hat CloudForms 可显示在您的虚拟基础设施的那个位置会产生瓶颈。可通过时间线查看瓶颈,也可以作为报告下以便进一步分析。
3.11.1. 先决条件
瓶颈报告使用同样的机制收集容量和使用报告。要在 Red Hat CloudForms 中启用数据收集,请查看以下章节:
另外,还可按照以下步骤将 Red Hat CloudForms 配置为收集集群化数据存储的容量和利用率报告:
- 导航至 → 。
- 在工具左侧栏的 设置 标签中选择 区域。
在右侧栏的 容量 & 利用率收集 标签中选取 集群 下的 为所有集群收集 以及 数据存储 下的 为所有数据存储收集,或选取所需集群/数据存储复选框。
注意必须选取 为所有集群收集 方可从云提供者,比如红帽 OpenStack 或者 Amazon EC2 中收集容量和利用率数据。
- 点击 保存。
如要要让瓶颈报告正常工作,还需为相关后端提供者启用容量和利用率报告的数据收集。为 Red Hat Enterprise Virtualization 和 Red Hat Enterprise Linux OpenStack Platform 提供者启用数据收集的详情请查看以下文档:
- Red Hat Enterprise Virtualization:第 3.3 节 “Data Collection for Red Hat Enterprise Virtualization 3.3 和 3.4”
- Red Hat Enterprise Linux OpenStack Platform:第 3.5 节 “Data Collection for Red Hat Enterprise Linux OpenStack Platform”
报告每日瓶颈数据,在所需间隔开始及结束点的不完整日期(午夜至午夜少于 24 个小时点的日期)除外。少于 24 个小时点的日期数据可能会不准确,并可能破坏趋势线。因此,至少有一个完整的午夜至午夜按小时记录的数据,以便在 优化 标签中显示瓶颈图表。
3.11.2. 查看瓶颈概述
要找出更多瓶颈容量或利用率,请查看瓶颈概述。
- 导航至 → 。
- 如果还没有选择,则请点击 概述。
- 展开左侧的树,直到可以看到所需提供者、集群或数据存储。
- 点击该项目。
在 选项 部分更改该数据特性。
- 使用 事件组 选择是要查看容量还是使用瓶颈,还是两项都要查看。
查看 时区。
数据已处理,并出现时间线。点击时间线上的图标查看瓶颈的具体信息。
3.11.3. 查看瓶颈趋势报告
- 导航至 → 。
- 点击报告。
- 展开左侧的树,直到可以看到所需提供者、集群或数据存储。
- 点击该项目。
使用 选项 部分更改该数据特征。
- 使用 事件组 选择是要查看容量还是使用瓶颈,还是两项都要查看。
- 查看 时区。
- 展开左侧的树,直到可以看到需要为其提供趋势的企业、提供者或数据存储。
