4.4 KiB
Add support to configure weight for each store
https://blueprints.launchpad.net/glance-store/+spec/store-weight
Add support to configure weight to each store. The store with highest weight will be given preference to download the image.
Problem description
Since introduction of importing single image into multiple stores or
copying existing image into multiple stores, single image can be stored
at multiple locations or different stores configured by glance. Current
download image is based on the default location_strategy
which is location_order
, traverse through the image
locations one by one if there are multiple locations (in this case it
will return the image stored at the first location). If user prefers to
download the image from a specific store then they can use
store_type
as location strategy to give preference to
download the image from that store only. For example if
location_strategy
is set as store_type
and
store_type
has rbd as
preference then the image will be downloaded from the rbd store only. Now the problem with
store_type
location strategy is that there can be multiple
stores of same type (multiple rbd or file stores). So again user will
not able to download the image from the specific store even if
location_strategy
is set to store_type
.
Consider the following use cases for providing download from specific store support:
- I have a large image and want to download it from the SSD store since it's fast.
- I do multiple concurrent downloads on a particular image so want to download it from the RELIABLE store since the i/o handling is better.
Proposed change
This proposal requires changes in glance_store as well as in glance.
Glance store side change:
Add new configuration option weight
default to zero for
each store. Operator can change it for each store if they wish. The
store with highest weight will be given preference to download the image
from.
[default] enabled_backends = robust:rbd,cheap:file
[robust] rbd_store_pool=images weight=10
[cheap] filesystem_store_datadir=/opt/stack/data/glance/images/ weight=5
In above example, robust store will always be a preferred store to download the image from. If image is not available in robust store then it will be searched in cheap store which is next inline.
If no weight is provided for stores (i.e. all stores have default
weight 0) then the image will be searched
based on image creation order (similar as
location_order
).
Glance side change:
Once glance_store side changes are implemented then we need to modify
GET
API of image to sort the image locations based on the
wegith assigned to each store. If weight is default then the location order will
not be changed.
Alternatives
Add new location strategy 'store_identifier' to existing default two
strategies. This will add comma separated list of store identifiers
which will be given preference to download the image from. New
configuration option store_identifier_preference
under
group store_identifier_location_strategy
will be added
where user/deployer can reference their preferences based on store
identifiers.
Data model impact
None
REST API impact
None
Security impact
None
Notifications impact
None
Other end user impact
None
Performance Impact
None
Other deployer impact
Deployer/Operator need to configure weight for each glance-store.
Developer impact
None
Implementation
Assignee(s)
- Primary assignee:
-
dansmith
- Other contributors:
-
abhishek-kekane
Work Items
- Add new configuration option weight for each store
- GET API change to sort locations based on store weight
- Unit and functional tests
- Tempest coverage
Dependencies
None
Testing
Sufficient unit/functional and tempest tests will be added.
Documentation Impact
Need to document how location order will be changed based on weight assigned to each store.
References
None