標籤:虛擬機器 openstack nova python 分布式
OpenStack實戰指南跳轉至: 導航、 搜尋
目錄
- 1OpenStack簡介
- 2OpenStack安裝
- 3OpenStack組織圖一覽
- 4OpenStack API的介紹和開發
- 5Keystone認證組件
- 6Glance鏡像組件
- 7Nova計算群組件
- 8Neutron網路組件
- 9CinderBlock Storage組件
- 10OpenStack日常營運
- 11使用Fuel快速安裝OpenStack
|
OpenStack簡介
- 2010,來自於NASA Nebula(之前用的是Eucalyptus) + Rackspace Swift
- vs CloudStack
- p7 Apache項目成員均以個人名義列入,而不是他們所代表的公司
- Neutron接受來自虛擬機器的指令來定義VM需要的網路,然後轉寄給交換器和路由器建立這些網路(SDN?)
- OpenStack為分布式組件模式(不可熱插拔?),CloudStack是一個可插拔式的模型
- 都支援KVM、Xen、VMWare,OpenStack還支援Hyper-V、PowerVM、LXC via libvirt、Baremental、QEMU、Docker
- 建立虛擬機器執行個體
- Horizon將使用者的HTTP請求轉換為REST分發給Nova API,這期間會將鏡像檔案下載到Nova節點,並進行虛擬機器設定
- 非核心項目
- Ironic:管理物理機的生命週期?
- 前身:Nova baremental驅動,主要通過PXE和IPMI進行管理?
- Tempest:功能測試、整合測試;基於unittest2和nose
OpenStack安裝
- OpenStack通過AMQP實現RPC服務:RabbitMQ、Qpid、ZeroMQ
- 添加Havana的源(Ubuntu 12.04預設是Essex)
- # apt-get install -y python-software-properties
- # add-apt-repository cloud-archive;avana
- # apt-get update
- # apt-get upgrade -y
- # apt-get dist-upgrade -y
- # apt-get install -y ntp
- # apt-get install -y mysql-server python-mysqldb
- sed -I"s/127.0.0.1/10.80.80.10/" /etc/mysql/my.conf (這麼修改mysql設定檔可靠嗎?)
- # apt-get install -y rabbitmq-server
- rabbitmqctl change_password guest NEWPWD
- 安裝部署Keystone
- # vi /etc/keystone/keystone.conf:admin_token?
- # keystone-manage db_sync(有點rails風格)
- p41 建立Tenant、使用者、角色(略)
- # keystone user-role-add --user admin --role admin --tenant admin
- 定義Services和API Endpoints
- 安裝Glance鏡像組件(主要包括glance-api和glance-registry兩個服務)
- 略
- # glance image-create --name my1stimg --is-public true --container-format bare --disk-format qcow2 --file a.img
- 安裝Neutron組件(實際實現依賴與更底層的Open vSwitch、Nicira等)
- 當Grizzly版本發布後,網路組件改名叫Neutron,以前叫Quantum
- 安裝Nova(略)
- 安裝Cinder(略)
- 安裝Horizon(略)
- 網路節點的安裝*(這部分內容感覺有點技術含量啊)
- 負責虛擬機器的網路控制,包括DHCP、虛擬路由、公網訪問等,使用Open vSwitch作為底層驅動
- 計算節點的安裝
- 負責運行虛擬機器,KVM + libvirt
- Block Storage節點的安裝(負責提供volume)
- *在Ubuntu上使用原始碼編譯安裝
- p68 學習DevStack
- p71 使用tmux啟動keystone(tmux看起來是個不錯的工具,它和一般shell/ssh的區別是什嗎?)
- $ tmux new-session -s keystone
- $ bin/keystone-all --config-file /etc/keystone/keystone.conf
- 下略
OpenStack組織圖一覽
- 在Grizzly版本中,nova-compute不再之間與database互動,而是通過nova-conductor代理
OpenStack API的介紹和開發
- Nova API:以WSGI為入口,加上Routes、Webob和Paste等Python組件
- 分頁查詢:marker(上次最後一條記錄name) limit end_marker
- 理解Eventlet(Python庫,依賴於Greenlet和select.epoll)
- 自訂Dashboard面板
- Horizon基於Django
Keystone認證組件
- 哈哈,從這一章看來,OpenStack開發其實就是Python語言的編程
Glance鏡像組件
- 表結構:glance# \dt
- image_locations
- images
- migrate_version
- 鏡像狀態:queued saving active killed deleted pending_delete
- 鏡像格式
- RAW
- qcow2(QEMU的Copy on Write)
- VHD(微軟的Virtual PC和Hyper-V)
- VMDK
- VDI
- ISO
- AKI、ARI、AMI
- 延時刪除?glance-scrubber
- 設定後端儲存:Ceph*
- 製作鏡像
- 略
Nova計算群組件
- 虛擬機器(instance)狀態:vm_state task_state power_state
- p194 在libvirt中,虛擬機器被定義為Domain,簡稱Dom
- Context
- service_catalog到底是什嗎?
Neutron網路組件
- 虛擬設備:network subnet router port
- p205 在一個實際的部署Neutron環境中,往往會在不同的節點上安裝多個服務,這是初學者不容易理解的地方
- 哈哈,網路管理配置本來就不容易,這算是一個技術壁壘了
- 外掛程式?
- ML2?
- neutron-XXX-agent:DHCP、l3、metadata、LBaaS、FWaaS
- 使用Open vSwitch(OVS)的外掛程式
- 網路類型:Provider / Tenant
- L3 agent:實現網路層路由轉寄和NAT;Floating IP
CinderBlock Storage組件
- dbus(IPC服務)導致libvirt出錯?
OpenStack日常營運
- 集中管理日誌:rsyslog?
使用Fuel快速安裝OpenStack
OpenStack實戰指南 筆記