OpenStack雲計算口袋書-第一章-開始OpenStack之旅(三)

三、開始安裝OpenStack

1. 安裝openstack compute程序

openstack@localhost:~$ sudo apt-get update
openstack@localhost:~$ sudo apt-get  -y install rabbitmq-server nova-api nova-objectstore nova-scheduler nova-network nova-compute nova-cert glance qemu unzip

所要安裝程序的說明:

nova-compute: 用於運行虛擬機實例

nova-scheduler: 調度器,選擇服務器執行運行虛擬機實例的請求

nova-api: 這個服務是用來生成操作OpenStack服務的請求,並傳遞給OpenStack,譬如,通知nova-api啓動一個新的Nova實例

nova-network: 網絡服務,用來控制DHCP、DNS和路由

nova-objectstore: 文件存儲服務

nova-common: OpenStack環境的基礎通用Python庫

nova-cert: Nova認證管理服務,用於對Nova的鑑權

glance: 鏡像註冊和傳輸服務

rabbitmq-server: 消息隊列服務

mysql-server: 數據庫服務,保存像計算節點可用性、實例的運行狀態等所有的OpenStack服務的數據

ntp: 網絡時間服務,NTP協議(Network Time Protocol )是多節點環境中必要的保障,用來使節點保持相同的時間,大於5秒的誤差,往往會帶來不可預測的結果

dnsmasq: 提供DNS轉發和DHCP服務,用於給實例指定地址

2. 安裝ntp程序

openstack的多節點環境中需要時間和時間服務器保持同步。目前只有一個節點,可以爲將來的擴展打下基礎。

openstack@localhost:~$ sudo apt-get -y install  ntp

所安裝程序的說明:

3. 配置ntp程序

3.1 備份ntp服務配置文件

openstack@localhost:~$ sudo cp -av /etc/ntp.conf{,.origin}
`/etc/ntp.conf' -> `/etc/ntp.conf.origin'
openstack@localhost:~$

3.2 重新配置ntp服務配置文件

openstack@localhost:~$  sed 's/\t//' <<EOF |sudo tee /etc/ntp.conf

        driftfile /var/lib/ntp/ntp.drift
        statistics loopstats peerstats clockstats
        filegen loopstats file loopstats type day enable
        filegen peerstats file peerstats type day enable
        filegen clockstats file clockstats type day enable
        restrict -4 default kod notrap nomodify nopeer noquery
        restrict -6 default kod notrap nomodify nopeer noquery
        # BEGIN
        #server <NTP server>
        server ntp.ubuntu.com
        server 127.127.1.0
        fudge 127.127.1.0 stratum 10
        # END
        restrict 127.0.0.1
        restrict ::1

EOF

3.3 重啓動ntp服務

openstack@localhost:~$ sudo /etc/init.d/ntp restart
* Stopping NTP server ntpd                                         [ OK ]
* Starting NTP server ntpd                                         [ OK ]

4. 安裝和配置mysql服務器

4.1 預配置mysql服務

這裏使用debconf這個配置工具,關於debconf配置工具的使用可以訪問:

Debian/Ubuntu無密碼安裝(apt)軟件

http://www.cnc8.cn/debianubuntu%E6%97%A0%E5%AF%86%E7%A0%81%E5%AE%89%E8%A3%85apt%E8%BD%AF%E4%BB%B6/

openstack@localhost:~$ i
openstack@localhost:~$ sed 's/\t//' <<EOF | sudo debconf-set-selections
        mysql-server-5.1 mysql-server/root_password password ${MYSQL_PASSWD}
        mysql-server-5.1 mysql-server/root_password_again password ${MYSQL_PASSWD}
        mysql-server-5.1 mysql-server/start_on_boot boolean true
EOF

4.2 安裝mysql服務器

openstack@localhost:~$ sudo apt-get  -y install mysql-server

4.3 配置mysql服務器監聽IP

同時備份原始文件

openstack@localhost:~$ sudo sed -i.origin 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf

4.4 重新啓動mysql服務器

openstack@localhost:~$ sudo /etc/init.d/mysql restart

Rather than invoking init scripts through /etc/init.d, use the service(8)

utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an

Upstart job, you may also use the stop(8) and then start(8) utilities,

e.g. stop mysql ; start mysql. The restart(s8) utility is also available.

mysql stop/waiting

mysql start/running, process 12065

openstack@localhost:~$

4.5 添加nava數據庫,並配置用於訪問nova數據庫的用戶名和密碼

openstack@localhost:~$ MYSQL_PASS=${MYSQL_PASS:-"openstack"}

openstack@localhost:~$ NOVA_MYSQL_USER=${NOVA_MYSQL_USER:-"nova"}

openstack@localhost:~$ NOVA_MYSQL_PASS=${NOVA_MYSQL_PASS:-"openstack"}

openstack@localhost:~$ mysql -uroot -p$MYSQL_PASS -e "DROP DATABASE IF EXISTS ${NOVA_MYSQL_USER};"

openstack@localhost:~$ mysql -uroot -p$MYSQL_PASS -e "CREATE DATABASE ${NOVA_MYSQL_USER};"

openstack@localhost:~$ mysql -uroot -p$MYSQL_PASS -e "GRANT ALL PRIVILEGES ON ${NOVA_MYSQL_USER}.* TO '${NOVA_MYSQL_USER}'@'%'"

openstack@localhost:~$ mysql -uroot -p$MYSQL_PASS -e "SET PASSWORD FOR '${NOVA_MYSQL_USER}'@'%' = PASSWORD('${NOVA_MYSQL_PASS}');"

4.6 檢查前面配置是否成功

openstack@localhost:~$ mysql -uroot -p$MYSQL_PASS -e 'USE mysql;SELECT user,host,password FROM user'

2013-09-15_09-21-19

4.7 關於nova客戶端的配置

稍後我們會在/etc/nova/nova.conf中添加--sql_connection配置項,如下

--sql_connection=mysql://nova:[email protected]/nova

具體的配置我們稍後再操作。

5. 配置openstack compute程序

5.1 配置/etc/nova/nova.conf

這是nova的主配配置文件,注意對於root以外的用戶/etc/nova下的文件是不能讀寫的。

openstack@localhost:~$ sudo ls -l /etc/nova
total 24
-rw------- 1 nova nova 4260 Apr 23 06:38 api-paste.ini
-rw------- 1 nova nova   19 May 16 10:39 nova-compute.conf
-rw------- 1 nova nova  328 Apr 24 08:09 nova.conf
-rw------- 1 nova nova 4263 Apr 23 06:38 policy.json

5.1.1 備份nova.conf配置文件

openstack@localhost:~$ sudo cp -av /etc/nova/nova.conf{,.origin}

`/etc/nova/nova.conf' -> `/etc/nova/nova.conf.origin'

openstack@localhost:~$

5.1.2 重寫配置文件

# 你的公網網卡地址

PUB_IP=${PUB_IP:-"172.16.0.1"}

# 你的私有網網卡地址

PRI_IP=${PRI_IP:-"10.0.0.1"}

# 重寫你的配置文件

sed 's/^\t//' <<EOF |sudo tee /etc/nova/nova.conf

        --dhcpbridge_flagfile=/etc/nova/nova.conf

        --dhcpbridge=/usr/bin/nova-dhcpbridge

        --logdir=/var/log/nova

        --state_path=/var/lib/nova

        --lock_path=/var/lock/nova

        --force_dhcp_release

        --iscsi_helper=tgtadm

        --libvirt_use_virtio_for_bridges

        --connection_type=libvirt

        --root_helper=sudo nova-rootwrap

        --ec2_private_dns_show_ip

        --sql_connection=mysql://nova:[email protected]/nova

        --use_deprecated_auth

        --s3_host=172.16.0.1

        --rabbit_host=172.16.0.1

        --ec2_host=172.16.0.1

        --ec2_dmz_host=172.16.0.1

        --public_interface=eth1

        --image_service=nova.image.glance.GlanceImageService

        --glance_api_servers=172.16.0.1:9292

        --auto_assign_floating_ip=true

        --scheduler_default_filters=AllHostsFilter

EOF

# 如果有自定義網絡地址的需要建議使用下面類似的語法修改配置文件

#sudo sed -i.$(date +%F-%H%M) -r 's|^(.*--sql_connection=).*$|\1'"${NOVA_MYSQL_USER}:${NOVA_MYSQL_PASS}@${PUB_IP}/${NOVA_MYSQL_USER}"'|p' /etc/nova/nova.conf

#其它修改語句

上面的命令是爲了可以自定義腳本而精心構造的。

關於配置項的解釋可查閱,OpenStack雲計算口袋書的第15頁。

5.1.3 修改nova-compute.conf配置文件

默認使用qemu,建議在虛擬機中安裝openstack的時候使用qemu,實際中只要硬件支持硬件輔助虛擬化,這裏使用kvm理論上也是可行的。建議使用qemu。

openstack@localhost:~$ LIBVIRT_TYPE=${LIBVIRT_TYPE:-"qemu"}

修改配置項--libvirt_type=kvm 爲 --libvirt_type=qemu

openstack@localhost:~$ sudo sed -i.origin -r 's|^(.*--libvirt_type=).*$|\1'"${LIBVIRT_TYPE}"'|' /etc/nova/nova-compute.conf

5.1.4 初始化nova數據庫

openstack@localhost:~$ sudo nova-manage db sync
2013-09-14 22:02:30 WARNING nova.utils [-] /usr/lib/python2.7/dist-packages/sqlalchemy/pool.py:639: SADeprecationWarning: The 'listeners' argument to Pool (and create_engine()) is deprecated.  Use event.listen().
  Pool.__init__(self, creator, **kw)
2013-09-14 22:02:30 WARNING nova.utils [-] /usr/lib/python2.7/dist-packages/sqlalchemy/pool.py:145: SADeprecationWarning: Pool.add_listener is deprecated.  Use event.listen()
  self.add_listener(l)
2013-09-14 22:02:30 AUDIT nova.db.sqlalchemy.fix_dns_domains [-] Applying database fix for Essex dns_domains table.

這個步驟,會有警告信息,沒有大的影響。

6. 配置nova網絡

6.2 配置虛擬機的公有網絡

這個網絡是用來從客戶端訪問虛擬機實例用的。

openstack@localhost:~$ sudo nova-manage floating create --ip_range=172.16.1.0/24

操作後執行下面的命令驗證一下:

openstack@localhost:~$ mysql -uroot -p${MYSQL_PASS} -e 'select * from nova.floating_ips limit 10'

2013-09-15_13-32-20

6.1 配置虛擬機的私有網絡

這個網絡是虛擬機實例之間相互通信使用的。

openstack@localhost:~$ sudo nova-manage network create vmnet --fixed_range_v4=10.0.0.0/8 --network_size=64 --bridge_interface=eth2

操作後執行下面的命令驗證一下:

openstack@localhost:~$ mysql -uroot -p${MYSQL_PASS} -e 'select * from nova.networks \G'

2013-09-15_13-27-43

7. 重新啓動nova

全部停止

openstack@localhost:~$ for i in  /etc/init.d/nova* /etc/init.d/libvirt-bin /etc/init.d/glance-* ; do sudo stop $(basename $i);done
nova-api stop/waiting
nova-cert stop/waiting
nova-compute stop/waiting
nova-network stop/waiting
nova-objectstore stop/waiting
nova-scheduler stop/waiting
libvirt-bin stop/waiting
glance-api stop/waiting
glance-registry stop/waiting

檢查是否已經停止
for i in  /etc/init.d/nova* /etc/init.d/libvirt-bin /etc/init.d/glance-* ; do sudo status $(basename $i);done

重新啓動
openstack@localhost:~$ for i in  /etc/init.d/nova* /etc/init.d/libvirt-bin /etc/init.d/glance-* ; do sudo start $(basename $i);done
nova-api start/running, process 13356
nova-cert start/running, process 13372
nova-compute start/running, process 13389
nova-network start/running, process 13405
nova-objectstore start/running, process 13421
nova-scheduler start/running, process 13439
libvirt-bin start/running, process 13461
glance-api start/running, process 13480
glance-registry start/running, process 13500

8. 添加nova管理賬戶和項目

在nova.conf中的--use_deprecated_auth這個參數的意思便是我們使用簡單的驗證方式。

在這裏不使用Keystone,是由於KeyStone過於複雜,並不適合初學者用來測試或實驗。附着學習地深入,以後會逐步講到KeyStone。

8.1 添加管理角色

這一步驟在nova數據庫初始化5.1.4中已經做過了。

8.2 添加用戶

openstack@localhost:~$ sudo nova-manage user admin openstack
2013-09-14 22:49:23 AUDIT nova.auth.manager [-] Created user openstack (admin: True)
export EC2_ACCESS_KEY=0dc5aaf7-3c05-4426-98f6-34e03cf7dd65
export EC2_SECRET_KEY=e1c25d28-976d-4165-baab-4ed95488cdc0

8.3 用戶綁定管理角色

openstack@localhost:~$ sudo nova-manage role add openstack cloudadmin

2013-09-14 22:51:20 AUDIT nova.auth.manager [-] Adding sitewide role cloudadmin to user openstack

openstack@localhost:~$

8.4 添加項目並綁定用戶

openstack@localhost:~$ sudo nova-manage project create cookbook openstack
2013-09-14 22:53:05 AUDIT nova.auth.manager [-] Created project cookbook with manager openstack

8.4 使用Zipfile的方式傳遞認證文件

這個步驟是爲了照顧虛擬機搭建openstack這種情況,就是nova會把認證文件壓縮後,稍後再通過我們手工傳輸到客戶機上來實現管理openstack的目的。

openstack@localhost:~$ sudo nova-manage project zipfile cookbook openstack
2013-09-14 22:58:49 WARNING nova.auth.manager [-] No *** data for project cookbook

已經生成
openstack@localhost:~$ ls
nova.zip 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章