OpenStack All in One

jopen 10年前發布 | 28K 次閱讀 OpenStack 分布式/云計算/大數據

系統環境:ubuntu-server-14.04

網絡環境:VMware Nat eth0 192.168.149.130

配置密碼:為了便于管理,所有服務密碼均配置為openstack



一、數據庫

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</pre>

c) 重啟 mysql 服務,使用安全模式初始化數據庫,刪除匿名用戶

# service mysql restart

mysql_secure_installation 或 # mysql_install_db</pre>

二、軟件包配置

a) 安裝 OpenStack Havana Ubuntu 云檔案

# apt-get install python-software-properties

add-apt-repository cloud-archive:Havana</pre>

b) 更新軟件包數據庫,更新系統

# apt-get update && apt-get dist-upgrade

reboot</pre>

三、消息服務

消息服務使用 rabbitmq

# apt-get install rabbitmq-server

注:rabbitmq默認提供一個guest用戶和默認的guest密碼,這里需要修改一下guest用戶的密碼,因為后面配置nova服務的時候需要用到rabbitmq密碼

# rabbitmqctl change_password guest openstack

OpenStack All in One

四、Keystone認證服務

a) 安裝

# apt-get install keystone

b) 配置

    1)  修改數據庫連接方式,編輯配置文件/etc/keystone/keystone.conf

...
[sql]

The SQLAlchemy connection string used to connect to the database

connection = mysql://keystone:openstack@127.0.0.1/keystone ...</pre>

          2)  刪除默認創建的數據庫

rm –f /var/lib/keystone/keystone.db

          3)  創建數據庫

# 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)  創建數據表

# keystone-manage db_sync

          5)  創建一個隨機的 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 ...</pre>

            6)  重啟服務

# service keystone restart

c) 創建租戶(tenant)、用戶(user)、角色(role)

        在還沒有創建任何用戶之前,我們必須要使用token來進行認證,可以將token設置為環境變量,或者在使用keystone命令的時候使用 –os-token 命令來指定token

        這里設置為環境變量:         

# export OS_SERVICE_TOKEN=ADMIN_TOKEN

export OS_SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0</pre>

OpenStack All in One

            1)  創建租戶adminservice

# keystone tenant-create --name=admin --description="Admin Tenant"

OpenStack All in One

# keystone tenant-create --name=service --description="Service Tenant"

OpenStack All in One

            2)  創建用戶admin


#keystone user-create --name=admin --pass=openstack --email=admin@localhost


OpenStack All in One

# keystone role-create --name=admin

            3)  admin創建role

OpenStack All in One

            4)  關聯 usertenantrole

# keystone user-role-add --user=admin --tenant=admin --role=admin

d) 創建服務(service)和訪問端點(endpoint)

      1)  創建keystone服務,類型為identity(認證)

# keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"

OpenStack All in One

            2)  使用上面返回的service id來創建服務的訪問端點

# 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</pre>

OpenStack All in One

e) 校驗keystone服務

現在已經創建了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

為了避免每次都需要輸入用戶名和密碼,可以將它們保存為環境變量。編輯 /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

這樣只要執行 # source keystone.sh 命令就可以連接keystone

五、鏡像服務—glance

a) 安裝

# apt-get install glance python-glanceclient

b) 配置

      1)  設置數據庫連接

    編輯配置文件/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 ...</pre>

            2)  創建數據庫

# 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)  創建數據表

# glance-manage db_sync

            4)  創建glance用戶并關聯到角色

# keystone user-create --name=glance --pass=openstack --email=glance@localhost

OpenStack All in One

# 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"

OpenStack All in One

            8)  使用上面返回的service id創建訪問點

# 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

OpenStack All in One

            9)  重啟鏡像服務

# service glance-registry restart

service glance-api restart</pre>

c) 創建鏡像文件

    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</pre>

          查看上傳的鏡像可以使用

# glance image-list

OpenStack All in One               

六、計算服務

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</pre>

        修改內核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}</pre>

# chmod +x /etc/kernel/postinst.d/statoverride

b) 配置

      1)  配置數據庫

        編輯配置文件 /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</pre>

            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)  創建數據庫

# 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)  創建數據表

# 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)  創建nova用戶

# keystone user-create --name=nova --pass=openstack --email=nova@localhost

OpenStack All in One

# 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)  創建計算服務和訪問點

keystone service-create --name=nova --type=compute --description="Nova Compute service"

OpenStack All in One

# 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

OpenStack All in One

            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</pre>

            11)   配置網絡

# 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

注:安裝完成網絡服務之后,需要重新安裝nova-api軟件,否則nova-api服務無法啟動       

# apt-get install nova-api

            創建虛擬網絡用于分配給虛擬機實例

# nova network-create vmnet --fixed-range-v4=10.0.0.0/24 --bridge=br100 --multi-host=T

OpenStack All in One

七、載入實例

a) 配置認證服務

$ ssh-keygen
$ cd .ssh
$ nova keypair-add --pub_key id_rsa.pub mykey

b) 添加sshping服務

# 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) 創建虛擬機實例

$ nova boot --flavor 1 --key_name mykey –image IMAGE_ID --security_group default cirrOS

OpenStack All in One

        f)  查看實例

$ nova list

  g) 連接到實例

$ ssh cirros@10.0.0.3

        h) vnc連接
    在命令行執行 # nova get-vnc–console cirrOS novnc 命令,nova會返回一個vnc連接地址,將此地址復制到瀏覽器的地址欄內,可以通過vnc方式訪問虛擬機

OpenStack All in One

八、安裝dashboard

    首先安裝apache-httpd服務器

# apt-get install apache2

    然后安裝dashboard

# apt-get install memcached libapache2-mod-wsgi openstack-dashboard

      dashboard安裝完成之后,使用默認的配置即可訪問

OpenStack All in One


注:kvm不支持嵌套虛擬化,openstack默認使用的Hypervisor是kvm,需要修改配置文件 /etc/nova/nova-compute 文件

compute_driver=libvirt.LibvirtDriver
libvirt_type=kvm

將kvm改為qemu</pre>

來自:http://my.oschina.net/JerryBaby/blog/301407

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!