When working with DevStack, I occasionally run into situations where the IP address of the VM changes due to external factors. To get back up and running with the new IP address, endpoints for the OpenStack services need to be updated in configuration files and the database. For example, you'll need to update this value in the nova.conf file:
auth_uri = http://[old IP address]:5000/v2.0
and change the IP to the new address. Updating the IP addresses can be automated by running the unstack.sh command and then rerunning stack.sh, but this will destroy any custom updates you've made to the database during development and will remove other objects you've created in OpenStack as well. Updating each one manually is a painful process, so this blog post contains a few simple commands to change IP addresses for all endpoints without having to restack the environment.
Prerequisites
You have a single node DevStack installation using mysql for the database that was working properly before the IP address changed. If you have important data in your environment that can't be lost, make sure to take a backup of all configuration files, data files, and databases before making further changes to your environment.
Shut Down Services
Stop all the running OpenStack services with the unstack.sh script:
~/devstack$ ./unstack.sh
Modifications
To modify the endpoints in the database, you'll need to update values in the endpoints table of the keystone schema.
Log into mysql:
~/devstack$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 267
Server version: 5.5.40-0ubuntu0.12.04.1-log (Ubuntu)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Switch to the keystone schema:
mysql> use keystone
Database changed
Modify endpoint IPs:
mysql> update endpoint set url = REPLACE(url, '[old IP address]', '[new IP address]');
The number of rows this command updates will vary by how many endpoints your installation uses. In my case, it was 30.
Validate that the endpoint urls were updated:
mysql> select url from endpoint;
Log out of mysql:
mysql> quit
Bye
Update configuration files in /etc:
$ grep -rl '[old IP address]' /etc | xargs sed -i 's/[old IP address]/[new IP address]/g'
Update configuration files in /opt/stack (necessary if you've got tempest or other components that put configurations in /opt/stack):
grep -rl '[old IP address]' /opt/stack | xargs sed -i 's/[old IP address]/[new IP address]/g'
Check whether .my.cnf in your home directory needs an update. In my case, the IP address in this file was set to 127.0.0.1, so it didn't need an update.
Restart Services
Run the rejoin-stack.sh command, which starts the services again without making changes to the database or configuration files:
~/devstack$ ./rejoin-stack.sh
The services will now come up using the new IP address definitions. I hope this saves you some time working with DevStack!
출처 : http://www.symantec.com/connect/blogs/change-endpoint-ip-addresses-after-openstack-installation-devstack
'Legacy Skills > OpenStack' 카테고리의 다른 글
Object Storage – OpenStack Swift (0) | 2015.11.02 |
---|---|
OpenStack Nova internals of instance launching (0) | 2015.10.27 |
Openstack 외부 망과 연결(br-ex) (0) | 2015.06.16 |
SCALE HORIZONTALLY (0) | 2014.08.08 |
Conoha VPS CentOS6.5(標準6.4からupdate)で起動時にエラーが出るときの対処 (0) | 2014.08.08 |
댓글