ï¼1ï¼å®æ¹ç解éç¸ä¿¡å¤§å®¶é½å·²ç»äºè§£äºï¼ä¸äºè§£ä¹æ²¡æå
³ç³»ãç°å¨ä»å¸¸è¯çè§åº¦æ¥ç»å¤§å®¶è§£éå说æã
OpenStackæ¯ä¸ä¸ªäºå¹³å°ç®¡çç项ç®ï¼å®ä¸æ¯ä¸ä¸ªè½¯ä»¶ãè¿ä¸ªé¡¹ç®ç±å 个主è¦çç»ä»¶ç»åèµ·æ¥å®æä¸äºå
·ä½çå·¥ä½ã
OpenStackæ¯ä¸ä¸ªæ¨å¨ä¸ºå
Œ
±åç§æäºç建设ä¸ç®¡çæä¾è½¯ä»¶çå¼æºé¡¹ç®ï¼OpenStack被å
¬è®¤ä½ä¸ºåºç¡è®¾æ½å³æå¡ï¼ç®ç§°IaaSï¼èµæºçéç¨å端ã
å¦æè¿äºè¿ä¸æç½ï¼é£ä¹ä»å¦å¤çè§åº¦ç»å¤§å®¶ä»ç»ï¼
é¦å
让大家çä¸é¢ä¸¤ä¸ªå¾å°±å¾ç®åæäºäºï¼
æ¤å¾ä¸ºopenstackçç»å½çé¢
ä¸é¢æ¯openstackçä¸ä¸ªç®¡ççé¢
ä»è¿ä¸¤ä¸ªå¾ï¼ç¸ä¿¡æä¸å®å¼åç»éªï¼å°±è½çåºopenstackæ¯ä»ä¹äºãå¯ä»¥è¯´ä»æ¯ä¸ä¸ªæ¡æ¶ï¼çè³å¯ä»¥ä»è½¯ä»¶çè§åº¦æ¥ç解å®ãå¦æä¸æç½ï¼å°±ä»ä¼ ç»å¼åæ¥è®²è§£ãä¸ç¥éä½ æ¯å¦äºè§£oaï¼erpçç³»ç»ï¼å¦æä¸äºè§£å¯ä»¥å°ç½ä¸å»æ¾ï¼èµæä¸å¤§æãä»åoaï¼erpæä»ä¹ä¸åãå¾ç®åå°±æ¯openstackæ¯ç¨åäºè®¡ç®çä¸ä¸ªå¹³å°ï¼æåä¸ä¸ªè§£å³æ¹æ¡ãå®æ¯äºè®¡ç®ä¸ä¸ªéè¦ç»æé¨åã
ä¸é¢å¯¹openstackæäºä¸ä¸ªææ§ç认è¯ã
ï¼2ï¼openstackè½å¹²ä»ä¹ã
大家é½ç¥éé¿éäºå¹³å°ï¼ç¾åº¦äºå¹³å°ï¼èé¿éäºå¹³å°æ®ä¼ 说就æ¯å¯¹openstackçäºæ¬¡å¼åã对äºäºæ¬¡å¼åç¸ä¿¡åªè¦æ¥è§¦è¿è½¯ä»¶çé½ä¼æç½è¿ä¸ªæ¦å¿µãä¸æç½çèªå·±ç½ä¸å»æ¥ä¸ä¸ãä¹å°±æ¯è¯´openstackï¼å¯ä»¥æ建äºå¹³å°ï¼ä»ä¹äºå¹³å°ï¼å
¬æäºï¼ç§æäºãç°å¨ç¾åº¦å¨æèçç§æäºå·¥ç¨å¸ï¼åºè¯¥å°±æ¯è¿æ¹é¢ç人æã
ï¼3ï¼openstackèªèº«é½å
å«ä»ä¹
以ä¸æ¯5个OpenStackçéè¦ææé¨åï¼
l Nova â 计ç®æå¡
l Swift â åå¨æå¡
l Glance â éåæå¡
l Keystone â 认è¯æå¡
l Horizon â UIæå¡
å¾1 OpenStackåºæ¬ææ¶
ä¸å¾å±ç¤ºäºKeystoneãDashboardäºè
ä¸å
¶å®OpenStacké¨åç交äºã
ä¸é¢è¯¦ç»ä»ç»æ¯ä¸ä¸ªæå¡ï¼
ï¼ä¸ï¼OpenStack计ç®è®¾æ½â-Nova Novaæ¯OpenStack计ç®çå¼¹æ§æ§å¶å¨ãOpenStackäºå®ä¾çå½ææéçåç§å¨ä½é½å°ç±Novaè¿è¡å¤çåæ¯æï¼è¿å°±æå³çNova以管çå¹³å°ç身份ç»åºï¼è´è´£ç®¡çæ´ä¸ªäºç计ç®èµæºãç½ç»ãææåæµåº¦ãè½ç¶Novaæ¬èº«å¹¶ä¸æä¾ä»»ä½èæè½åï¼ä½æ¯å®å°ä½¿ç¨libvirt APIä¸èææºç宿主æºè¿è¡äº¤äºãNovaéè¿Webæå¡APIæ¥å¯¹å¤æä¾å¤çæ¥å£ï¼èä¸è¿äºæ¥å£ä¸AmazonçWebæå¡æ¥å£æ¯å
¼å®¹çã
åè½åç¹ç¹
l å®ä¾çå½å¨æ管ç
l 计ç®èµæºç®¡ç
l ç½ç»ä¸ææ管ç
l åºäºRESTçAPI
l å¼æ¥è¿ç»éä¿¡
l æ¯æåç§å®¿ä¸»ï¼XenãXenServer/XCPãKVMãUMLãVMware vSphereåHyper-V
OpenStack计ç®é¨ä»¶
l Novaå¼¹æ§äºå
å«ä»¥ä¸ä¸»è¦é¨åï¼
l API Serverï¼nova-apiï¼
l æ¶æ¯éåï¼rabbit-mq serverï¼
l è¿ç®å·¥ä½ç«ï¼nova-computeï¼
l ç½ç»æ§å¶å¨ï¼nova-networkï¼
l å·ç®¡çï¼nova-volumeï¼
l è°åº¦å¨ï¼nova-schedulerï¼
APIæå¡å¨ï¼nova-apiï¼
APIæå¡å¨æä¾äºäºè®¾æ½ä¸å¤ç交äºçæ¥å£ï¼å®æ¯å¤çç¨æ·å¯¹äºå®æ½ç®¡ççå¯ä¸ééãéè¿ä½¿ç¨webæå¡æ¥è°ç¨åç§EC2çAPIï¼æ¥çAPIæå¡å¨ä¾¿éè¿æ¶æ¯éåæ请æ±éè¾¾è³äºå
ç®æ 设æ½è¿è¡å¤çãä½ä¸ºå¯¹EC2-apiçæ¿ä»£ï¼ç¨æ·ä¹å¯ä»¥ä½¿ç¨OpenStackçåçAPIï¼æ们æå®å«åâOpenStack APIâã
æ¶æ¯éåï¼Rabbit MQ Serverï¼
OpenStackå
é¨å¨éµå¾ªAMQPï¼é«çº§æ¶æ¯éååè®®ï¼çåºç¡ä¸éç¨æ¶æ¯éåè¿è¡éä¿¡ãNova对请æ±åºçè¿è¡å¼æ¥è°ç¨ï¼å½è¯·æ±æ¥æ¶å便åç«å³è§¦åä¸ä¸ªåè°ãç±äºä½¿ç¨äºå¼æ¥éä¿¡ï¼ä¸ä¼æç¨æ·çå¨ä½è¢«é¿ç½®äºçå¾
ç¶æãä¾å¦ï¼å¯å¨ä¸ä¸ªå®ä¾æä¸ä¼ ä¸ä»½éåçè¿ç¨è¾ä¸ºèæ¶ï¼APIè°ç¨å°±å°çå¾
è¿åç»æèä¸å½±åå
¶å®æä½ï¼å¨æ¤å¼æ¥éä¿¡èµ·å°äºå¾å¤§ä½ç¨ï¼ä½¿æ´ä¸ªç³»ç»åå¾æ´å é«æã
è¿ç®å·¥ä½ç«ï¼nova-computeï¼
è¿ç®å·¥ä½ç«ç主è¦ä»»å¡æ¯ç®¡çå®ä¾çæ´ä¸ªçå½å¨æãä»ä»¬éè¿æ¶æ¯éåæ¥æ¶è¯·æ±å¹¶æ§è¡ï¼ä»è对å®ä¾è¿è¡åç§æä½ãå¨å
¸åå®é
ç产ç¯å¢ä¸ï¼ä¼æ¶è®¾è®¸å¤è¿ç®å·¥ä½ç«ï¼æ ¹æ®è°åº¦ç®æ³ï¼ä¸ä¸ªå®ä¾å¯ä»¥å¨å¯ç¨çä»»æä¸å°è¿ç®å·¥ä½ç«ä¸é¨ç½²ã
ç½ç»æ§å¶å¨ï¼nova-networkï¼
ç½ç»æ§å¶å¨å¤ç主æºçç½ç»é
ç½®ï¼ä¾å¦IPå°ååé
ï¼é
置项ç®VLANï¼è®¾å®å®å
¨ç¾¤ç»ä»¥å为计ç®èç¹é
ç½®ç½ç»ã
å·å·¥ä½ç«ï¼nova-volumeï¼
å·å·¥ä½ç«ç®¡çåºäºLVMçå®ä¾å·ï¼å®è½å¤ä¸ºä¸ä¸ªå®ä¾å建ãå é¤ãéå å·ï¼ä¹å¯ä»¥ä»ä¸ä¸ªå®ä¾ä¸å离å·ãå·ç®¡ç为ä½å¦æ¤éè¦ï¼å 为å®æä¾äºä¸ç§ä¿æå®ä¾æç»åå¨çæ段ï¼æ¯å¦å½ç»æä¸ä¸ªå®ä¾åï¼æ ¹ååºå¦ææ¯éæç»åçï¼é£ä¹å¯¹å
¶çä»»ä½æ¹åé½å°ä¸¢å¤±ãå¯æ¯ï¼å¦æä»ä¸ä¸ªå®ä¾ä¸å°å·å离åºæ¥ï¼æè
为è¿ä¸ªå®ä¾éå ä¸å·çè¯ï¼å³ä½¿å®ä¾è¢«å
³éï¼æ°æ®ä»ç¶ä¿åå
¶ä¸ãè¿äºæ°æ®å¯ä»¥éè¿å°å·éå å°åå®ä¾æå
¶ä»å®ä¾çæ¹å¼èéæ°è®¿é®ã
å æ¤ï¼ä¸ºäºæ¥å访é®ï¼éè¦æ°æ®å¡å¿
è¦åå
¥å·ä¸ãè¿ç§åºç¨å¯¹äºæ°æ®æå¡å¨å®ä¾çåå¨èè¨ï¼å°¤ä¸ºéè¦ã
è°åº¦å¨ï¼nova-schedulerï¼
è°åº¦å¨è´è´£ænova-APIè°ç¨éè¾¾ç»ç®æ ãè°åº¦å¨ä»¥å为ânova-scheduleâçå®æ¤è¿ç¨æ¹å¼è¿è¡ï¼å¹¶æ ¹æ®è°åº¦ç®æ³ä»å¯ç¨èµæºæ± ä¸æ°å½å°éæ©è¿ç®æå¡å¨ãæå¾å¤å ç´ é½å¯ä»¥å½±åè°åº¦ç»æï¼æ¯å¦è´è½½ãå
åãåèç¹çè¿è¿ãCPUæ¶æççã强大çæ¯novaè°åº¦å¨éç¨çæ¯å¯æå
¥å¼æ¶æã
ç®ånovaè°åº¦å¨ä½¿ç¨äºå ç§åºæ¬çè°åº¦ç®æ³ï¼
éæºåï¼ä¸»æºéæºéæ©å¯ç¨èç¹ï¼
å¯ç¨åï¼ä¸éæºç¸ä¼¼ï¼åªæ¯éæºéæ©çèå´è¢«æå®ï¼
ç®ååï¼åºç¨è¿ç§æ¹å¼ï¼ä¸»æºéæ©è´è½½æå°è
æ¥è¿è¡å®ä¾ãè´è½½æ°æ®å¯ä»¥ä»å«å¤è·å¾ï¼å¦è´è½½åè¡¡æå¡å¨ã
ï¼äºï¼OpenStackéåæå¡å¨â-GlanceOpenStackéåæå¡å¨æ¯ä¸å¥èææºéååç°ã注åãæ£ç´¢ç³»ç»ï¼æ们å¯ä»¥å°éååå¨å°ä»¥ä¸ä»»æä¸ç§åå¨ä¸ï¼
æ¬å°æ件系ç»ï¼é»è®¤ï¼
l OpenStack对象åå¨
l S3ç´æ¥åå¨
l S3对象åå¨ï¼ä½ä¸ºS3访é®çä¸é´æ¸ éï¼
l HTTPï¼åªè¯»ï¼
åè½åç¹ç¹
æä¾éåç¸å
³æå¡
Glanceæ件
l Glanceæ§å¶å¨
l Glance注åå¨
ï¼ä¸ï¼OpenStackåå¨è®¾æ½â-Swift
Swift为OpenStackæä¾ä¸ç§åå¸å¼ãæç»èæ对象åå¨ï¼å®ç±»ä¼¼äºAmazon Web ServiceçS3ç®ååå¨æå¡ãSwiftå
·æè·¨èç¹ç¾çº§å¯¹è±¡çåå¨è½åãSwiftå
建åä½å失æå¤æ´ç®¡çï¼ä¹è½å¤å¤çå½æ¡£ååªä½æµï¼ç¹å«æ¯å¯¹å¤§æ°æ®ï¼åå
åèï¼å大容éï¼å¤å¯¹è±¡æ°éï¼çæµåº¦é常é«æã
åè½åç¹ç¹
l æµ·é对象åå¨
l 大æ件ï¼å¯¹è±¡ï¼åå¨
l æ°æ®åä½ç®¡ç
l å½æ¡£è½åââå¤ç大æ°æ®é
l 为èææºåäºåºç¨æä¾æ°æ®å®¹å¨
l å¤çæµåªä½
l 对象å®å
¨åå¨
l å¤ä»½ä¸å½æ¡£
l è¯å¥½çå¯ä¼¸ç¼©æ§
Swiftç»ä»¶
l Swiftè´¦æ·
l Swift容å¨
l Swift对象
l Swift代ç
l Swift RING
Swift代çæå¡å¨
ç¨æ·é½æ¯éè¿Swift-APIä¸ä»£çæå¡å¨è¿è¡äº¤äºï¼ä»£çæå¡å¨æ£æ¯æ¥æ¶å¤ç请æ±çé¨å«ï¼å®æ£æµåæ³çå®ä½ä½ç½®å¹¶è·¯ç±å®ä»¬ç请æ±ã
æ¤å¤ï¼ä»£çæå¡å¨ä¹åæ¶å¤çå®ä½å¤±æè转移æ¶ï¼æ
éåæ¢çå®ä½éå¤è·¯ç±è¯·æ±ã
Swift对象æå¡å¨
对象æå¡å¨æ¯ä¸ç§äºè¿å¶åå¨ï¼å®è´è´£å¤çæ¬å°åå¨ä¸ç对象æ°æ®çåå¨ãæ£ç´¢åå é¤ã对象é½æ¯æ件系ç»ä¸åæ¾çå
¸åçäºè¿å¶æ件ï¼å
·ææ©å±æ件å±æ§çå
æ°æ®ï¼xattrï¼ã
注æï¼xattræ ¼å¼è¢«Linuxä¸çext3/4ï¼XFSï¼Btrfsï¼JFSåReiserFSææ¯æï¼ä½æ¯å¹¶æ²¡ææææµè¯è¯æå¨XFSï¼JFSï¼ReiserFSï¼Reiser4åZFSä¸ä¹åæ ·è½è¿è¡è¯å¥½ãä¸è¿ï¼XFS被认为æ¯å½åæ好çéæ©ã
Swift容å¨æå¡å¨
容å¨æå¡å¨å°ååºä¸ä¸ªå®¹å¨ä¸çææ对象ï¼é»è®¤å¯¹è±¡å表å°åå¨ä¸ºSQLiteæ件ï¼è¯è
注ï¼ä¹å¯ä»¥ä¿®æ¹ä¸ºMySQLï¼å®è£
ä¸å°±æ¯ä»¥MySQL为ä¾ï¼ã容å¨æå¡å¨ä¹ä¼ç»è®¡å®¹å¨ä¸å
å«ç对象æ°éå容å¨çåå¨ç©ºé´èè´¹ã
Swiftè´¦æ·æå¡å¨
è´¦æ·æå¡å¨ä¸å®¹å¨æå¡å¨ç±»ä¼¼ï¼å°ååºå®¹å¨ä¸ç对象ã
Ringï¼ç´¢å¼ç¯ï¼
Ring容å¨è®°å½çSwiftä¸ç©çåå¨å¯¹è±¡çä½ç½®ä¿¡æ¯ï¼å®æ¯çå®ç©çåå¨ä½ç½®çå®ä½åçèææ å°ï¼ç±»ä¼¼äºæ¥æ¾åå®ä½ä¸åé群çå®ä½çå®ç©çä½ç½®çç´¢å¼æå¡ãè¿éæè°çå®ä½æè´¦æ·ã容å¨ã对象ï¼å®ä»¬é½æ¥æå±äºèªå·±çä¸åçRingsã
ï¼åï¼OpenStack认è¯æå¡ï¼Keystoneï¼
Keystone为ææçOpenStackç»ä»¶æä¾è®¤è¯å访é®çç¥æå¡ï¼å®ä¾èµèªèº«RESTï¼åºäºIdentity APIï¼ç³»ç»è¿è¡å·¥ä½ï¼ä¸»è¦å¯¹ï¼ä½ä¸éäºï¼SwiftãGlanceãNovaçè¿è¡è®¤è¯ä¸ææãäºå®ä¸ï¼ææéè¿å¯¹å¨ä½æ¶æ¯æ¥æºè
请æ±çåæ³æ§è¿è¡é´å®ãå¦ä¸å¾æ示ï¼
Keystoneéç¨ä¸¤ç§æææ¹å¼ï¼ä¸ç§åºäºç¨æ·å/å¯ç ï¼å¦ä¸ç§åºäºä»¤çï¼Tokenï¼ãé¤æ¤ä¹å¤ï¼Keystoneæä¾ä»¥ä¸ä¸ç§æå¡ï¼
l 令çæå¡ï¼å«æææç¨æ·çææä¿¡æ¯
l ç®å½æå¡ï¼å«æç¨æ·åæ³æä½çå¯ç¨æå¡å表
l çç¥æå¡ï¼å©ç¨Keystoneå
·ä½æå®ç¨æ·æ群ç»æäºè®¿é®æé
认è¯æå¡ç»ä»¶
æå¡å
¥å£ï¼å¦NovaãSwiftåGlanceä¸æ ·æ¯ä¸ªOpenStackæå¡é½æ¥æä¸ä¸ªæå®ç端å£åä¸å±çURLï¼æ们称å
¶ä¸ºå
¥å£ï¼endpointsï¼ã
l åºä½ï¼å¨æ个æ°æ®ä¸å¿ï¼ä¸ä¸ªåºä½å
·ä½æå®äºä¸å¤ç©çä½ç½®ãå¨å
¸åçäºæ¶æä¸ï¼å¦æä¸æ¯ææçæå¡é½è®¿é®åå¸å¼æ°æ®ä¸å¿ææå¡å¨çè¯ï¼åä¹ç§°å
¶ä¸ºåºä½ã
l ç¨æ·ï¼Keystoneææ使ç¨è
è¯è
注ï¼ä»£è¡¨ä¸ä¸ªä¸ªä½ï¼OpenStack以ç¨æ·çå½¢å¼æ¥æææå¡ç»å®ä»¬ãç¨æ·æ¥æè¯ä¹¦ï¼credentialsï¼ï¼ä¸å¯è½åé
ç»ä¸ä¸ªæå¤ä¸ªç§æ·ãç»è¿éªè¯åï¼ä¼ä¸ºæ¯ä¸ªåç¬çç§æ·æä¾ä¸ä¸ªç¹å®ç令çã[æ¥æºï¼
http://blog.sina.com.cn/s/blog_70064f190100undy.html]
l æå¡ï¼æ»ä½èè¨ï¼ä»»ä½éè¿Keystoneè¿è¡è¿æ¥æ管ççç»ä»¶é½è¢«ç§°ä¸ºæå¡ã举个ä¾åï¼æ们å¯ä»¥ç§°Glance为Keystoneçæå¡ã
l è§è²ï¼ä¸ºäºç»´æ¤å®å
¨éå®ï¼å°±äºå
ç¹å®ç¨æ·å¯æ§è¡çæä½èè¨ï¼è¯¥ç¨æ·å
³èçè§è²æ¯é常éè¦çã
è¯è
注ï¼ä¸ä¸ªè§è²æ¯åºç¨äºæ个ç§æ·ç使ç¨æééåï¼ä»¥å
许æ个æå®ç¨æ·è®¿é®æ使ç¨ç¹å®æä½ãè§è²æ¯ä½¿ç¨æéçé»è¾åç»ï¼å®ä½¿å¾éç¨çæéå¯ä»¥ç®åå°åç»å¹¶ç»å®å°ä¸æ个æå®ç§æ·ç¸å
³çç¨æ·ã
l ç§é´ï¼ç§é´æçæ¯å
·æå
¨é¨æå¡å
¥å£å¹¶é
æç¹å®æåè§è²çä¸ä¸ªé¡¹ç®ã
è¯è
注ï¼ä¸ä¸ªç§é´æ å°å°ä¸ä¸ªNovaçâproject-idâï¼å¨å¯¹è±¡åå¨ä¸ï¼ä¸ä¸ªç§é´å¯ä»¥æå¤ä¸ªå®¹å¨ãæ ¹æ®ä¸åçå®è£
æ¹å¼ï¼ä¸ä¸ªç§é´å¯ä»¥ä»£è¡¨ä¸ä¸ªå®¢æ·ãå¸å·ãç»ç»æ项ç®ã
ï¼äºï¼OpenStack管ççWebæ¥å£â-Horizon
Horizonæ¯ä¸ä¸ªç¨ä»¥ç®¡çãæ§å¶OpenStackæå¡çWebæ§å¶é¢æ¿ï¼å®å¯ä»¥ç®¡çå®ä¾ãéåãå建å¯å对ï¼å¯¹å®ä¾æ·»å å·ãæä½Swift容å¨çãé¤æ¤ä¹å¤ï¼ç¨æ·è¿å¯ä»¥å¨æ§å¶é¢æ¿ä¸ä½¿ç¨ç»ç«¯ï¼consoleï¼æVNCç´æ¥è®¿é®å®ä¾ãæ»ä¹ï¼Horizonå
·æå¦ä¸ä¸äºç¹ç¹ï¼
l å®ä¾ç®¡çï¼å建ãç»æ¢å®ä¾ï¼æ¥çç»ç«¯æ¥å¿ï¼VNCè¿æ¥ï¼æ·»å å·ç
l 访é®ä¸å®å
¨ç®¡çï¼å建å®å
¨ç¾¤ç»ï¼ç®¡çå¯å对ï¼è®¾ç½®æµ®å¨IPç
l å好设å®ï¼å¯¹èæ硬件模æ¿å¯ä»¥è¿è¡ä¸åå好设å®
l éå管çï¼ç¼è¾æå é¤éå
l æ¥çæå¡ç®å½
l 管çç¨æ·ãé
é¢å项ç®ç¨é
l ç¨æ·ç®¡çï¼å建ç¨æ·ç
l å·ç®¡çï¼å建å·åå¿«ç
§
l 对象åå¨å¤çï¼å建ãå é¤å®¹å¨å对象
l 为项ç®ä¸è½½ç¯å¢åé