OpenStack All in One
系統(tǒng)環(huán)境:ubuntu-server-14.04
網(wǎng)絡環(huán)境:VMware Nat eth0 192.168.149.130
配置密碼:為了便于管理,所有服務密碼均配置為openstack
一、數(shù)據(jù)庫
a) 安裝
- # apt-get install python-mysqldb mysql-server
b) 配置
修改 /etc/mysql/my.cnf
- [mysqld]
- …
- bind-address = 127.0.0.1 # ip 地址全部使用本機
- default-storage-engine = innodb #設置默認存儲引擎為 Innodb
- innodb_file_per_table
- collation-server = utf8_general_ci #設置編碼格式
- init-connect = 'SET NAMES utf8'
- character-set-server = utf8
c) 重啟 mysql 服務,使用安全模式初始化數(shù)據(jù)庫,刪除匿名用戶
- # service mysql restart
- # mysql_secure_installation 或 # mysql_install_db
二、軟件包配置
a) 安裝 OpenStack Havana Ubuntu 云檔案
- # apt-get install python-software-properties
- # add-apt-repository cloud-archive:Havana
b) 更新軟件包數(shù)據(jù)庫,更新系統(tǒng)
- # apt-get update && apt-get dist-upgrade
- # reboot
三、消息服務
消息服務使用 rabbitmq
- # apt-get install rabbitmq-server
注:rabbitmq默認提供一個guest用戶和默認的guest密碼,這里需要修改一下guest用戶的密碼,因為后面配置nova服務的時候需要用到rabbitmq密碼
- # rabbitmqctl change_password guest openstack
四、Keystone認證服務
a) 安裝
- # apt-get install keystone
b) 配置
1) 修改數(shù)據(jù)庫連接方式,編輯配置文件/etc/keystone/keystone.conf
- ...
- [sql]
- # The SQLAlchemy connection string used to connect to the database
- connection = mysql://keystone:openstack@127.0.0.1/keystone
- ...
2) 刪除默認創(chuàng)建的數(shù)據(jù)庫
- rm <span style="line-height: 1.5; font-size: 9pt;">–f /var/lib/keystone/keystone.db</span>
3) 創(chuàng)建數(shù)據(jù)庫
- # mysql -u root -p
- mysql> CREATE DATABASE keystone;
- mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
- IDENTIFIED BY 'openstack';
- mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
- IDENTIFIED BY 'openstack';
4) 創(chuàng)建數(shù)據(jù)表
- # keystone-manage db_sync
5) 創(chuàng)建一個隨機的 Token用于連接認證服務時使用
- # openssl rand -hex 10 > /root/token #后面還會用到所以可以保存起來
編輯 /etc/keystone/keyston.conf
- [DEFAULT]
- # A "shared secret" between keystone and other openstack services
- admin_token = ADMIN_TOKEN
- ...
6) 重啟服務
- # service keystone restart
c) 創(chuàng)建租戶(tenant)、用戶(user)、角色(role)
在還沒有創(chuàng)建任何用戶之前,我們必須要使用token來進行認證,可以將token設置為環(huán)境變量,或者在使用keystone命令的時候使用 –os-token 命令來指定token。
這里設置為環(huán)境變量:
- # export OS_SERVICE_TOKEN=ADMIN_TOKEN
- # export OS_SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0
1) 創(chuàng)建租戶admin和service
- # keystone tenant-create --name=admin --description="Admin Tenant"
- # keystone tenant-create --name=service --description="Service Tenant"
#p#
2) 創(chuàng)建用戶admin
- #keystone user-create --name=admin --pass=openstack --email=admin@localhost
- # keystone role-create --name=admin
3) 為admin創(chuàng)建role
4) 關(guān)聯(lián) user、tenant和role
- # keystone user-role-add --user=admin --tenant=admin --role=admin
d) 創(chuàng)建服務(service)和訪問端點(endpoint)
1) 創(chuàng)建keystone服務,類型為identity(認證)
- # keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"
2) 使用上面返回的service id來創(chuàng)建服務的訪問端點
- # keystone endpoint-create \
- --service-id=the_service_id_above\
- --publicurl=http://127.0.0.1:5000/v2.0 \
- --internalurl=http://127.0.0.1:5000/v2.0 \
- --adminurl=http://127.0.0.1:35357/v2.0
e) 校驗keystone服務
現(xiàn)在已經(jīng)創(chuàng)建了admin用戶,所以可以通過admin用戶來訪問keystone服務
- $ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
- $ keystone --os-username=admin --os-password=openstack --os-auth-url=http://127.0.0.1:35357/v2.0 token-get
為了避免每次都需要輸入用戶名和密碼,可以將它們保存為環(huán)境變量。編輯 /root/keystone.sh
- export OS_USERNAME=admin
- export OS_PASSWORD=openstack
- export OS_TENANT_NAME=admin
- export OS_AUTH_URL=http://127.0.0.1:35357/v2.0
這樣只要執(zhí)行 # source keystone.sh 命令就可以連接keystone了
五、鏡像服務—glance
a) 安裝
- # apt-get install glance python-glanceclient
b) 配置
1) 設置數(shù)據(jù)庫連接
編輯配置文件/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf
- ...
- [DEFAULT]
- ...
- # SQLAlchemy connection string for the reference implementation
- # registry server. Any valid SQLAlchemy connection string is fine.
- # See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.
- html#sqlalchemy.create_engine
- sql_connection = mysql://glance:openstack@127.0.0.1/glance
- ...
2) 創(chuàng)建數(shù)據(jù)庫
- # mysql -u root -p
- mysql> CREATE DATABASE glance;
- mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
- IDENTIFIED BY 'openstack';
- mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
- IDENTIFIED BY 'openstack';
3) 創(chuàng)建數(shù)據(jù)表
- # glance-manage db_sync
4) 創(chuàng)建glance用戶并關(guān)聯(lián)到角色
- # keystone user-create --name=glance --pass=openstack --email=glance@localhost
- # keystone user-role-add --user=glance --tenant=service --role=admin
5) 配置glance服務使用keystone來進行認證
編輯/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf文件
- [keystone_authtoken]
- ...
- auth_uri = http://127.0.0.1:5000
- auth_host = 127.0.0.1
- auth_port = 35357
- auth_protocol = http
- admin_tenant_name = service
- admin_user = glance
- admin_password = openstack
- ...
- [paste_deploy]
- ...
- flavor = keystone
6) 添加認證信息到/etc/glance/glance-api-paste.ini和/etc/glance/glance-registry-paste.ini文件
- [filter:authtoken]
- paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory
- auth_host=127.0.0.1
- admin_user=glance
- admin_tenant_name=service
- admin_password=openstack
7) 注冊鏡像服務
- # keystone service-create --name=glance --type=image --description="Glance Image Service"
8) 使用上面返回的service id創(chuàng)建訪問點
- # keystone endpoint-create \
- --service-id=the_service_id_above \
- --publicurl=http://127.0.0.1:9292 \
- --internalurl=http://127.0.0.1:9292 \
- --adminurl=http://127.0.0.1:9292
#p#
9) 重啟鏡像服務
# service glance-registry restart
# service glance-api restart
c) 創(chuàng)建鏡像文件
CirrOS鏡像是常用的一個qcow2類型的鏡像,下載鏡像并上傳到glance服務器
- $ mkdir images
- $ cd images/
- $ wget http://cdn.download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img
- # glance image-create --name="CirrOS 0.3.1" --disk-format=qcow2 --container-format=bare --is-public=true < cirros-0.3.1-x86_64-disk.img
查看上傳的鏡像可以使用
- # glance image-list
六、計算服務
a) 安裝計算服務軟件包
- # apt-get install nova-novncproxy novnc nova-api nova-ajax-console-proxy nova-cert nova-conductor nova-consoleauth nova-doc nova-scheduler python-novaclient
- # apt-get install nova-compute-kvm python-guestfs
修改內(nèi)核bug
- # dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-$(uname -r)
- # vim /etc/kernel/postinst.d/statoverride
#!/bin/sh
version="$1"
# passing the kernel version is required
[ -z "${version}" ] && exit 0
dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-${version}
# chmod +x /etc/kernel/postinst.d/statoverride
1) 配置數(shù)據(jù)庫
編輯配置文件 /etc/nova/nova.conf
- ...
- [database]
- # The SQLAlchemy connection string used to connect to the database
- connection = mysql://nova:openstack@127.0.0.1/nova
- [keystone_authtoken]
- auth_host = 127.0.0.1
- auth_port = 35357
- auth_protocol = http
- admin_tenant_name = service
- admin_user = nova
- admin_password = openstack
2) 配置計算服務使用rabbitmq消息隊列傳送信息
編輯配置文件 /etc/nova/nova.conf
- ...
- [DEFAULT]
- rpc_backend = nova.rpc.impl_kombu
- rabbit_host = 127.0.0.1
- rabbit_password = openstack # 如果rabbitmq未改,則使用默認guest密碼
- ...
3) 創(chuàng)建數(shù)據(jù)庫
- # mysql -u root -p
- mysql> CREATE DATABASE nova;
- mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'openstack';
- mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'openstack';
4) 創(chuàng)建數(shù)據(jù)表
- # nova-manage db sync
5) 開啟遠程訪問控制支持
編輯配置文件 /etc/nova/nova.conf
- ...
- [DEFAULT]
- ...
- my_ip=127.0.0.1
- vnc_enabled=True
- vncserver_listen=127.0.0.1
- vncserver_proxyclient_address=127.0.0.1
- novncproxy_base_url=http://127.0.0.1:6080/vnc_auto.html
6) 創(chuàng)建nova用戶
- # keystone user-create --name=nova --pass=openstack --email=nova@localhost
- # keystone user-role-add --user=nova --tenant=service --role=admin
7) 配置nova使用keystone認證并配置glance服務
編輯配置文件 /etc/nova/nova.conf
- [DEFAULT]
- ...
- auth_strategy=keystone
- glance_host=127.0.0.1
8) 添加認證信息到/etc/nova/api-paste.ini文件
- [filter:authtoken]
- paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
- auth_host = 127.0.0.1
- auth_port = 35357
- auth_protocol = http
- auth_uri = http://127.0.0.1:5000/v2.0
- admin_tenant_name = service
- admin_user = nova
- admin_password = openstack
9) 創(chuàng)建計算服務和訪問點
- keystone service-create --name=nova --type=compute --description="Nova Compute service"
- # keystone endpoint-create --service-id=the_service_id_above \
- --publicurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s \
- --internalurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s \
- --adminurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s
10) 重啟計算服務
- # service nova-api restart
- # service nova-cert restart
- # service nova-consoleauth restart
- # service nova-scheduler restart
- # service nova-conductor restart
- # service nova-novncproxy restart
- # service nova-compute restart
#p#
11) 配置網(wǎng)絡
- # apt-get install nova-network nova-api-metadata
編輯配置文件 /etc/nova/nova.conf
- [DEFAULT]
- ...
- network_manager = nova.network.manager.FlatDHCPManager
- firewall_driver = nova.virt.libvirt.firewall.IptablesFirewallDriver
- network_size = 254
- allow_same_net_traffic = False
- multi_host = True
- send_arp_for_ha = True
- share_dhcp_address = True
- force_dhcp_release = True
- flat_network_bridge = br100
- flat_interface = eth1
- public_interface = eth1
重啟服務
- # service nova-network restart
注:安裝完成網(wǎng)絡服務之后,需要重新安裝nova-api軟件,否則nova-api服務無法啟動
- # apt-get install nova-api
創(chuàng)建虛擬網(wǎng)絡用于分配給虛擬機實例
- # nova network-create vmnet --fixed-range-v4=10.0.0.0/24 --bridge=br100 --multi-host=T
七、載入實例
a) 配置認證服務
- $ ssh-keygen
- $ cd .ssh
- $ nova keypair-add --pub_key id_rsa.pub mykey
b) 添加ssh和ping服務
- # nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
- # nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
c) 查看鏡像
- $ nova image-list
d) 查看flavor列表
- $ nova flavor-list
e) 創(chuàng)建虛擬機實例
- $ nova boot --flavor 1 --key_name mykey –image IMAGE_ID --security_group default cirrOS
f) 查看實例
- $ nova list
g) 連接到實例
- $ ssh cirros@10.0.0.3
h) vnc連接
在命令行執(zhí)行 # nova get-vnc–console cirrOS novnc 命令,nova會返回一個vnc連接地址,將此地址復制到瀏覽器的地址欄內(nèi),可以通過vnc方式訪問虛擬機
八、安裝dashboard
首先安裝apache-httpd服務器
- # apt-get install apache2
然后安裝dashboard
- # apt-get install memcached libapache2-mod-wsgi openstack-dashboard
dashboard安裝完成之后,使用默認的配置即可訪問
注:kvm不支持嵌套虛擬化,openstack默認使用的Hypervisor是kvm,需要修改配置文件 /etc/nova/nova-compute 文件
- compute_driver=libvirt.LibvirtDriver
- libvirt_type=kvm
- 將kvm改為qemu