Openstack Diabloインストール
9/22にOpenstack Diabloが正式にリリースとなりましたので、試してみたいと思います。
Hypervisor:KVM
NetworkManager:DHCPManager
ImageService:Glance
認証サービス:Keystone
Interface:Dashboard
0.OSインストール,初期設定
(2)ネットワークインタフェースの設定
server1
$ sudo vi /etc/network/interfaces auto eth0 iface eth0 static address 192.168.33.3 netmask 255.255.255.0 gateway 192.168.33.1 dns-nameservers 192.168.33.1 $ sudo /etc/init.d/networking restart
server2
$ sudo vi /etc/network/interfaces auto eth0 iface eth0 static address 192.168.33.10 netmask 255.255.255.0 gateway 192.168.33.1 dns-nameservers 192.168.33.1 $ sudo /etc/init.d/networking restart
全ノード共通
$ sudo vi /etc/hosts 192.168.33.3 server1 192.168.33.10 server2
1.Cloud Controller/Computeノードの準備
server1(Controller/Computeノード)で実施します
(1)パッケージインストール
リポジトリの追加を行います。
パッケージはCactusと変わりません。
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:openstack-release/2011.3 $ sudo apt-get update $ sudo apt-get install -y rabbitmq-server $ sudo apt-get install -y python-greenlet python-mysqldb $ sudo apt-get install -y nova-volume nova-vncproxy nova-api nova-ajax-console-proxy $ sudo apt-get install -y nova-network nova-compute $ sudo apt-get install -y libvirt-bin $ sudo apt-get install -y glance $ sudo apt-get install -y euca2ools unzip
(2)MySQL Serverのインストールと管理データベースの作成
Openstackの設定や稼働状況を管理するデータベースにはMySQLを利用します。
$ vi ~/mysql.sh #!/bin/bash MYSQL_PASS=nova NOVA_PASS=nova cat << MYSQL_PRESEED |debconf-set-selections mysql-server-5.1 mysql-server/root_password password $MYSQL_PASS mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASS mysql-server-5.1 mysql-server/start_on_boot boolean true MYSQL_PRESEED $ bash ~/mysql.sh $ sudo apt-get install -y mysql-server $ sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf $ sudo service mysql restart $ MYSQL_PASS=nova $ sudo mysql -uroot -p$MYSQL_PASS -e 'CREATE DATABASE nova;' $ sudo mysql -u root -pnova -e "GRANT ALL PRIVILEGES ON *.* TO 'nova'@'%' WITH GRANT OPTION;" $ sudo mysql -u root -p$MYSQL_PASS -e "SET PASSWORD FOR 'nova'@'%' = PASSWORD('$NOVA_PASS');"
2.Openstackセットアップ
server1にて実施します。
(1)nova.confのパーミッション変更
nova.confはnovaユーザが参照できるようにパーミッションを設定しておかないと、nova-apiが起動しません。
$ sudo addgroup nova $ sudo chown -R nova:nova /etc/nova $ sudo chmod 640 /etc/nova/nova.conf $ sudo chown nova:nova /etc/nova/nova-compute.conf $ sudo chmod 640 /etc/nova/nova-compute.conf
(2)nova.confの設定
NetworkManagerのデフォルト値はnova.network.manager.VlanManagerです。
今回はnova.network.managerをFlatDHCPManagerにします。
use_syslogを指定すると、nova-{api,network,compute}等のログがsyslogに出力されるようになるので地味に便利です。
$ sudo vi /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 --flagfile=/etc/nova/nova-compute.conf --force_dhcp_release=True --use_deprecated_auth --verbose --rabbit_host=server1 --sql_connection=mysql://nova:nova@server1/nova --network_manager=nova.network.manager.FlatDHCPManager --public_interface=eth0 --flat_interface=eth0 --flat_injected=false --bridge=eth0 --bridge_interface=br100 --network_host=192.168.33.3 --routing_source_ip=192.168.33.3 --fixed_range=10.0.0.0/8 --network_size=1024 --cc_host=server1 --ec2_url=http://server1:8773/services/Cloud --s3_host=server1 --s3_dmz=server1 --glance_api_servers=server1:9292 --image_server=nova.image.glance.GlanceImageService --vnc_enabled=true --vncproxy_url=http://server1:6080 --vnc_console_proxy_url=http://server1:6080 --use_syslog
(3)nova-compute.confの設定
Cactusまでは存在しなかったこのファイル。
Diabloから増えた模様、利用するハイパーバイザを記述します。
$ sudo vi /etc/nova/nova-compute.conf
--libvirt_type=kvm
(4)データベースにテーブル作成とサービス再起動
$ sudo nova-manage db sync $ sudo restart nova-network $ sudo restart nova-api $ sudo restart nova-compute $ sudo restart nova-scheduler $ sudo restart glance
(5)ユーザーとプロジェクトの作成
$ sudo nova-manage user admin nova-admin export EC2_ACCESS_KEY=4a17871e-75c6-4372-8994-aa92b0e922a7 export EC2_SECRET_KEY=c2ead9a3-768f-4bd2-8e6f-f1f1ade9a8d5 $ sudo nova-manage project create nova-project nova-admin
(6)ネットワークの作成
仮想インスタンスに割り当てる内部ネットワークと、外部からアクセスするためのFloating IPを定義します。
内部ネットワークの作成
Cactusから引数が大幅に変更されています(多分)
bridgeデバイス名をbr100,bridgeデバイスとなるinterfaceをeth0として定義します。
また、nova-networkを将来マルチノードで冗長化するので、--multi_hostフラグをT(恐らくTrue)に設定しておきます。
$ sudo nova-manage network create public --bridge=br100 --bridge_interface=eth0 \ --fixed_range_v4=10.0.1.0/24 --num_network=1 --network_size=256 --multi_host=T
Floating IPの作成
外部アドレスとして割当てるIPのレンジを指定します。
いまさらCIDR先生を利用すると楽です。
$ sudo nova-manage float create --ip_range=192.168.33.128/28
3.プロジェクトのセットアップ
server1にて実施します。
(1)プロジェクトとユーザの紐付け
実OSユーザが、作成したプロジェクトを管理できるように環境変数を設定します。
$ sudo -i # mkdir /root/creds # nova-manage project zipfile nova-project nova-admin /root/creds/novacreds.zip # cd ~/creds # unzip novacreds.zip # vi ~/.bashrc --以下を記述 source ~/creds/novarc # source ~/.bashrc
(2)仮想インスタンスのポートを通過設定
# euca-authorize -P icmp -t -1:-1 default # euca-authorize -P tcp -p 22 default
以上でserver1のセットアップが完了です。
4.Computeノード追加
2台目のノードをCompute専用ノードとして設定します。
setver2にて実施します。
(1)パッケージインストール
nova-computeパッケージを追加します
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:openstack-release/2011.3 $ sudo apt-get update $ sudo apt-get install nova-compute
(2)nova.confの設定
nova.confの内容はserver1の/etc/nova/nova.confと同じ内容でOKです。
$ sudo chown nova:nova /etc/nova/nova.conf
$ sudo chown -R nova. /etc/nova
$ sudo vi /etc/nova/nova.conf
***省略***
(3)computeサービス再起動と確認
$ sudo restart nova-compute $ sudo nova-manage service list Binary Host Zone Status State Updated_At nova-network server1 nova enabled :-) 2011-10-04 10:28:51 nova-compute server1 nova enabled :-) 2011-10-04 10:28:46 nova-scheduler server1 nova enabled :-) 2011-10-04 10:28:51 nova-compute server2 nova enabled :-) 2011-10-04 10:28:44
以上でComputeノードの設定が完了です。
4.イメージの登録と起動
euca2oolsをインストールしたserver1にて実施します。
(1)イメージの登録
サンプルイメージを登録します。
仮想インスタンスの起動確認なら、小さいイメージを利用すると作業が捗るので、
今回はココで利用しているイメージを取得して、起動確認を行います。
$ sudo -i # mkdir ~/images # wget -c http://images.ansolabs.com/tty.tgz # mkdir tty # tar zxf tty.tgz # mv a* tty # nova-manage image convert /root/images/tty
(2)インスタンスの起動
インスタンスは1プロジェクトにつき、デフォルト10インスタンスまで起動できます。
# euca-add-keypair tty_key > tty_key.pem # euca-run-instances -k tty_key ami-tty RESERVATION r-7e1u8p9e nova-project default INSTANCE i-00000001 ami-00000003 pending tty_key (nova-project, None) 0 m1.small 2011-10-04T08:24:32Z unknown zone aki-00000001 ari-00000002 # euca-describe-instances RESERVATION r-7e1u8p9e nova-project default INSTANCE i-00000001 ami-00000003 10.0.1.2 10.0.1.2 pending tty_key (nova-project, server2) 0 m1.small 2011-10-04T08:24:32Z nova aki-00000001 ari-00000002
以上でインスタンスの登録と起動が完了です。
5 Openstack Identity(Keystone)のインストール&セットアップ
server1にて実施します。
(1) Openstack Identity(Keystone)のインストール
以前はgitで取得していましたが、ついにaptでインストールすることができるようになりました。
データベースにはMySQLを利用します
$ sudo add-apt-repository ppa:keystone-core/trunk $ sudo apt-get update $ sudo apt-get install keystone $ mysql -u nova -pnova mysql> CREATE DATABASE keystone; mysql> exit;
(2)keystone設定ファイルの作成
aptでkeystoneをインストールしても、設定ファイルはインストールされません・・・
自身で作成する必要があります。
$ sudo vi /etc/keystone.conf [DEFAULT] verbose = True debug = False default_store = mysql log_file = keystone.log backends = keystone.backends.sqlalchemy service-header-mappings = { 'nova' : 'X-Server-Management-Url', 'swift' : 'X-Storage-Url', 'cdn' : 'X-CDN-Management-Url'} service_host = 0.0.0.0 service_port = 5000 admin_host = 0.0.0.0 admin_port = 35357 keystone-admin-role = Admin keystone-service-admin-role = KeystoneServiceAdmin hash-password = True [keystone.backends.sqlalchemy] sql_connection = mysql://nova:nova@server1/keystone backend_entities = ['UserRoleAssociation', 'Endpoints', 'Role', 'Tenant', 'User', 'Credentials', 'EndpointTemplates', 'Token', 'Service'] sql_idle_timeout = 30 [pipeline:admin] pipeline = urlrewritefilter admin_api [pipeline:keystone-legacy-auth] pipeline = urlrewritefilter legacy_auth RAX-KEY-extension service_api [app:service_api] paste.app_factory = keystone.server:service_app_factory [app:admin_api] paste.app_factory = keystone.server:admin_app_factory [filter:urlrewritefilter] paste.filter_factory = keystone.middleware.url:filter_factory [filter:legacy_auth] paste.filter_factory = keystone.frontends.legacy_token_auth:filter_factory [filter:RAX-KEY-extension] paste.filter_factory = keystone.contrib.extensions.service.raxkey.frontend:filter_factory
(3)/etc/init/keystone.confの修正
keystone起動時の引数を変更します。
$ sudo vi /etc/init/keystone.conf exec su -c "keystone --log-dir=/var/log/keystone --log-file=api.log" keystone ↓ exec su -c "keystone --debug --verbose --config-file=/etc/keystone.conf --log-dir=/var/log/keystone --log-file=api.log" keystone
(4)keystone起動
$ sudo start keystone
(5)トークンの作成
keystoneに、テナントと認証ユーザを作成します
$ sudo keystone-manage -c /etc/keystone.conf tenant add admin $ sudo keystone-manage -c /etc/keystone.conf user add admin password $ sudo keystone-manage -c /etc/keystone.conf role add Admin $ sudo keystone-manage -c /etc/keystone.conf role add Member $ sudo keystone-manage -c /etc/keystone.conf grant $ sudo keystone-manage -c /etc/keystone.conf role grant Admin admin $ sudo keystone-manage -c /etc/keystone.conf token add 12345678 admin admin 2015-02-05T00:00
以上でkeystoneの設定は完了です(たぶn)
6.DashBoardのインストール&セットアップ
OpenstackをG・U・I!で管理するためのインタフェース Dashboardをインストールします。
server1にて実施します。
(1)Dashboardのインストール&セットアップ
$ mkdir ~/src $ cd ~/src $ git clone https://github.com/4P/openstack-dashboard $ cd openstack-dashboard/openstack-dashboard/local $ cp local_settings.py.example local_settings.py $ vi local_settings.py.example local_settings.py **追記 OPENSTACK_ADMIN_TOKEN = "12345678" $ cd ~/src/openstack-dashboard/openstack-dashboard/ $ apt-get install -y python-setuptools $ sudo easy_install virtualenv $ python tools/install_venv.py $ source .dashboard-venv/bin/activate $ tools/with_venv.sh dashboard/manage.py runserver 0.0.0.0:8000
と、ドキュメント通りにDashboardをインストールするとこのように失敗してしまいます。
なぜだうーん。
そこで、ここのサイトを参考に手順を変更します
※ソースコードの取得などは一部省略
(2)local_settings.pyの設定
$ vi local_settings.py NOVA_DEFAULT_ENDPOINT = 'http://localhost:8773/services/Cloud' NOVA_DEFAULT_REGION = 'nova' NOVA_ACCESS_KEY = 'admin:nova-project' NOVA_SECRET_KEY = '08973639-16fa-44a9-9005-d44ed705bbfb' NOVA_ADMIN_USER = 'nova-admin' NOVA_PROJECT = 'nova-project'
(3)起動
$ tools/with_venv.sh dashboard/manage.py syncdb You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (Leave blank to use 'root'): admin E-mail address: admin@localhost.local Password: <パスワード入力> Password (again): <パスワード再入力> No fixtures found.
7.次のステップ
・自作イメージで(・∀・)ニヤニヤする
・Dashboardの設定をミスったと思われるので、修正する。
・Nova Volume,Swiftを試す
・ユーザ管理/プロジェクト管理,課金について学習
・複数のノードでNova-networkを稼働させる。
・NetworkManagerに替わると言われているNetwork管理方式Quantumを学習
等々試すことは沢山ありますねえ。
そうそう、CloudStackも試してみないと。