GIT –  là một phần mềm mã nguồn mở dùng cho do Rackspace và Nasa cùng nhau phát triển, có tính năng tương tự như EC2 và S3 (do đó Openstack thuộc IaaS).  Openstack gồm 3 thành phần: Compute Infrastructure (Nova), Storage Infrastructure(Swift) và Imaging Service(Glance). Tìm hiểu thêm tại www.openstack.org

Giả sử bạn đã có 1 server chạy trên VirtualBox có user name là localadmin; 2 card mạng: eth0 (NAT) để kết nối internet, eth1 (Host-only) giúp cho máy host (máy mà bạn cài VirtualBox) và các máy ảo trong VirtualBox tương tác với nhau; openssh-server đã được cài (nếu chưa cài thì dùng lệnh $ sudo apt-get –y openssh-server); và có 1 partition loại Linux LVM.

1/Config network:

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install bridge-utils

$ sudo reboot

Dùng lệnh $ sudo nano /etc/network/interfaces và thêm vào đoạn sau:

 auto br100

iface br100 inet static

bridge_ports eth1

bridge_stp off

bridge_maxwait 0

bridge_fd 0

address 192.168.56.21

netmask 255.255.0.0

broadcast 192.168.255.255

Khởi động lại network

$ sudo /etc/init.d/networking restart

2/ Install NTP

Openstack nova cần NTP để đảm bảo thời gian trên các Cloud compute đồng bộ, do đó trênCloud Controller cần cài NTP server và trên Cloud compute cần cài NTP client:

$ sudo apt-get install ntp

Dùng lệnh $ sudo nano /etc/ntp.conf và thêm vào 2 dòng sau:

server 127.127.1.0

fudge 127.127.1.0 stratum 10

Khởi động lại ntp

$ sudo /etc/init.d/ntp restart

3/ Install Glance

$ sudo apt-get install glance

4/ Install -server

 $ sudo apt-get install -y mysql-server

Trong quá trình cài đặt, nhập mật mã cho root là 12345.

Dùng lệnh $ sudo nano /etc/mysql/my.cnf để sửa 127.0.0.1 thành 0.0.0.0, tức là

 bind-address = 0.0.0.0

Khởi động lại mysql

$ sudo restart mysql

Tạo database nova và cấp quyền truy cập từ bất kì máy nào cho root:

$ sudo mysql -uroot –p’12345′ -e ‘create database nova;’

$ sudo mysql -uroot -p’12345′ -e “grant all privileges on *.* to  ‘root’@’%’ with grant option;”

$ sudo mysql -uroot -p’12345′ -e “set for ‘root’@’%’ = (’12345′);”

5/ Install Nova

$ sudo apt-get install -y rabbitmq-server nova-common nova-doc python-nova nova-api nova-network nova-volume nova-objectstore nova-scheduler nova-compute

$ sudo apt-get install -y euca2ools

$ sudo apt-get install -y unzip

Dùng lệnh $ sudo nano /etc/nova/nova.conf để sửa nội dung lại như sau:

–dhcpbridge_flagfile=/etc/nova/nova.conf

–dhcpbridge=/usr/bin/nova-dhcpbridge

–logdir=/var/log/nova

–lock_path=/var/lock/nova

–state_path=/var/lib/nova

–verbose

–s3_host=192.168.56.21

–rabbit_host=192.168.56.21

–cc_host=192.168.56.21

–ec2_url=http:// 192.168.56.21:8773/services/Cloud

–fixed_range=192.168.0.0/16

–network_size=8

–FAKE_subdomain=ec2

–routing_source_ip=192.168.56.21

–sql_connection=mysql://root:12345@192.168.56.21/nova

–glance_host=192.168.56.21

–image_service=nova.image.glance.GlanceImageService

–iscsi_ip_prefix=192.168.

Enable iscsitarget

$ sudo sed -i ’s/false/true/g’ /etc/default/iscsitarget

$ sudo service iscsitarget restart

Thay sda5 trong 2 dòng lệnh sau đây tương ứng với tên của LVM partition trong trường hợp của bạn:

$ sudo pvcreate /dev/sda5

$ sudo vgcreate nova-volumes /dev/sda5

$ sudo groupadd nova

$ sudo chown -R root:nova /etc/nova

$ sudo chmod 644 /etc/nova/nova.conf

$ sudo restart libvirt-bin; sudo restart nova-network; sudo restart nova-compute; sudo restart nova-api; sudo restart nova-objectstore; sudo restart nova-scheduler; sudo restart nova-volume; sudo restart glance-api; sudo restart glance-registry

6/ Tạo nova schema, network, admin

 $ sudo nova-manage db sync

$ sudo nova-manage network create 192.168.56.0/24 1 255

$ sudo nova-manage floating create 10.10.10.2 10.10.10.224/27

$ sudo nova-manage user admin novaadmin

$ sudo nova-manage project create proj novaadmin

$ sudo mkdir /home/localadmin/creds

$ sudo nova-manage project zipfile proj novaadmin /home/localadmin/creds/novacreds.zip

$ cd /home/localadmin/creds

$ unzip novacreds.zip

$ sudo chown localadmin:localadmin /home/localadmin/creds/ -R

$ source /home/localadmin/creds/novarc

Mỗi lần dùng nova đều phải dùng đến các thiết lập environment trong novarc, nên để tránh mỗi lần đều phải dùng source novarc, ta thêm các thiết lập này vào .bashrc luôn:

$ cat /home/localadmin/creds/novarc >> /home/localadmin/.bashrc

$ source /home/localadmin/.bashrc

Khởi động lại nova

$ sudo restart libvirt-bin; sudo restart nova-network; sudo restart nova-compute; sudo restart nova-api; sudo restart nova-objectstore; sudo restart nova-scheduler; sudo restart nova-volume; sudo restart glance-api; sudo restart glance-registry

Nếu thiết lập các bước đúng thì dùng lệnh $ euca-describe-availability-zones verbose sẽ hiện ra thông tin giống như sau:

AVAILABILITYZONE nova available

AVAILABILITYZONE |- server1

AVAILABILITYZONE | |- nova-compute enabled : -) 2011-04-03 07:48:50

AVAILABILITYZONE | |- nova-scheduler enabled : -) 2011-04-03 07:48:48

AVAILABILITYZONE | |- nova-network enabled : -) 2011-04-03 07:48:49

AVAILABILITYZONE | |- nova-volume enabled : -) 2011-04-03 07:48:49

7/ Install Dashboard

 $ sudo apt-get install -y bzr

$ sudo easy_install virtualenv

$ sudo bzr init-repo .

$ sudo bzr branch lp:openstack-dashboard -r 46 /opt/osdb

$ cd /opt/osdb

$ sudo sh run_tests.sh

$ cd openstack-dashboard

Dùng lệnh $ sudo nano /opt/osdb/openstack-dashboard/local/local_settings.py để sửa nội dung thành (KEY được lấy giống như file novarc):

 NOVA_DEFAULT_ENDPOINT = ’http://localhost:8773/services/Cloud’

NOVA_DEFAULT_REGION = ’nova’

NOVA_ACCESS_KEY = ’3d4b755a-abf1-4c56-b2a0-9fe95a9c3f91:proj’

NOVA_SECRET_KEY = ’8b1e3378-268f-4dc1-a6df-3a2117c6c919’

NOVA_ADMIN_USER = ’novaadmin’

NOVA_PROJECT = ’proj’

Dashboard mặc định dùng SQLite, bây giờ ta thiết lập lại để dùng MySQL

$ sudo apt-get install libmysqlclient-dev

$ sudo apt-get install python-dev

$ cd /opt/osdb/openstack-dashboard

$ sudo bash

$ source .dashboard-venv/bin/activate

$ easy_install mysql-python

$ mysql -uroot –p’12345’

Mysql> create database dashboarddb;

Mysql> grant ALL on dashboarddb.* to nova@localhost identified by ’12345’;

Sửa file /opt/osdb/openstack-dashboard/local/local_settings.py:

DATABASES = {

’default’: {

’ENGINE’: ’django.db.backends.mysql’,

’NAME’: ’dashboarddb’,

’USER’: ’nova’,

’PASSWORD’: ’mygreatsecret’,

’HOST’: ’localhost’,

’default-character-set’: ’utf8’,

}

}

$ sudo ./tools/with_venv.sh dashboard/manage.py syncdb

8/ Running Dashboard on apache2 with mod_wsgi

 $ sudo apt-get install apache2 libapache2-mod-wsgi

Thay toàn bộ nội dung file /opt/osdb/openstack-dashboard/dashboard/wsgi/django.wsgi như sau:

 import sys

import site

import os

#we are adding virtual enviornment path.

vepath = ’/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages’

os.environ[’PYTHON_EGG_’] = ’/opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages’

prev_sys_path = list(sys.path)

# add the site-packages of our virtualenv as a site dir

site.addsitedir(vepath)

# reorder sys.path so new directories from the addsitedir show up first

new_sys_path = [p for p in sys.path if p not in prev_sys_path]

for item in new_sys_path:

sys.path.remove(item)

sys.path”0] = new_sys_path

# import from down here to pull in possible virtualenv django install

from django.core.handlers.wsgi import WSGIHandler

os.environ[’DJANGO_SETTINGS_MODULE’] = ’dashboard.settings’

application = WSGIHandler()

Tạo file mới $ sudo nano /etc/apache2/sites-available/openstack

và nhập vào nội dung sau:

Listen 8888

ServerName 192.168.56.21

WSGIScriptAlias / /opt/osdb/openstack-dashboard/dashboard/wsgi/django.wsgi

Alias /media/admin/ /opt/osdb/openstack-dashboard/.dashboard-venv/lib/python2.7/site-packages/django/contrib/admin/media/

Enable virtual host.

$ sudo a2ensite openstack

$ sudo /etc/init.d/apache2 reload

Trên máy host, mở web browser và nhập vào http://192.168.56.21:8888, sau đó có thể dùng novaadmin và password để đăng nhập. Nếu xuất hiện lỗi Can’t extract file(s) to egg cache với thông báo là không có quyền write vào 1 file nào đó thì dùng lệnh $ sudo chmod 777 cho file đó là ok.

Print Friendly

Comments

comments

Bài viết liên quan