ここまででパッケージによる基盤が整いました。
が、そのままではいまいち動かないので、確認を含め各種コンポーネントの設定を行います。
長くなるので、2ページに分けて投稿します。
このページでは、環境変数設定/RabbitMQ/Memcached/Keystone/Nova を記載します。
おことわり
環境変数設定
この環境変数を設定しておくと、Openstack services (keystone, nova, glance, cinder, quantum, etc..) に簡単にアクセスできるようになります。どのコンポーネントのコマンドにも、–os-tenant-name などの指定オプションがあるため、複数のテナントを管理する際の切替方法はどちらでも大丈夫です。~/.bashrc
1 2 3 4 5 6 7 8 9 10 11 12 |
# # OpenStack # export SERVICE_ENDPOINT=http://192.168.140.3:35357/v2.0/ export SERVICE_TOKEN=AuthToken export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=root export OS_AUTH_URL=http://192.168.140.3:5000/v2.0/ export OS_VERSION=1.1 export OS_NO_CACHE=1 |
設定したら、ログインし直します。
RabbitMQ
パッケージの依存で勝手に入りますが、このメッセージキューイングミドルウェアは、何気に各コンポーネントが利用する重要なものとなっています。まずポートを設定します。
/etc/default/rabbitmq-server
1 |
export RABBITMQ_NODE_PORT=5672 |
設定したら再起動して確かめます。
1 2 |
/etc/init.d/rabbitmq-server restart lsof -i:5672 |
次にユーザを作成します。今回は全コンポーネントで共通のユーザを使用します。それとguestユーザの削除もしておきたいところですが、あとのインストール物で必要としていたので、このタイミングでは残してあります。
1 2 3 |
rabbitmqctl add_vhost /openstack rabbitmqctl add_user openstack openstackpassword rabbitmqctl set_permissions -p /openstack openstack ".*" ".*" ".*" |
Memcached
これは特に設定をしなくて大丈夫です。Keystone
設定ファイル
編集するところは特にないですが、重要なところだけ確認しておきます。/etc/keystone/keystone.conf
1 2 3 4 5 6 7 8 9 10 11 12 |
[DEFAULT] # bind_host = 0.0.0.0 # public_port = 5000 # admin_port = 35357 # compute_port = 8774 # verbose = False log_file = keystone.log log_dir = /var/log/keystone admin_token = AuthToken [sql] connection = mysql://keystone:keystone@192.168.140.3:3306/keystonedb |
Service & Endpoint LIST
ServiceとEndpointが登録されていないと各コンポーネントが利用できないので、もし自動登録されていなければ追加しておきます。ここでは、Keystone以外がなかった場合を体験したことがあったので、その時の追加内容になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
keystone service-list keystone endpoint-list function get_id () { echo `"$@" | awk '/ id / { print $4 }'` } SERVICE_HOST=192.168.140.3 # # Nova # COMPUTE_SERVICE=$(get_id keystone service-create \ --name=nova \ --type=compute \ --description="Compute Service") keystone endpoint-create \ --region RegionOne \ --service_id $COMPUTE_SERVICE \ --publicurl "http://$SERVICE_HOST:8774/v2/%(tenant_id)s" \ --adminurl "http://$SERVICE_HOST:8774/v2/%(tenant_id)s" \ --internalurl "http://$SERVICE_HOST:8774/v2/%(tenant_id)s" # # Volume # VOLUME_SERVICE=$(get_id keystone service-create \ --name=volume \ --type=volume \ --description="Volume Service") keystone endpoint-create \ --region RegionOne \ --service_id $VOLUME_SERVICE \ --publicurl "http://$SERVICE_HOST:8776/v1/%(tenant_id)s" \ --adminurl "http://$SERVICE_HOST:8776/v1/%(tenant_id)s" \ --internalurl "http://$SERVICE_HOST:8776/v1/%(tenant_id)s" # # Image # IMAGE_SERVICE=$(get_id keystone service-create \ --name=glance \ --type=image \ --description="Image Service") keystone endpoint-create \ --region RegionOne \ --service_id $IMAGE_SERVICE \ --publicurl "http://$SERVICE_HOST:9292" \ --adminurl "http://$SERVICE_HOST:9292" \ --internalurl "http://$SERVICE_HOST:9292" # # Swift # SWIFT_SERVICE=$(get_id keystone service-create \ --name=swift \ --type=object-store \ --description="Object Storage Service") keystone endpoint-create \ --region RegionOne \ --service_id $SWIFT_SERVICE \ --publicurl "http://$SERVICE_HOST:8080/v1/AUTH_%(tenant_id)s" \ --adminurl "http://$SERVICE_HOST:8080/v1" \ --internalurl "http://$SERVICE_HOST:8080/v1/AUTH_%(tenant_id)s" # # Quantum # QUANTUM_SERVICE=$(get_id keystone service-create \ --name=quantum \ --type=network \ --description="Quantum Service") keystone endpoint-create \ --region RegionOne \ --service_id $QUANTUM_SERVICE \ --publicurl "http://$SERVICE_HOST:9696/" \ --adminurl "http://$SERVICE_HOST:9696/" \ --internalurl "http://$SERVICE_HOST:9696/" keystone service-list keystone endpoint-list |
Nova
最も重要なnovaの設定ですが、いくつか要点を書きだしておきます。/etc/nova/nova.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
[DEFAULT] ############ # DATABASE # ############ sql_connection = "mysql://nova-common:nova@$my_ip:3306/novadb" ######## # APIs # ######## enabled_apis = "ec2,metadata,osapi_compute" my_ip = 192.168.140.3 ######## # LOGS # ######## logdir = /var/log/nova #log-date-format="%Y-%m-%d %H:%M:%S" #debug=false #logfile_mode="0644" ########## # SYSTEM # ########## state_path = /var/lib/nova lock_path = /var/lock/nova #root_helper="sudo" rootwrap_config = /etc/nova/rootwrap.conf ############# # SCHEDULER # ############# # scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler # scheduler_driver = nova.scheduler.simple.SimpleScheduler scheduler_driver="nova.scheduler.multi.MultiScheduler" compute_scheduler_driver="nova.scheduler.filter_scheduler.FilterScheduler" volume_scheduler_driver="nova.scheduler.chance.ChanceScheduler" scheduler_default_filters=AllHostsFilter #################### # VOLUMES / CINDER # #################### iscsi_helper = tgtadm volume_api_class = nova.volume.cinder.API ############ # RABBITMQ # ############ rabbit_host = 192.168.140.3 #fake_rabbit=false rabbit_virtual_host = /openstack rabbit_userid = openstack rabbit_password = openstackpassword rabbit_port = 5672 ########## # GLANCE # ########## image_service = nova.image.glance.GlanceImageService #glance_api_servers="$glance_host:$glance_port" # Cache glance images locally #cache_images=true glance_host="$my_ip" glance_num_retries=0 glance_port=9292 glance_api_servers="$my_ip:9292" ####################### # NETWORK (linux net) # ####################### # nova-networkを利用しないのでこの部分は全てコメントアウトします # ########### # Quantum # ########### network_api_class = nova.network.quantumv2.api.API quantum_url = "http://$my_ip:9696" quantum_auth_strategy = keystone quantum_admin_tenant_name = admin quantum_admin_username = admin quantum_admin_password = root quantum_admin_auth_url = "http://$my_ip:35357/v2.0" libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtHybirdOVSBridgeDriver linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver firewall_driver = nova.virt.libvirt.firewall.IptablesFirewallDriver #libvirt_use_virtio_for_bridges=True ################# # NOVNC CONSOLE # ################# novnc_enable = true novncproxy_base_url=http://192.168.140.3:6080/vnc_auto.html vncserver_proxyclient_address=$my_ip vncserver_listen=0.0.0.0 vnc_keymap="ja" # xvpvncproxy # # # # # # # # # xvpvncproxy_base_url=http://192.168.140.3:6081/console xvpvncproxy_host="0.0.0.0" xvpvncproxy_port=6081 |
APIの接続情報を編集します。
/etc/nova/api-paste.ini
1 2 3 4 5 6 7 8 9 |
[filter:authtoken] paste.filter_factory = keystone.middleware.auth_token:filter_factory auth_host = 192.168.140.3 auth_port = 35357 auth_protocol = http admin_tenant_name = admin admin_user = admin admin_password = root signing_dir = /tmp/keystone-signing-nova |
ComputeNodeの設定を確認します。
/etc/nova/nova-compute.conf
1 2 3 4 5 6 7 |
[DEFAULT] compute_driver=libvirt.LibvirtDriver libvirt_type=kvm libvirt_ovs_bridge=br-int libvirt_vif_type=ethernet libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver libvirt_use_virtio_for_bridges=True |
編集したら再起動するのですが、間で state_path(novaデータディレクトリ)をシンボリックリンクによって保存先を変更しておきます(state_pathを変えてもいいです)。state_path には色々保存されますが、大きい容量のデータとして、
と結構あるので、もし /var/lib/nova が 10, 20GB 程度しかなかったら変更しておくべきです。
1 2 3 4 5 6 |
for init in /etc/init.d/nova-*; do $init stop; done mv /var/lib/nova /data/ ln -s /data/nova /var/lib/ for init in /etc/init.d/nova-*; do $init start; done |
それでは、コンポーネント設定②に続きます。