OpenStack¼ò½é£ºOpenStackÊÇÖ¼ÔÚΪ¹«Óм°Ë½ÓÐÔÆµÄ½¨ÉèÓë¹ÜÀíÌṩÈí¼þµÄÒ»¸ö¿ªÔ´ÏîÄ¿£¬²ÉÓÃApacheÊÚȨÐÒ飬ËüµÄºËÐÄÈÎÎñÊǼò»¯ÔÆÏµÍ³µÄ²¿Êð¹ý³Ì£¬²¢ÇÒ¸³ÓèÆäÁ¼ºÃµÄ¿ÉÀ©Õ¹ÐԺͿɹÜÀíÐÔ¡£ËüÒѾÔÚµ±Ç°µÄ»ù´¡ÉèÊ©¼´·þÎñ(IaaS)×ÊÔ´¹ÜÀíÁìÓòÕ¼¾ÝÁìµ¼µØÎ»£¬³ÉΪ¹«ÓÐÔÆ¡¢Ë½ÓÐÔÆ¼°»ìºÏÔÆ¹ÜÀíµÄ¡°ÔƲÙ×÷ϵͳ¡±ÊÂʵÉϵıê×¼£¬ÔÚÕþ¸®¡¢µçÐÅ¡¢½ðÈÚ¡¢ÖÆÔì¡¢ÄÜÔ´¡¢ÁãÊÛ¡¢Ò½ÁÆ¡¢½»Í¨µÈÐÐÒµ³ÉΪÆóÒµ´´ÐµÄÀûÆ÷¡£OpenStack»ùÓÚ¿ª·ÅµÄ¼Ü¹¹£¬Ö§³Ö¶àÖÖÖ÷Á÷µÄÐéÄ⻯¼¼Êõ£¬Ðí¶àÖØÁ¿¼¶µÄ¿Æ¼¼¹«Ë¾ÈçRedHat£¬AT&T£¬IBM£¬HP£¬SUSE£¬Intel£¬AMD£¬Cisco£¬Microsoft£¬Citrix£¬DellµÈ²ÎÓë¹±Ï×Éè¼ÆºÍʵÏÖ£¬¸ü¼ÓÍÆ¶¯ÁËOpenStackµÄ¸ßËٳɳ¤£¬
´òÆÆÁËAmazonµÈÉÙÊý¹«Ë¾ÔÚÊг¡ÉÏ¢¶ÏµÄ¾ÖÃæ£¬½â¾öÁËÔÆ·þÎñ±»µ¥Ò»³§Ḛ́󶨵ÄÎÊÌâ²¢½µµÍÁËÔÆÆ½Ì¨²¿Êð³É±¾¡£
OpenStack×ÊÔ´µ÷¶ÈºÍÓÅ»¯ÏÖ×´
OpenStackµÄÐéÄâ»úµ÷¶È²ßÂÔÖ÷ÒªÊÇÓÉFilterSchedulerºÍChanceSchedulerʵÏֵ쬯äÖÐFilterScheduler×÷ΪĬÈϵĵ÷¶ÈÒýÇæÊµÏÖÁË»ùÓÚÖ÷»ú¹ýÂË(filtering)ºÍȨֵ¼ÆËã(weighing)µÄµ÷¶ÈËã·¨£¬¶øChanceSchedulerÔòÊÇ»ùÓÚËæ»úËã·¨À´Ñ¡Ôñ¿ÉÓÃÖ÷»úµÄ¼òµ¥µ÷¶ÈÒýÇæ¡£Èçͼ1ÊÇFilterSchedulerµÄÐéÄâ»úµ÷¶È¹ý³Ì£¬ËüÖ§³Ö¶àÖÖbuilt-inµÄfilterºÍweigherÀ´Âú×ãһЩ³£¼ûµÄÒµÎñ³¡¾°¡£ÔÚÉè¼ÆÉÏ£¬OpenStack»ùÓÚfilterºÍweigherÖ§³ÖµÚÈý·½À©Õ¹£¬Òò´ËÓû§¿ÉÒÔͨ¹ý×Ô¶¨ÒåfilterºÍweigher£¬»òÕßʹÓÃjson×ÊÔ´Ñ¡Ôñ±í´ïʽÀ´Ó°ÏìÐéÄâ»úµÄµ÷¶È²ßÂÔ´Ó¶øÂú×㲻ͬµÄÒµÎñÐèÇó¡£

¡¡¡¡Í¼ 1£ºOpenStackµ÷¶Èworkflow
Built-inµÄfilter(²¿·Ö)£º
ComputeFilter¹ýÂ˼ÆËã½Úµãdown»úµÄÖ÷»ú
CoreFilter¹ýÂËvcpu²»Âú×ãÐéÄâ»úÇëÇóµÄÖ÷»ú
DiskFilter¹ýÂËdisk²»Âú×ãÐéÄâ»úÇëÇóµÄÖ÷»ú
RamFilter¹ýÂËram²»Âú×ãÐéÄâ»úÇëÇóµÄÖ÷»ú
ImagePropertiesFilter¹ýÂË architecture,
hypervisor type²»Âú×ãÐéÄâ»úÇëÇóµÄÖ÷»ú
SameHostFilter¹ýÂ˺ÍÖ¸¶¨ÐéÄâ»ú²»ÔÚͬһ¸öÖ÷»úÉϵÄÖ÷»ú
DifferentHostFilter¹ýÂ˺ÍÖ¸¶¨ÐéÄâ»úÔÚͬһ¸öÖ÷»úÉϵÄÖ÷»ú
JsonFilter¹ýÂ˲»Âú×ãOpenStack×Ô¶¨ÒåµÄjson×ÊÔ´Ñ¡Ôñ±í´ïʽµÄÖ÷»ú£ºjson×ÊÔ´Ñ¡Ôñ±í´ïʽÐÎÈç
query=¡¯[¡°>¡±, ¡°$cpus¡±,4]¡¯±íʾ¹ýÂ˵ôcpusСÓÚµÈÓÚ4µÄÖ÷»ú
Built-inµÄweigher(²¿·Ö)£º
RAMWeigher¸ù¾ÝÖ÷»úµÄ¿ÉÓÃramÅÅÐò
IoOpsWeigher¸ù¾ÝÖ÷»úµÄio¸ºÔØÅÅÐò
ÔÚÒ»¸ö¸´ÔÓµÄÔÆÏµÍ³ÖУ¬¶ÔÔÆ¼ÆËã×ÊÔ´µÄ¼à¿ØºÍÓÅ»¯¶ÔÓÚ±£Ö¤ÔÆÏµÍ³µÄ½¡¿µÔËÐУ¬Ìá¸ßIT¹ÜÀíµÄЧÂÊÓÐÖØÒªµÄ×÷Óá£×îа汾µÄOpenStackҲûÓÐÌṩÀàËÆµÄ¹¦ÄÜ£¬Õâ¿ÉÄÜÊÇÓÉÓÚÔÆÏµÍ³µÄ¼à¿ØµÄ¶ÔÏóºÍÓÅ»¯Ä¿±ê¶ÔÓÚ²»Í¬µÄÓû§Óв»Í¬µÄÒªÇó£¬ÄÑÓÚÐγÉͳһʵÏֺͼܹ¹£¬µ«ÊÇOpenStackÒѾÒâʶµ½Õⲿ·ÖµÄÖØÒªÐÔ²¢ÇÒÆô¶¯ÁË2¸öÏîÄ¿À´ÃÖ²¹Õâ¸ö¶Ì°å£¬µ±Ç°ËüÃǶ¼´¦ÓÚ·õ»¯½×¶Î£º
Watcher(https://github.com/openstack/watcher)£ºÒ»¸öÁé»îµÄ¡¢¿ÉÉìËõµÄ¶à×â»§OpenStack-basedÔÆ×ÊÔ´ÓÅ»¯·þÎñ£¬Í¨¹ýÖÇÄܵÄÐéÄâ»úÇ¨ÒÆ²ßÂÔÀ´¼õÉÙÊý¾ÝÖÐÐĵÄÔËÓª³É±¾ºÍÔö¼ÓÄÜÔ´µÄÀûÓÃÂÊ¡£
Congress(https://github.com/openstack/congress)£ºÒ»¸ö»ùÓÚÒì¹¹ÔÆ»·¾³µÄ²ßÂÔÉùÃ÷¡¢¼à¿Ø£¬ÊµÊ©£¬Éó¼ÆµÄ¿ò¼Ü¡£
PRS¼ò½é
ÓÉÓÚOpenStack¿ªÔ´µÄÌØÐÔ£¬Ö±½ÓͶÈëÉÌҵʹÓÿÉÄÜÃæÁÙºóÆÚÉý¼¶£¬Î¬»¤£¬¶¨ÖÆ»¯ÐèÇóÎÞ·¨ÍƽøµÄÎÊÌ⣬Òò´ËһЩÓм¼ÊõʵÁ¦µÄ¹«Ë¾¶¼»ùÓÚOpenStack¿ª·¢ÁË×Ô¼ºÉÌÒµ»¯µÄ°æ±¾£¬ÕâЩÉÌÒµ»¯°æ±¾µÄOpenStack¶¼°üº¬ÁËһЩ¶ÀÓеÄÌØÐÔ²¢ºÍÉçÇø¿ªÔ´µÄOpenStackÐγÉÁ˲îÒ컯,
±ÈÈçÍêÉÆÁËOpenStackÐéÄâ»úµÄµ÷¶ÈºÍ±àÅŹ¦ÄÜ£¬¼ÓÇ¿ÁËÔÆÏµÍ³µÄÔËÐÐʱ¼à¿ØºÍÓÅ»¯£¬ÃÖ²¹ÁËÔÆÏµÍ³×Ô¶¯»¯ÔÖÄѻָ´µÄ¿Õȱ£¬¼ò»¯ÁËÔÆÏµÍ³µÄ°²×°ºÍ²¿Êð£¬ÒýÈëÁË»ùÓÚ×ÊԴʹÓÃʱ³¤µÄÕÊÎñ·ÑÓÃϵͳµÈµÈ¡£PRS(Platform
Resource Scheduler)ÊÇIBM Platform Computing¹«Ë¾µÄ»ùÓÚOpenStackµÄÉÌÒµ»¯×ÊÔ´µ÷¶È£¬±àÅźÍÓÅ»¯µÄÒýÇæ£¬Ëü»ùÓÚ¶ÔÔÆ¼ÆËã×ÊÔ´µÄ³éÏóºÍÔ¤Ïȶ¨ÒåµÄµ÷¶ÈºÍÓÅ»¯²ßÂÔ£¬ÎªÐéÄâ»úµÄ·ÅÖö¯Ì¬µØ·ÖÅäºÍƽºâ¼ÆËãÈÝÁ¿£¬²¢ÇÒ²»¼ä¶ÏµØ¼à¿ØÖ÷»úµÄ½¡¿µ×´¿ö£¬Ìá¸ßÁËÖ÷»úµÄÀûÓÃÂʲ¢±£³ÖÓû§ÒµÎñµÄ³ÖÐøÐÔºÍÎȶ¨ÐÔ£¬½µµÍIT¹ÜÀí³É±¾¡£PRS²ÉÓÿɲå°ÎʽµÄÎÞÇÖÈëÉè¼Æ,100%¼æÈÝOpenStack
API, ²¢ÇÒ¶ÔÍâÌṩ±ê×¼µÄ½Ó¿Ú£¬·½±ãÓû§½øÐжþ´Î¿ª·¢£¬ÒÔÂú×㲻ͬÓû§µÄÒµÎñÐèÇó¡£±¾ÎĽ«»á´ÓÐéÄâ»ú³õʼµ÷¶È²ßÂÔ£¬ÊµÊ±¼à¿ØºÍÓÅ»¯²ßÂÔ£¬Óû§×Ô¶¨ÒåOpenStack
Filter£¬ÐéÄâ»úµ÷¶Èʧ°ÜµÄTrouble Shooting ReportºÍ»ùÓÚÍØÆË½á¹¹µ÷¶ÈµÈ·½Ãæ¸ÅÀ¨½éÉÜPRSµÄÖ÷Òª¹¦ÄܺÍʹÓó¡¾°£¬Ö®ºó½«ÓÐһϵÁÐÎÄÕ¶Ôÿ¸öÖ÷ÌâÕ¹¿ªÉîÈë½éÉÜ¡£
ÐéÄâ»ú³õʼµ÷¶È²ßÂÔ
ÐéÄâ»úµÄ³õʼ·ÅÖòßÂÔÖ¸µÄÊÇÓû§¸ù¾ÝÐéÄâ»ú¶Ô×ÊÔ´µÄÒªÇó¾ö¶¨ÐéÄâ»ú¾¿¾¹Ó¦¸Ã´´½¨ÔÚÄÄÖÖÀàÐ͵ÄÖ÷»úÉÏ£¬ÕâÖÖ×ÊÔ´ÒªÇó¾ÍÊÇÒ»Ð©Ô¼ÊøÌõ¼þ»òÕß²ßÂÔ¡£ÀýÈ磬Óû§µÄÐéÄâ»úÐèҪѡÔñCPU»òÕßÄÚ´æ´óСÂú×ãÒ»¶¨ÒªÇóµÄÖ÷»úÈ¥·ÅÖã¬ÐéÄâ»úÊÇÐèÒª·ÅÖÃÔÚ±±¾©µÄÊý¾ÝÖÐÐÄ»¹ÊÇÎ÷°²µÄÊý¾ÝÖÐÐÄ£¬¼¸¸öÐéÄâ»úÊÇ·ÅÔÚÏàͬµÄÖ÷»úÉÏ»¹ÊÇ·ÅÖÃÔÚ²»Í¬µÄÖ÷»úÉϵȵȡ£ÔÉúOpenStackµ÷¶È¿ò¼ÜÔÚÁé»îµÄÖ§³ÖµÚÈý·½µÄfilterºÍweigherµÄͬʱҲɥʧÁ˶Ե÷¶È²ßÂÔµÄͳһÅäÖú͹ÜÀí£¬µ±Ç°PRSÖ§³ÖÈçͼ2µÄ³õʼ·ÅÖòßÂÔ£¬²¢ÇÒ¿ÉÒÔÔÚÔËÐÐʱ¶¯Ì¬µÄÐ޸ķÅÖòßÂÔ¡£

ͼ2£ºÐéÄâ»ú³õʼ·ÅÖòßÂÔ
Packing£º ÐéÄâ»ú¾¡Á¿·ÅÖÃÔÚº¬ÓÐÐéÄâ»úÊýÁ¿×î¶àµÄÖ÷»úÉÏ
Stripping: ÐéÄâ»ú¾¡Á¿·ÅÖÃÔÚº¬ÓÐÐéÄâ»úÊýÁ¿×îÉÙµÄÖ÷»úÉÏ
CPU load balance£ºÐéÄâ»ú¾¡Á¿·ÅÔÚ¿ÉÓÃcore×î¶àµÄÖ÷»úÉÏ
Memory load balance£ºÐéÄâ»ú¾¡Á¿·ÅÔÚ¿ÉÓÃmemory
×î¶àµÄÖ÷»úÉÏ
Affinity : ¶à¸öÐéÄâ»úÐèÒª·ÅÖÃÔÚÏàͬµÄÖ÷»úÉÏ
AntiAffinity: ¶à¸öÐéÄâ»úÐèÒª·ÅÔÚÔÚ²»Í¬µÄÖ÷»úÉÏ
CPU Utilization load balance£ºÐéÄâ»ú¾¡Á¿·ÅÔÚCPUÀûÓÃÂÊ×îµÍµÄÖ÷»úÉÏ
ʵʱ¼à¿ØºÍÓÅ»¯²ßÂÔ
Ëæ×ÅOpenStackÔÆÏµÍ³µÄ³ÖÐøÔËÐУ¬ÔÆÏµÍ³ÖеļÆËã×ÊÔ´ÓÉÓÚÐéÄâ»úµÄ·ÅÖûá²úÉúË鯬»ò·ÖÅä²»¾ù£¬ÐéÄâ»úµÄÔËÐÐЧÂÊÓÉÓÚÖ÷»úload¹ýÔØ¶ø½µµÍ£¬Ö÷»úµÄdown»ú»áÔì³ÉÓû§Ó¦ÓóÌÐòÎÞ·¨Ê¹ÓõÈһϵÁÐÎÊÌâ¡£
Óû§¿ÉÒÔͨ¹ýÈ˹¤¸ÉÔ¤µÄ·½Ê½À´ÅųýÕâЩÎÊÌâ. ÀýÈçÓû§¿ÉÒÔ½«load±È½Ï¸ßµÄÖ÷»úÉϵÄÐéÄâ»úmigrateµ½ÆäËûÖ÷»úÉÏÀ´½µµÍ¸ÃÖ÷»úµÄload£¬Í¨¹ýrebuildÐéÄâ»ú´ÓdownµôµÄÖ÷»úÉϵ½ÆäËü¿ÉÓÃÖ÷»úÉϽâ¾öÓû§Ó¦ÓóÌÐò¸ß¿ÉÓÃÐÔµÄÎÊÌ⣬µ«ÕâÐèÒªÏûºÄ´óÁ¿µÄITά»¤³É±¾£¬²¢ÇÒÒýÈë¸ü¶àµÄÈËΪµÄ·çÏÕ¡£PRSÕë¶ÔÕâЩÎÊÌâÌṩÁËÈçͼ3µÄÁ½ÖÖÀàÐ͵ÄÔËÐÐʱ²ßÂÔÀ´³ÖÐøµÄ¼à¿ØºÍÓÅ»¯ÔÆÏµÍ³¡£

ͼ 3£º¼à¿ØºÍÓÅ»¯²ßÂÔ
»ùÓÚÐéÄâ»úµÄHA²ßÂÔ£ºµ±Ö÷»údown»úºó£¬Ö÷»úÉÏÔËÐеÄÐéÄâ»ú»á×Ô¶¯rebuildµ½ÐµĿÉÓÃÖ÷»úÉÏ
»ùÓÚÖ÷»úµÄLoad Balance²ßÂÔ £ºÖ§³ÖPacking/Stripping/CPU
load balance/Memory load balance/CPU Utilization load
balance²ßÂÔ£¬¸ù¾ÝÓû§ÉèÖõÄãÐÖµ³ÖÐø²»¶ÏµÄƽºâϵͳÖÐÖ÷»úÉϵļÆËã×ÊÔ´
Óû§¿ÉÒÔ¸ù¾ÝÒµÎñÐèÒª¶¨ÒåÏàÓ¦µÄÓÅ»¯²ßÂÔ¼à¿ØÖ÷»úµÄ½¡¿µ×´¿ö²¢½øÐгÖÐø²»¶ÏµÄÓÅ»¯¡£ÀýÈ磬Óû§¶¨ÒåµÄ¼¯ÈºÖÐÖ÷»úÔËÐÐʱ¼à¿ØLoad
Balance²ßÂÔÊÇ CPU Utilization Load Balance£¬²¢ÇÒãÐÖµÊÇ70%£¬ Õâ¾ÍÒâζ×ŵ±Ö÷»úµÄCPUÀûÓÃÂʳ¬¹ý70%µÄʱºò£¬Õâ¸öÖ÷»úÉϵÄÐéÄâ»ú»á±»PRSÔÚÏßÇ¨ÒÆµ½±ðµÄCPU
ÀûÓÃÂÊСÓÚ70%µÄÖ÷»úÉÏ£¬´Ó¶ø±£Ö¤¸ÃÖ÷»úʼÖÕ´¦ÓÚ½¡¿µµÄ״̬£¬²¢ÇÒÆ½ºâÁ˼¯ÈºÖÐÖ÷»úµÄ¼ÆËã×ÊÔ´¡£ÕâÁ½ÖÖÔËÐÐʱ¼à¿Ø²ßÂÔ¿ÉÒÔͬʱÔËÐв¢ÇÒ¿ÉÒÔÖ¸¶¨¼à¿ØµÄ·¶Î§£º
Õû¸ö¼¯Èº£º¼à¿ØµÄ²ßÂÔ×÷ÓÃÓÚÕû¸ö¼¯ÈºÖÐËùÓеÄÖ÷»ú
Host aggregation£ºhost aggregationÊÇOpenStack¶ÔһȺ¾ßÓÐÏàͬÖ÷»úÊôÐÔµÄÒ»¸öÂß¼»®·Ö£¬ÕâÑùÓû§¿ÉÒÔ¸ù¾ÝÒµÎñÐèÇó¶Ô²»Í¬µÄhost
aggregation¶¨Ò岻ͬLoad Balance²ßÂÔ£¬ÀýÈç¶Ô aggregation 1 Ó¦ÓÃPacking²ßÂÔ£¬
¶Ô aggregation 2Ó¦ÓÃStripping²ßÂÔ¡£
Óû§×Ô¶¨ÒåOpenStack Filter
OpenStack¶ÔÐéÄâ»úµÄµ÷¶ÈÊÇ»ùÓÚ¶ÔÖ÷»úµÄ¹ýÂ˺ÍȨֵ¼ÆË㣬PRSҲʵÏÖÁËÏàͬµÄ¹¦ÄÜ£¬²¢ÇÒΪÌṩÁ˸ü¼ÓÓÅÑŵĽӿڷ½±ãÓû§¶¨Òå³ö¸´ÔÓµÄfilterÁ´£¬²¢ÇÒÅäºÏʹÓÃÐéÄâ»ú³õʼµ÷¶È²ßÂÔ´Ó¶ø¶¯Ì¬µÄ½«Óû§×Ô¶¨ÒåµÄÐéÄâ»ú·ÅÖòßÂÔ²åÈëµ½ÐéÄâ»úµÄµ÷¶È¹ý³ÌÖÐÈ¥Âú×ãÒµÎñµÄÐèÇó£º
PRS filterÖ§³Ö¶¨Òåworking scope£ºOpenStackÔÉúµÄfilter»áĬÈÏ×÷ÓÃÓÚÐéÄâ»úµ÷¶ÈµÄÕû¸öÉúÃüÖÜÆÚ£¬±ÈÈç
create, live migrate, cold migrate, resizeµÈ¡£¶øPRSΪfilter¶¨ÒåÁËworking
scope, ÕâÑù¿ÉÒÔʵÏÖÈÃijЩfilterÔÚcreateÐéÄâ»úµÄʱºòÉúЧ£¬Ä³Ð©filterÔÚÐéÄâ»úmigrateµÄʱºòÉúЧ£¬²¢ÇÒ»¹Ö§³ÖÈÃÒ»¸öfilter¹¤×÷ÔÚ¶à¸öworking
scope.
PRS filterÖ§³Ö¶¨Òåinclude hostsºÍexclude
hosts£ºÓû§¿ÉÒÔÖ±½ÓÔÚfilterÖÐΪÐéÄâ»úÖ¸¶¨ÐèÒªÅųýµÄÖ÷»úÁбí»òÕßÐèÒª·ÅÖõÄÖ÷»úÁбí
PRS filterÖ§³Ö¶¨ÒåPRS×ÊÔ´²éѯÌõ¼þ£ºÓû§Ò²¿ÉÒÔÔÚfilterÖж¨ÒåPRS×ÊÔ´²éѯÌõ¼þ£¬Ö±½ÓÑ¡ÔñÌõ¼þ¾ß±¸×¡Ö÷»úÁÐ±í£¬ÀýÈç
select(vcpu>2 && memSize>1024)

ͼ 4£ºPRS filter workflow
ÐéÄâ»úµ÷¶Èʧ°ÜTrouble Shooting Report
µ±ÐéÄâ»ú´´½¨Ê§°Ü´¦ÓÚErrorµÄʱºò£¬ÔÆÏµÍ³Ó¦¸ÃÌṩ×ã¹»µÄÄÜÁ¦·½±ã¹ÜÀíÔ±trouble
shooting£¬´Ó¶ø¾¡¿ìÅųý´íÎó²¢±£Ö¤ÔÆÏµÍ³Õý³£ÔËÐС£Ôì³ÉÐéÄâ»ú²¿Êðʧ°ÜµÄÔÒòÖ÷ÒªÓÐ2ÖÖ£ºµÚÒ»ÖÖÊǵ÷¶Èʧ°Ü£¬Ã»ÓÐ×ã¹»µÄ¼ÆËã×ÊÔ´»òÕߺÏÊʵÄÖ÷»úÂú×ãÐéÄâ»úÐéÄâ»úµÄÇëÇó¡£
µÚ¶þÖÖÊǵ÷¶È³É¹¦£¬µ«ÊÇÔÚ¼ÆËã½ÚµãÉϲ¿ÊðÐéÄâ»úµÄʱºòʧ°Ü£¬ÔÒòÊǶàÖÖ¶àÑùµÄ£¬±ÈÈçLibvirt´íÎó£¬imageÀàÐÍ´íÎó,
´´½¨ÐéÄâ»úÍøÂçʧ°ÜµÈ¡£µ±Ç°µÄOpenStackÐéÄâ»úµÄTrouble Shooting»úÖÆ²»Äܹ»ÇåÎú·´Ó³ÎÊÌâµÄÔÒò£¬ÐèÒª¹ÜÀíÔ±´óÁ¿µÄ·ÖÎö¹¤×÷£¬ÕâÎÞÒÉÔö¼ÓÁËÅųýÎÊÌâµÄÄѶȺÍʱ¼ä£º
¶ÔÓÚÐéÄâ»úµ÷¶Èʧ°Ü£¬OpenStackÖ»Ìṩ NoValidHostµÄ´íÎóÒì³£À´±íÃ÷ûÓпÉÓõÄ×ÊÔ´£¬Óû§ÎÞ·¨Í¨¹ýCLI(nova
show $vm_uuid) µÃµ½ÊÇÄĸöfilterµÄÔ¼ÊøÌõ¼þÔì³Éµ÷¶Èʧ°Ü¡£
¶ÔÓÚ²¿Êðʧ°Ü£¬¹ÜÀíÔ±ÐèÒªSSHµ½Ê§°ÜµÄ¼ÆËã½ÚµãÈ¥¼ì²éÈÕÖ¾Îļþ·ÖÎöʧ°ÜÔÒò
PRSÌṩÁËtrouble shooting report ͳһµÄÊÓͼÏÔʾÐéÄâ»úÕû¸öÉúÃüÖÜÆÚ(create/migrate/resize/µÈ)²Ù×÷ʧ°ÜµÄÔÒòÈçͼ5£¬ÐéÄâ»útest_vmÔÚµÚÒ»´Î´´½¨µÄʱºòÓÉÓÚûÓÐ×ã¹»µÄ¼ÆËã×ÊÔ´»òÕߺÏÊʵÄÖ÷»ú¶øÊ§°Ü(¡°Error
Message¡±Ñ¡ÏîÓÐʧ°ÜÔÒò£¬¡±Deployed Host¡±Îª¿ÕµÄÁбí)¡£ÓÉtrouble shooting
reportµÄ¡°Available Hosts¡±Ñ¡Ïî¿ÉÒÔÖªµÀϵͳÖÐÓÐ4̨Ö÷»ú£¬ÂÌÉ«µÄ·½¿ò±íʾϵͳÖÐÿһ¸öfillterµÄ×ÊÔ´ÒªÇóºÍÂú×ã×ÊÔ´ÒªÇóµÄÖ÷»úÁÐ±í¡£×îÖÕÑ¡ÔñµÄÖ÷»úÓ¦¸Ã±»°üº¬ÔÚËùÓÐfilterÖ÷»úÁбíÖС£ÓÉComputeFilterÑ¡ÔñµÄÖ÷»úÁÐ±í²»°üº¬Ö÷»ú¡°my-comp3¡±£¬¿ÉÒԵôËÖ÷»úµÄnov-compute
service¿ÉÄܱ»¹Ø±Õ£¬ÓÉDiskFilterµÄÖ÷»úÁÐ±í²»°üº¬¡°my-comp1¡±ºÍÖ÷»ú¡°my-comp2¡±¿ÉÒÔµÃÖªÕâЩÖ÷»úµÄ¿ÉÓÃdisk×ÊÔ´²»×ã(<1024MB)£¬²¢ÇÒÕâÁ½¸öfilterÑ¡ÔñµÄÖ÷»úûÓн»¼¯£¬Òò´Ëµ÷¶Èʧ°Ü£¬¹ÜÀíÔ±¿ÉÒÔ¸ù¾ÝÕâЩÐÅÏ¢ÄÜÃ÷È·µÄÖªµÀµ÷¶Èʧ°ÜµÄÔÒò´Ó¶øÇáÒ×µÄÅųý´íÎó¡£

ͼ 5£ºTrouble Shooting
Report
»ùÓÚÍØÆË½á¹¹µÄµ÷¶È
OpenStack HeatÊÇÐéÄâ»ú×éµÄ±àÅÅ×é¼þ£¬Ëü±¾ÉíûÓе÷¶ÈÄ£¿é£¬Ëü»ùÓÚNovaµÄFilterScheduler×÷Ϊµ÷¶ÈµÄÒýÇæ¶ÔÒ»×é»ò¶à×éÐéÄâ»ú½øÐÐÖ÷»ú¼¶±ðµÄ±âƽ»¯µ÷¶ÈºÍ±àÅÅ£¬µ«ÕâÖÖµ÷¶ÈÄ£ÐÍÿ´ÎÖ»ÄÜ´¦ÀíÒ»¸öÐéÄâ»úÇëÇ󣬵±²¿Êð¶à¸öÐéÄâ»úµÄʱºò£¬Ëü²»Äܸù¾Ý×ÊÔ´ÇëÇó½øÐÐͳһµÄµ÷¶ÈºÍ»ØËÝ£¬½«»áÔì³Éµ÷¶È½á¹û²»×¼È·¡£
PRS²»µ«Ö§³ÖÖ÷»ú¼¶±ðµÄ±âƽ»¯µ÷¶È£¬»¹Ö§³Ö¶ÔÒ»×éͬ¹¹ÐéÄâ»úÄÚ²¿»òÕßÒ»×éÐéÄâ»úºÍÁíÒ»×éÐéÄâ»úÔÚÒ»¸öÊ÷ÐÎÍØÆË½á¹¹ÉÏ(Region£¬Zone£¬Rack£¬Host)ÉϽøÐÐÕûÌåµ÷¶È¡£»ùÓÚÍØÆË½á¹¹µÄ¶à¸öÐéÄâÕûÌåµ÷¶È¿ÉÒԵõ½Ò»Ð©ÏÔ¶øÒ×¼ûµÄºÃ´¦£¬±ÈÈçÔÚ²¿ÊðµÄʱºòΪÁËÍØÆË½á¹¹Éϲ㼶֮¼ä»òÐéÄâ»úÖ®¼ä»ñµÃ¸üºÃµÄͨÐÅÐÔÄÜ¿ÉÒÔÑ¡ÔñAffinityµÄ²ßÂÔ,ΪÁË»ñµÃÍØÆË½á¹¹Éϲ㼶֮¼ä»òÐéÄâ»úÖ®¼äµÄ¸ß¿ÉÓÃÐÔ£¬¿ÉÒÔÑ¡ÔñAnti-Affinity²ßÂÔ¡£PRSͨ¹ýºÍHeatµÄÉî¶È¼¯³ÉʵÏÖÁË»ùÓÚÍØÆË½á¹¹µÄÕûÌåµ÷¶È¡£ÐµÄHeat×ÊÔ´ÀàÐÍIBM::Policy::GroupÓÃÀ´ÃèÊöÕâÖÖÒ»×é»ò¶à×éÐéÄâ»úÔÚÒ»¸öÊ÷ÐεÄÍØÆË½á¹¹ÉϵIJ¿ÊðÐèÇó¡£
Affinity£ºÓÃÀ´ÃèÊöÒ»×éÐéÄâ»úÄÚ²¿µÄÔÚÖ¸¶¨µÄÍØÆË½á¹¹²ã¼¶ÉÏÊÇAffinityµÄ»òÕßÒ»×éÐéÄâ»úºÍÁíÒ»×éÐéÄâ»úÔÚÖ¸¶¨µÄÍØÆË½á¹¹²ã¼¶ÉÏÊÇAffinityµÄ¡£
Anti-Affinity£ºÓÃÀ´ÃèÊöÒ»×éÐéÄâ»úÄÚ²¿µÄÔÚÖ¸¶¨µÄÍØÆË½á¹¹²ã¼¶ÉÏÊÇAnti-AffinityµÄ»òÕßÒ»×éÐéÄâ»úºÍÁíÒ»×éÐéÄâ»úÔÚÖ¸¶¨µÄÍØÆË½á¹¹²ã¼¶ÉÏÊÇAnti-AffinityµÄ¡£
MaxResourceLostPerNodeFailure£ºÓÃÀ´ÃèÊöµ±ÍØÆË½á¹¹Ö¸¶¨²ã¼¶·¢Éúµ¥µã¹ÊÕÏʱ£¬Óû§µÄÒ»×éÐéÄâ»úÔÚÕâ¸ö²ã¼¶ÉϵÄËðʧÂʲ»ÄܸßÓÚÒ»¸öãÐÖµ
°¸Àý1£ºÈçͼ6£¬Óû§¶¨ÒåÁË2¸öauto scaling group tier1ºÍtier2,
ÿ¸ötier¶¼ÐèÒª2¸öÐéÄâ»ú£¬ÆäÖÐtier1ÐèÒªÐéÄâ»úÔÚrack½ÚµãÉÏAnti-Affinity£¬tier2ÐèÒªÐéÄâ»úÔÚrack½ÚµãÉÏAffinity£¬²¢ÇÒtier1ºÍtier2ÉϵÄÐéÄâ»úÖ®¼äÐèÒªÂú×ãAffinity.
Õâ¸ö³¡¾°ÀàËÆÓÚÔÚÉú²ú»·¾³Éϲ¿Êð2×éweb application, ÒªÇóÔËÐÐdatabaseµÄÐéÄâ»ú(tier1)ºÍÔËÐÐwebµÄÐéÄâ»ú(tier2)ÔÚÏàͬµÄÖ÷»úÉÏ(·½±ãweb·þÎñÆ÷ºÍdatabase·þÎñÆ÷ͨÐÅ)£¬²¢ÇÒ2¸öÔËÐÐdatabaseµÄÐéÄâ»ú(tier1)ºÍ2ÔËÐÐwebµÄÐéÄâ»ú(tier2)²»ÄÜͬʱÔËÐÐÔÚһ̨Ö÷»úÉÏ(rack¼¶±ðÉÏAnti-Affinity,µ£Ðĵ¥rackµ¥µã¹ÊÕÏÔì³ÉËùÓеÄdatabase·þÎñÆ÷»òÕßweb·þÎñÆ÷¶¼²»¿ÉÓÃ)¡£Í¼µÄ×ó±ßÊÇÒ»¸ö²¿ÊðµÄ½á¹û£¬ºìÉ«µÄÐéÄâ»úµÄÊÇweb·þÎñÆ÷tier1£¬»ÆÉ«µÄÐéÄâ»úÊÇdatabase·þÎñÆ÷(tier2),
ÕâÑùhost1ÉϵÄdatabase·þÎñÆ÷Ö±½ÓΪhost1ÉϵÄweb·þÎñÆ÷Ìṩ·þÎñ£¬ host6ÉϵÄdatabase·þÎñÆ÷Ö±½ÓΪhost6ÉϵÄweb·þÎñÆ÷Ìṩ£¬²¢ÇÒrack1»òÕßrack3µÄµ¥µã¹ÊÕÏ£¬²»»áÔì³ÉÓû§web·þÎñµÄÖжϡ£

ͼ6: Affinity/Anti-Affinity²ßÂÔ
°¸Àý2£ºÈçͼ7£¬Óû§¶¨ÒåÁË1¸öauto scaling group tier1£¬
Õâ¸ötier1ÐèÒª4¸öÐéÄâ»ú£¬ÒªÇóµ±zone·¢Éúµ¥µã¹ÊÕϵÄʱºò£¬Óû§µÄ4¸öÐéÄâ»úµÄËðʧÂʲ»ÄÜ´óÓÚ50%¡£Õâ¸ö³¡¾°ÀàËÆÓÚÔÚÉú²ú»·¾³Éϲ¿ÊðÒ»¸öNginx
·þÎñÆ÷¼¯Èº£¬µ±·¢Éú¹ÊÕÏʱ£¬×ÜÓÐÒ»°ëµÄNginx·þÎñÆ÷Äܹ»Õý³£¹¤×÷¡£Í¼µÄ×ó±ßÊÇÒ»¸ö²¿ÊðµÄ½á¹û£¬µ±zon1»òÕßzone2ÖÐÈËÈκÎÒ»¸ö·¢Éú¹ÊÕÏ£¬Óû§µÄÓ¦ÓóÌÐò×î¶àËðʧ2¸öNginx·þÎñÆ÷£¬Âú×ãÓû§µÄÒµÎñÒªÇó£¬ÕâÑùÓû§ÔÚ²¿ÊðµÄʱºò¾Íͨ¹ýÕûÌåÓÅ»¯µÄÐéÄâ»ú·ÅÖòßÂÔʵÏÖÓ¦ÓóÌÐòµÄ¸ß¿ÉÓÃÐÔ¶ø²»±ØµÈ½Úµãʧ°ÜµÄʱºòͨ¹ýPRS
HA²ßÂÔµÄ¼à¿Ø²ßÂÔÍöÑò²¹ÀΡ£

ͼ7: MaxResourceLostPerNodeFailure²ßÂÔ |