部署multi-region openstack环境

Icehouse默认的regionRegionOne。因为默认region的存在,无论是在命令行,还是在web上,我们都不需要指定region。在命令行中你还可以用os-region-name来指定region,在web中你就根本找不到与region相关的东西。

因为这样,很多人都不了解region的概念,如果你已经使用过openstack,并且不知道在哪看到了可以设置多region这样一件事,所以想自己部署一个看看,那么你可以把这篇文章读完。

因为只是一个实验,我们怎么简单怎么来。网上有很多快速部署openstack环境的教程,首先你需要按照教程部署两套完整的openstack环境。有了这两套环境,我们稍微改一下配置即可。

##增加endpoint

选择一台机器作为RegionOne,另一台则为RegionTwo。我们需要在RegionOne上增加Regiontwo上的service的endpoint。

如图,可以看到Horizon,Keystone和Swift是公用的,我们只需要增加这些服务之外的服务的endpoint

如图我们需要增加cinder,ec2,glance,neutron,nova的endpoint。添加endpoint的命令是:

keystone endpoint-create --region RegionTwo 
                         --service <service> 
                          --publicurl <public-url>
                         --adminurl <admin-url>
                         --internalurl <internal-url>

这样添加好了之后,工作就完成一半了。

如果就这样打开RegionOne的web,会发现在页面上出现了一个之前没有的选择框,可以选择RegionOne或者RegionTwo,但是选了Regiontwo之后,按概况或者云主机之类的按钮,会出现各种无权限的错误,好蛋疼。其实这时候我们的web还没有配置好。

##配置horizon

打开文件

vim /etc/openstack-dashboard/local_settings.py

找到

# For multiple regions uncomment this configuration, and add (endpoint, title).
# AVAILABLE_REGIONS = [
#     ('http://cluster1.example.com:5000/v2.0', 'cluster1'),
#     ('http://cluster2.example.com:5000/v2.0', 'cluster2'),
# ]

去掉注释,改成这样:

# For multiple regions uncomment this configuration, and add (endpoint, title).
AVAILABLE_REGIONS = [ 
     ('http://10.10.7.208:5000/v2.0', 'RegionOne'),
     ('http://10.10.7.200:5000/v2.0', 'RegionTwo'),
]

我的两台环境是10.10.7.20810.10.7.200,你需要改成你的环境的ip。后面的5000端口不需要改,5000是keystone监听的端口,剩下的都不需要改。

改完之后,保存,重启web

service apache2 restart
#这里也是,如果你不是用的apache,请改成你重启web的方式

这时候再登录就一切OK啦!

右上角的region控制你登录的是哪个region,中间的那个是用户自由切换的用的。