关闭

OpenStack里如何实现跨数据中心以及异构hypervisor管理

标签: openstack异构数据中心
1752人阅读 评论(0) 收藏 举报

OpenStack的多Region配置主要用于需要跨数据中心(2层没有打通)管理,以及异构的Hypervisor管理。通常每一个Hypervisor集群对应一个Region。也可以一个Region上部署多个Hypervisor集群(通常不这样做,因为管理复杂,容易因为误操作出故障)。


网上有一些关于多Region的配置,比如在数据库层面将第二个Region的endpoint拷贝到第一个Region。这样做其实比较麻烦,手工干预较多,不适合规范性的大规模部署。本文尝试从多Region支持的基本原理出发,给出最简洁、有效的配置方法。


对于OpenStack的多Region支持,其基本实现原理是要求多个Region之间共享同一个认证服务(keystone identity服务)。这样做的好处是可以对租户进行集中管理和授权。为了便于说明,我们以两个Region(RegionOne和RegionTwo)为例,其中RegionOne为Master Region,RegionTwo作为Slave Region,每个Region的认证都通过keystone identity服务实现。总体来说,从技术层面实现需要注意如下几方面:

1. 所有Region上的keystone服务共享一个数据库,这个数据库里会存放所有的service, endpoint以及租户信息等。

2. 所有Region上keystone identity服务的endpoint都应该和Master Region上identity服务的endpoint一致。

3. 除identity服务之外的其它服务(glance, nova, neutron, cinder等)的endpoint中指向的IP或主机名都应该是所在Region的controller IP或者主机名。


详细的配置过程如下:

1. 按照常规方式安装配置RegionOne。具体请参考社区安装配置文档。


2. 在RegionOne节点上为RegionTwo的identity服务创建endpoint,注意所有的URL都要指向Master节点的keystone endpoint。

# openstack endpoint create \
  --publicurl http://$MASTER_CONTROLLER:5000/v2.0 \
  --internalurl http://$MASTER_CONTROLLER:5000/v2.0 \
  --adminurl http://$MASTER_CONTROLLER:35357/v2.0 \
  --region RegionTwo \
  identity

3. 在RegionOne节点上为RegionTwo的image(glance)服务创建endpoint,注意所有的URL都要指向Slave节点

# openstack endpoint create \
  --publicurl http://$SLAVE_CONTROLLER:9292 \
  --internalurl http://$SLAVE_CONTROLLER:9292 \
  --adminurl http://$SLAVE_CONTROLLER:9292 \
  --region RegionTwo \
  image

4. 按照步骤3为RegionTwo的其他服务(nova, neutron等)创建endpoint

# openstack endpoint create \
  --publicurl http://$SLAVE_CONTROLLER:8774/v2/%\(tenant_id\)s \
  --internalurl http://$SLAVE_CONTROLLER:8774/v2/%\(tenant_id\)s \
  --adminurl http://$SLAVE_CONTROLLER:8774/v2/%\(tenant_id\)s \
  --region RegionTwo \
  compute

# openstack endpoint create \
  --publicurl http://$SLAVE_CONTROLLER:9696 \
  --internalurl http://$SLAVE_CONTROLLER:9696 \
  --adminurl http://$SLAVE_CONTROLLER:9696 \
  --region RegionTwo \
  network

5. 检查配置是否正确。可以切换到V2版本的keystone,然后执行keystone endpoint-list检查,因为输出太多,就不贴出来了。


6. 安装RegionTwo,和常规的安装方法不同,因为在RegionOne里我们已经为RegionTwo定义了各种服务的endpoint以及租户信息,这样就不需要在RegionTwo的创建过程中再重新来一遍。整个安装过程和RegionOne一致,只是要去掉所有有关service, endpoint以及租户信息的创建。注意安装过程中所有服务的数据库和认证密码都应该和RegionOne中一致。


7. 在RegionTwo上对所有服务(glance, nova, neutron, cinder等)的配置文件进行修改,把和keystone认证有关的url和uri都修改为指向RegoinOne的keystone identity服务的endpoint。以nova服务为例,修改如下,注意$MASTER_CONTROLLER要替换为RegionOne的controller IP。修改完成后需要重启各个服务。

[keystone_authtoken]
auth_uri = http://$MASTER_CONTROLLER:5000
auth_url = http://$MASTER_CONTROLLER:35357


同时注意将RegionTwo上keystone的数据库连接指向RegionOne上的数据库,如下。修改完后需要重启RegionTwo的keystone服务。

[database]
connection mysql://keystone:$KEYSTONE_DBPASS@$MASTER_CONTROLLERE/keystone

8. 如果需要在Horizon Dashboard上能够切换Region,还需要在RegionOne上修改/etc/openstack-dashboard/local_settings文件,在AVAILABLE_REGIONS里添加endpoint和title,如下。注意所有的endpoint都是Master节点identity服务的endpoint,区别在后面的title部分。

AVAILABLE_REGIONS = [
    ('http://controller:5000/v2.0', 'RegionOne'),
    ('http://controller:5000/v2.0', 'RegionTwo'),
]


9. 在RegionOne上重启httpd,然后就可以看到选择Region的登陆界面了。



也可以登陆后进行Region的切换:


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:43097次
    • 积分:680
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:5篇
    • 译文:0篇
    • 评论:3条
    文章存档
    最新评论