基于openstack安裝部署私有云詳細(xì)圖文教程
本文主要分享的是云計(jì)算、openstack的使用、私有云平臺(tái)建設(shè)、云服務(wù)器云硬盤的構(gòu)建和使用。從基本概念入手到私有云建設(shè),信息量非常大。對(duì)于openstack的安裝部署都是從官方文檔中一步步的介紹,內(nèi)容非常詳細(xì)。
一、云計(jì)算 基本概念
云計(jì)算(cloud computing)是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式,通常涉及通過互聯(lián)網(wǎng)來提供動(dòng)態(tài)易擴(kuò)展且經(jīng)常是虛擬化的資源。云是網(wǎng)絡(luò)、互聯(lián)網(wǎng)的一種比喻說法。過去在圖中往往用云來表示電信網(wǎng),后來也用來表示互聯(lián)網(wǎng)和底層基礎(chǔ)設(shè)施的抽象。因此,云計(jì)算甚至可以讓你體驗(yàn)每秒10萬億次的運(yùn)算能力,擁有這么強(qiáng)大的計(jì)算能力可以模擬核爆炸、預(yù)測(cè)氣候變化和市場(chǎng)發(fā)展趨勢(shì)。用戶通過電腦、筆記本、手機(jī)等方式接入數(shù)據(jù)中心,按自己的需求進(jìn)行運(yùn)算。
云計(jì)算分類
簡(jiǎn)單來說,就是把應(yīng)用程序和數(shù)據(jù)都放在由大量服務(wù)器組成的云中,用戶需要什么只要購買相應(yīng)服務(wù)并使用即可。
云計(jì)算分為私有云、公有云、混合云。
云計(jì)算的服務(wù)分類:基礎(chǔ)設(shè)施即服務(wù)、平臺(tái)即服務(wù)、軟件即服務(wù)。
- 超大規(guī)模。“云”具有相當(dāng)?shù)囊?guī)模,Google云計(jì)算已經(jīng)擁有100多萬臺(tái)服務(wù)器,亞馬遜、IBM、微軟和Yahoo等公司的“云”均擁有幾十萬臺(tái)服務(wù)器?!霸啤蹦苜x予用戶前所未有的計(jì)算能力。
- 虛擬化。云計(jì)算支持用戶在任意位置使用各種終端獲取服務(wù)。所請(qǐng)求的資源來自“云”,而不是固定的有形的實(shí)體。應(yīng)用在“云”中某處運(yùn)行,但實(shí)際上用戶無需了解應(yīng)用運(yùn)行的具體位置,只需要一臺(tái)筆記本或一個(gè)PDA,就可以通過網(wǎng)絡(luò)服務(wù)來獲取各種能力超強(qiáng)的服務(wù)。
- 高可靠性?!霸啤笔褂昧藬?shù)據(jù)多副本容錯(cuò)、計(jì)算節(jié)點(diǎn)同構(gòu)可互換等措施來保障服務(wù)的高可靠性,使用云計(jì)算比使用本地計(jì)算機(jī)更加可靠。
- 通用性。云計(jì)算不針對(duì)特定的應(yīng)用,在“云”的支撐下可以構(gòu)造出于變?nèi)f化的應(yīng)用,同一片“云”可以同時(shí)支撐不同的應(yīng)用運(yùn)行。
- 高可伸縮性?!霸啤钡囊?guī)模可以動(dòng)態(tài)伸縮,滿足應(yīng)用和用戶規(guī)模增長(zhǎng)的需要。
- 按需服務(wù)。“云”是一個(gè)龐大的資源池,用戶按需購買,像自來水、電和煤氣那樣計(jì)費(fèi)。
- 極其廉價(jià)?!霸啤钡奶厥馊蒎e(cuò)措施使得可以采用極其廉價(jià)的節(jié)點(diǎn)來構(gòu)成云;“云”的自動(dòng)化管理使數(shù)據(jù)中心管理成本大幅降低;“云”的公用性和通用性使資源的利用率大幅提升;“云”設(shè)施可以建在電力資源豐富的地區(qū),從而大幅降低能源成本。
二、Openstack基本概念
OpenStack是一個(gè)開源的云計(jì)算管理平臺(tái)項(xiàng)目,由幾個(gè)主要的組件組合起來完成
具體工作。OpenStack支持幾乎所有類型的云環(huán)境,項(xiàng)目目標(biāo)是提供實(shí)施簡(jiǎn)單、
可大規(guī)模擴(kuò)展、豐富、標(biāo)準(zhǔn)統(tǒng)一的云計(jì)算管理平臺(tái)。OpenStack通過各種互補(bǔ)的
服務(wù)提供了基礎(chǔ)設(shè)施即服務(wù)(IaaS)的解決方案,每個(gè)服務(wù)提供API以進(jìn)行集成。
常見組件:
- Dashboard(web項(xiàng)目)
- Keystone(權(quán)限管理)
- Nova(管理虛擬機(jī))
- Nova-network(管理網(wǎng)絡(luò)流量和ip)
- Glance(鏡像管理項(xiàng)目)
- Cinder(磁盤管理)
- Swift(網(wǎng)盤,對(duì)象)
基礎(chǔ)的系統(tǒng)圖
Openstack安裝部署
下面來說一說openstack的安裝部署。首先說明openstack的整體安裝非常復(fù)雜,文末提供官方安裝文檔下載,我就是根據(jù)這個(gè)英文的官方文檔來安裝部署的。以下內(nèi)容是參照官方文檔“openstack-install-guide-yum-icehouse.pdf”來的。
首先需要準(zhǔn)備3臺(tái)linux的機(jī)器。我這里選用的是centos6.6的64位的系統(tǒng)。配置IP地址,關(guān)閉防火墻,修改主機(jī)名。
• Controller Node: 1 processor, 2 GB memory, and 5 GB storage
• Compute01: 1 processor, 512 MB memory, and 5 GB storage
• Compute02 Node: 1 processor, 2 GB memory, and 10 GB storage
我這里controller的ip地址是:192.168.44.147
computer01:192.168.44.148
computer02:192.168.44.149
基本環(huán)境配置
以下內(nèi)容是在controller機(jī)器上配置的。
1、數(shù)據(jù)庫安裝。
因?yàn)樾枰粋€(gè)數(shù)據(jù)庫,所以這里選用了mysql數(shù)據(jù)庫。
yum install mysql mysql-server MySQL-python
編輯/etc/my.cnf文件,在里面添加如下內(nèi)容,主要意思就是設(shè)置編碼為utf-8。
default-storage-engine = innodb innodb_file_per_table collation-server = utf8_general_ci init-connect = 'SET NAMES utf8' character-set-server = utf8
然后啟動(dòng)服務(wù),開機(jī)啟動(dòng)。
# service mysqld start # chkconfig mysqld on # mysql_install_db # mysql_secure_installation
賦權(quán),使其可以遠(yuǎn)程登錄。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'a';
2、openstack基本包安裝。
# yum install yum-plugin-priorities # yum install http://repos.fedorapeople.org/repos/openstack/openstackicehouse/rdo-release-icehouse-3.noarch.rpm # yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8. noarch.rpm # yum install openstack-utils # yum install openstack-selinux
3、安裝消息隊(duì)列
yum install qpid-cpp-server
啟動(dòng)服務(wù)
service qpidd start chkconfig qpidd on
權(quán)限認(rèn)證服務(wù)(keystone)
安裝權(quán)限認(rèn)證服務(wù):
yum install openstack-keystone python-keystoneclient -y
創(chuàng)建用戶,寫入到配置文件中:
openstack-config --set /etc/keystone/keystone.conf \ database connection mysql://keystone:KEYSTONE_DBPASS@controller/keystone
創(chuàng)建keystone數(shù)據(jù)庫表:
$ mysql -u root -p mysql> CREATE DATABASE keystone; mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \ IDENTIFIED BY 'KEYSTONE_DBPASS'; mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \ IDENTIFIED BY 'KEYSTONE_DBPASS'; mysql> exit
自動(dòng)生成表:
su -s /bin/sh -c "keystone-manage db_sync" keystone
設(shè)置用戶環(huán)境變量:
ADMIN_TOKEN=$(openssl rand -hex 10) echo $ADMIN_TOKEN openstack-config --set /etc/keystone/keystone.conf DEFAULT \ admin_token $ADMIN_TOKEN # keystone-manage pki_setup --keystone-user keystone --keystone-group keystone # chown -R keystone:keystone /etc/keystone/ssl # chmod -R o-rwx /etc/keystone/ssl
啟動(dòng)keystone服務(wù):
service openstack-keystone start chkconfig openstack-keystone on
將admin_token設(shè)置到環(huán)境變量中去。
export OS_SERVICE_TOKEN=$ADMIN_TOKEN export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0
創(chuàng)建管理員用戶,默認(rèn)的用戶名為admin,密碼為ADMIN_PASS,你可以自定義修改:
[root@controller keystone]# keystone user-create --name=admin --pass=ADMIN_PASS --email=ADMIN_EMAIL +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | ADMIN_EMAIL| | enabled | True | |id| 332f5ecb18c64bf687b154facd629fb6 | | name | admin | | username | admin | +----------+----------------------------------+ [root@controller keystone]# keystone role-create --name=admin +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ |id| ab5da2c50d7443efb0514e84c2b4adb7 | | name | admin | +----------+----------------------------------+ [root@controller keystone]# keystone tenant-create --name=admin --description="Admin Tenant" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Admin Tenant | | enabled | True | | id | b89723a38b154eeea6416a83b293b0ad | | name| admin | +-------------+----------------------------------+ [root@controller keystone]# keystone user-role-add --user=admin --tenant=admin --role=admin [root@controller keystone]# keystone user-role-add --user=admin --role=_member_ --tenant=admin [root@controller keystone]#
創(chuàng)建一個(gè)權(quán)限認(rèn)證服務(wù),因?yàn)槲疫@里的主機(jī)名是controller,所以下面有 http://controller:35357/v2.0 這些信息,可以自定義修改:
[root@controller keystone]# keystone service-create --name=keystone --type=identity \ > --description="OpenStack Identity" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description |OpenStack Identity| | enabled | True | | id | 4bfd5f39b86c45edb92d5c0488987dd8 | | name| keystone | | type| identity | +-------------+----------------------------------+ [root@controller keystone]# keystone endpoint-create \ > --service-id=$(keystone service-list | awk '/ identity / {print $2}') \ > --publicurl=http://controller:5000/v2.0 \ > --internalurl=http://controller:5000/v2.0 \ > --adminurl=http://controller:35357/v2.0 +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://controller:35357/v2.0 | | id | 0350b72901a141498fe48304b13a1b98 | | internalurl | http://controller:5000/v2.0| | publicurl | http://controller:5000/v2.0| |region |regionOne | | service_id | 4bfd5f39b86c45edb92d5c0488987dd8 | +-------------+----------------------------------+ [root@controller keystone]# keystone user-create --name=demo --pass=DEMO_PASS --email=DEMO_EMAIL +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email |DEMO_EMAIL| | enabled | True | |id| b44a9a1462d74f4e928b3b339289a2ae | | name | demo | | username | demo | +----------+----------------------------------+ [root@controller keystone]# keystone tenant-create --name=demo --description="Demo Tenant" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Demo Tenant| | enabled | True | | id | 7bd79509ee184a2098ca0644679b60a8 | | name| demo | +-------------+----------------------------------+ [root@controller keystone]# keystone user-role-add --user=demo --role=_member_ --tenant=demo [root@controller keystone]#
為了方便我們?nèi)〉絫oken,我們可以vi admin-openrc.sh,然后添加如下內(nèi)容:
export OS_USERNAME=admin export OS_PASSWORD=ADMIN_PASS export OS_TENANT_NAME=admin export OS_AUTH_URL=http://controller:35357/v2.0
在每次關(guān)機(jī)重啟之后都要重新執(zhí)行下面的命令,讓環(huán)境變量起作用。否則會(huì)報(bào)”Expecting an auth URL via either –os-auth-url or env[OS_AUTH_URL]”的錯(cuò)誤:
source admin-openrc.sh
我們可以使用下面的命令查看keystone目前的用戶有哪些:
keystone user-list
測(cè)試效果:
打開restclient-ui-3.5-jar-with-dependencies.jar來測(cè)試效果:
url地址是: http://192.168.44.147:5000/v2.0/
訪問成功。
配置鏡像服務(wù)(glance)
在controller服務(wù)器中安裝服務(wù):
yum install openstack-glance python-glanceclient openstack-config --set /etc/glance/glance-api.conf database \ connection mysql://glance:GLANCE_DBPASS@controller/glance openstack-config --set /etc/glance/glance-registry.conf database \ connection mysql://glance:GLANCE_DBPASS@controller/glance
在mysql數(shù)據(jù)庫中創(chuàng)建glance數(shù)據(jù)庫:
$ mysql -u root -p mysql> CREATE DATABASE glance; mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \ IDENTIFIED BY 'GLANCE_DBPASS'; mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \ IDENTIFIED BY 'GLANCE_DBPASS'; flush privileges;
自動(dòng)生成表:
su -s /bin/sh -c "glance-manage db_sync" glance
在keystone上創(chuàng)建用戶:
keystone user-create --name=glance --pass=GLANCE_PASS --email=glance@example.com $ keystone user-role-add --user=glance --tenant=service --role=admin
配置授權(quán)服務(wù):
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \ auth_uri http://controller:5000 openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \ auth_host controller openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \ auth_port 35357 openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \ auth_protocol http openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \ admin_tenant_name service openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \ admin_user glance openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \ admin_password GLANCE_PASS openstack-config --set /etc/glance/glance-api.conf paste_deploy \ flavor keystone openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \ auth_uri http://controller:5000 openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \ auth_host controller openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \ auth_port 35357 openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \ auth_protocol http openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \ admin_tenant_name service openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \ admin_user glance openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken \ admin_password GLANCE_PASS openstack-config --set /etc/glance/glance-registry.conf paste_deploy \ flavor keystone
啟動(dòng)服務(wù):
service openstack-glance-api start # service openstack-glance-registry start # chkconfig openstack-glance-api on # chkconfig openstack-glance-registry on
創(chuàng)建服務(wù):
$ keystone service-create --name=glance --type=image \ --description="OpenStack Image Service" $ keystone endpoint-create \ --service-id=$(keystone service-list | awk '/ image / {print $2}') \ --publicurl=http://controller:9292 \ --internalurl=http://controller:9292 \ --adminurl=http://controller:9292 [root@controller ~]# keystone service-create --name=glance --type=image \ > --description="OpenStack Image Service" /usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability. _warn("Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning) +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | OpenStack Image Service | | enabled | True | | id | a45f77cfc12c42d19a45a6ea12cdfc51 | | name| glance | | type| image | +-------------+----------------------------------+ [root@controller ~]# keystone endpoint-create \ > --service-id=$(keystone service-list | awk '/ image / {print $2}') \ > --publicurl=http://controller:9292 \ > --internalurl=http://controller:9292 \ > --adminurl=http://controller:9292 +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://controller:9292 | | id | 75deb2d2f85e4b7b88fe18bf5fca1a87 | | internalurl | http://controller:9292 | | publicurl | http://controller:9292 | |region |regionOne | | service_id | a45f77cfc12c42d19a45a6ea12cdfc51 | +-------------+----------------------------------+
創(chuàng)建鏡像,先將下載好的cirros-0.3.2-x86_64-disk.img放置在/root目錄下,然后執(zhí)行下面的命令:
glance image-create --name "cirros-0.3.2-x86_64" --disk-format qcow2 \
--container-format bare --is-public True --progress < cirros-0.3.2-x86_64-disk.img
查看鏡像列表:
glance image-list
在前面我們已經(jīng)對(duì)kvm虛擬化有所了解,所以我們現(xiàn)在知道qcow2就是一個(gè)鏡像文件。
服務(wù)器管理(Nova)
對(duì)于虛擬機(jī)管理我們需要從controller和computer01進(jìn)行配置。
先來看controller的配置:
yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor \ openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler \ python-novaclient $ mysql -u root -p mysql> CREATE DATABASE nova; mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \ IDENTIFIED BY 'NOVA_DBPASS'; mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \ IDENTIFIED BY 'NOVA_DBPASS'; openstack-config --set /etc/nova/nova.conf database connection mysql://nova:NOVA_DBPASS@controller/nova openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend qpid openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.44.147 openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 192.168.216.210 openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 192.168.44.147 openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357 openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password NOVA_PASS $ keystone user-create --name=nova --pass=NOVA_PASS --email=nova@example.com $ keystone user-role-add --user=nova --tenant=service --role=admin $ keystone service-create --name=nova --type=compute \ --description="OpenStack Compute" $ keystone endpoint-create \ --service-id=$(keystone service-list | awk '/ compute / {print $2}') \ --publicurl=http://controller:8774/v2/%\(tenant_id\)s \ --internalurl=http://controller:8774/v2/%\(tenant_id\)s \ --adminurl=http://controller:8774/v2/%\(tenant_id\)s
然后是computer01的配置:
yum install openstack-nova-compute openstack-config --set /etc/nova/nova.conf database connection mysql://nova:NOVA_DBPASS@controller/nova openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357 openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password NOVA_PASS openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend qpid openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.44.148 openstack-config --set /etc/nova/nova.conf DEFAULT vnc_enabled True openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 0.0.0.0 openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 192.168.44.148 openstack-config --set /etc/nova/nova.conf DEFAULT novncproxy_base_url http://controller:6080/vnc_auto.html openstack-config --set /etc/nova/nova.conf DEFAULT glance_host controller openstack-config --set /etc/nova/nova.conf libvirt virt_type kvm
啟動(dòng)服務(wù):
service libvirtd start service messagebus start service openstack-nova-compute start chkconfig libvirtd on chkconfig messagebus on chkconfig openstack-nova-compute on
網(wǎng)絡(luò)服務(wù)配置
在controller端:
openstack-config --set /etc/nova/nova.conf DEFAULT \ network_api_class nova.network.api.API openstack-config --set /etc/nova/nova.conf DEFAULT \ security_group_api nova
在computer01端:
yum install openstack-nova-network openstack-nova-api # openstack-config --set /etc/nova/nova.conf DEFAULT \ network_api_class nova.network.api.API # openstack-config --set /etc/nova/nova.conf DEFAULT \ security_group_api nova # openstack-config --set /etc/nova/nova.conf DEFAULT \ network_manager nova.network.manager.FlatDHCPManager # openstack-config --set /etc/nova/nova.conf DEFAULT \ firewall_driver nova.virt.libvirt.firewall.IptablesFirewallDriver # openstack-config --set /etc/nova/nova.conf DEFAULT \ network_size 254 # openstack-config --set /etc/nova/nova.conf DEFAULT \ allow_same_net_traffic False # openstack-config --set /etc/nova/nova.conf DEFAULT \ multi_host True # openstack-config --set /etc/nova/nova.conf DEFAULT \ send_arp_for_ha True # openstack-config --set /etc/nova/nova.conf DEFAULT \ share_dhcp_address True # openstack-config --set /etc/nova/nova.conf DEFAULT \ force_dhcp_release True # openstack-config --set /etc/nova/nova.conf DEFAULT \ flat_network_bridge br100 # openstack-config --set /etc/nova/nova.conf DEFAULT \ flat_interface eth1 # openstack-config --set /etc/nova/nova.conf DEFAULT \ public_interface eth0
nova network-create demo-net –bridge br100 –multi-host T \
–fixed-range-v4 88.8.8.16/28
然后使用nova net-list來查看:
創(chuàng)建虛擬機(jī)
1、配置ssh密碼登錄:
ssh-keygen
2、增加公鑰到openstack環(huán)境中:
nova keypair-add --pub-key ~/.ssh/id_rsa.pub demo-key
3、驗(yàn)證是否配置成功:
nova keypair-list nova flavor-list
4、創(chuàng)建實(shí)例:
--security-group default --key-name demo-key demo-instance1
說明:
DEMO_NET_ID:指的是nova net-list的ID。
demo-instance1指的是虛擬機(jī)的名字。
例如我的成功執(zhí)行如下:
nova boot --flavor m1.tiny --image cirros-0.3.2-x86_64 --nic net-id=55fc305f-570f-4d4f-89d0-ce303e589f20 \ --security-group default --key-name demo-key tfjt
5、使用nova list進(jìn)行查看。
從這里我們看到我這上面有一個(gè)ip地址192.168.44.17.這個(gè)地址就是浮動(dòng)IP。
6、配置浮動(dòng)IP
浮動(dòng)ip
nova-manage floating create --ip_range=192.168.44.16/28
查看可用地址
nova-manage floating list
nova floating-ip-create
給創(chuàng)建的虛擬機(jī)綁定浮動(dòng)ip,這個(gè)7bc0086…就是我之前創(chuàng)建的虛擬機(jī)的ID。后面接上IP地址即可。
nova add-floating-ip 7bc00086-1870-4367-9f05-666d5067ccff 192.168.44.17
監(jiān)聽
cpdump -n -i eth0 icmp
在controller上:
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
7、使用下面的命令可以輸出一個(gè)url地址:
nova get-vnc-console tfjt novnc
8、我們可以在瀏覽器中進(jìn)行訪問。
到這里為止,我們的云服務(wù)器就算完成了??梢栽跒g覽器上訪問我們的云服務(wù)器,怎么樣是不是很激動(dòng)。
界面服務(wù)(dashboard)
上面我們可以看到很多操作是在終端進(jìn)行的,那么肯定是有界面版的,所以我們?cè)赾omputer02中進(jìn)行配置。
1、安裝服務(wù)
yum install memcached python-memcached mod_wsgi openstack-dashboard
2、文件配置。
在controller中
配置/etc/openstack-dashboard/local_settings。修改為如下內(nèi)容。
ALLOWED_HOSTS = ['*'] CACHES = { 'default': { 'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION' : '127.0.0.1:11211' } } OPENSTACK_HOST = "controller"
3、連接
setsebool -P httpd_can_network_connect on service httpd start # service memcached start # chkconfig httpd on # chkconfig memcached on
4、瀏覽器中訪問。
http://192.168.44.147/dashboard/project/
用戶名就是我們之前配置的admin,密碼是ADMIN_PASS
在這個(gè)界面版里面的各種操作我這里就不細(xì)說了,可以自己去體驗(yàn)。
在這里可以看到我們的云服務(wù)器實(shí)例。
云硬盤服務(wù)(cinder)
了解過阿里云或者騰訊云的就知道,里面都有一個(gè)云硬盤服務(wù),可以給我們的機(jī)器增加磁盤。
在controller端:
yum stall openstack-cinde openstack-config --set /etc/cinder/cinder.conf \ database connection mysql://cinder:CINDER_DBPASS@controller/cinder mysql> CREATE DATABASE cinder; mysql> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \ IDENTIFIED BY 'CINDER_DBPASS'; mysql> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \ IDENTIFIED BY 'CINDER_DBPASS';
創(chuàng)建數(shù)據(jù)庫表:
# su -s /bin/sh -c "cinder-manage db sync" cinder
創(chuàng)建用戶并賦予角色:
$ keystone user-create --name=cinder --pass=CINDER_PASS--email=cinder@example.com $ keystone user-role-add --user=cinder --tenant=service --role=admin
權(quán)限控制配置:
# openstack-config --set /etc/cinder/cinder.conf DEFAULT \ auth_strategy keystone # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ auth_uri http://controller:5000 # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ auth_host controller # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ auth_protocol http # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ auth_port 35357 # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ admin_user cinder # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ admin_tenant_name service # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ admin_password CINDER_PASS
消息隊(duì)列配置:
# openstack-config --set /etc/cinder/cinder.conf \ DEFAULT rpc_backend qpid # openstack-config --set /etc/cinder/cinder.conf \ DEFAULT qpid_hostname controller $ keystone service-create --name=cinder --type=volume --description="OpenStack Block Storage" $ keystone endpoint-create \ --service-id=$(keystone service-list | awk '/ volume / {print $2}') \ --publicurl=http://controller:8776/v1/%\(tenant_id\)s \ --internalurl=http://controller:8776/v1/%\(tenant_id\)s \ --adminurl=http://controller:8776/v1/%\(tenant_id\)s $ keystone service-create --name=cinderv2 --type=volumev2 --description="OpenStack Block Storage v2" $ keystone endpoint-create \ --service-id=$(keystone service-list | awk '/ volumev2 / {print $2}') \ --publicurl=http://controller:8776/v2/%\(tenant_id\)s \ --internalurl=http://controller:8776/v2/%\(tenant_id\)s \ --adminurl=http://controller:8776/v2/%\(tenant_id\)s service openstack-cinder-api start # service openstack-cinder-scheduler start # chkconfig openstack-cinder-api on # chkconfig openstack-cinder-scheduler on cinder service-list openstack-config --set /etc/cinder/cinder.conf \ DEFAULT qpid_hostname controller cinder --debug list keystone user-create --name=cinder --pass=CINDER_PASS --email=cinder@example.com openstack-config --set /etc/cinder/cinder.conf \ DEFAULT my_ip 192.168.44.147
在node端(computer02)
pvcreate /dev/sdb # vgcreate cinder-volumes /dev/sdb yum install openstack-cinder scsi-target-utils # openstack-config --set /etc/cinder/cinder.conf DEFAULT \ auth_strategy keystone # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ auth_uri http://controller:5000 # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ auth_host controller # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ auth_protocol http # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ auth_port 35357 # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ admin_user cinder # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ admin_tenant_name service # openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \ admin_password CINDER_PASS # openstack-config --set /etc/cinder/cinder.conf \ DEFAULT rpc_backend qpid # openstack-config --set /etc/cinder/cinder.conf \ DEFAULT qpid_hostname controller # openstack-config --set /etc/cinder/cinder.conf \ database connection mysql://cinder:CINDER_DBPASS@controller/cinde # openstack-config --set /etc/cinder/cinder.conf \ DEFAULT my_ip MANAGEMENT_INTERFACE_IP_ADDRESS # openstack-config --set /etc/cinder/cinder.conf \ DEFAULT glance_host controller # openstack-config --set /etc/cinder/cinder.conf \ DEFAULT iscsi_helper tgtadm
配置文件中:
vi /etc/tgt/targets.conf
include /etc/cinder/volumes/*
啟動(dòng)服務(wù):
# service openstack-cinder-volume start # service tgtd start # chkconfig openstack-cinder-volume on # chkconfig tgtd on
創(chuàng)建磁盤:
cinder create --display-name myVolume 1
查看磁盤列表:
cinder list
然后再界面端查看云硬盤的配置并進(jìn)行掛載:
在云服務(wù)器上掛載磁盤:
$ mkfs.ext3 /dev/vdb1 $ mkdir /mnt/test $ mount /dev/vdb1 /mnt/test $ mount $ fdisk /dev/vdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x64817ea3. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-2097151, default 2048): +1G Value out of range. First sector (2048-2097151, default 2048): +512M Last sector, +sectors or +size{K,M,G} (1048576-2097151, default 2097151): Using default value 2097151 Command (m for help): p Disk /dev/vdb: 1073 MB, 1073741824 bytes 16 heads, 63 sectors/track, 2080 cylinders, total 2097152 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x64817ea3 Device Boot Start End Blocks Id System /dev/vdb1 1048576 2097151 524288 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. $ df -h
總結(jié):整個(gè)操作流程非常復(fù)雜,我也是花了幾天才慢慢搭建好的,這其實(shí)也就是個(gè)基礎(chǔ),給的其實(shí)是一個(gè)思路,后面需要怎樣的擴(kuò)展可以根據(jù)自己的業(yè)務(wù)需要進(jìn)行不同的設(shè)置。對(duì)于不明白的地方可以查閱官方文檔。
openstack官方文檔下載地址:http://www.dbjr.com.cn/books/530692.html
相關(guān)文章
openstack云計(jì)算keystone組件工作流程及服務(wù)關(guān)系
這篇文章主要介紹了openstack云計(jì)算keystone組件工作流程及服務(wù)關(guān)系,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04OpenStack Ceilometer用MongoDB解決占用磁盤空間過大問題
這篇文章主要介紹了OpenStack Ceilometer用MongoDB解決占用磁盤空間過大問題的相關(guān)資料,Ceilometer使用MongoDB作為數(shù)據(jù)庫,不斷進(jìn)行采樣,導(dǎo)致數(shù)據(jù)量膨脹,占用過多的磁盤空間,這里提供解決辦法,需要的朋友可以參考下2016-12-12Openstack 啟動(dòng)instance ''hvm''錯(cuò)誤問題解決辦法
這篇文章主要介紹了Openstack 啟動(dòng)instance 'hvm'錯(cuò)誤問題解決辦法的相關(guān)資料,需要的朋友可以參考下2016-11-11openstack 重啟的服務(wù)命令整理總結(jié)
這篇文章主要介紹了openstack 重啟的服務(wù)命令整理總結(jié)的相關(guān)資料,這里對(duì) openstack 的服務(wù)命令進(jìn)行了詳細(xì)的介紹,openstack 的服務(wù)命令比較多,需要的朋友可以參考下2016-11-11openstack pike單機(jī)一鍵安裝shell的方法
這篇文章主要介紹了openstack pike單機(jī)一鍵安裝shell的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03Openstack各組件邏輯關(guān)系及運(yùn)行流程解析
這篇文章主要為大家介紹了Openstack各組件邏輯關(guān)系及運(yùn)行流程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04淺談openstack中使用linux_bridge實(shí)現(xiàn)vxlan網(wǎng)絡(luò)
這篇文章主要介紹了淺談openstack中使用linux_bridge實(shí)現(xiàn)vxlan網(wǎng)絡(luò),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03