-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Swift storage backend multi regions #1067
Comments
Another option we can do along with this is include the ability to limit Gnocchi in a given region to use containers with a local no replication policy to limit the need for swift to copy samples across all regions. For long term storage multi-region containers are likely a good idea, but likely not for incoming data during processing, and if the given cloud has such policies in place that's not a bad idea and may avoid some issues and extra load on Swift. |
I think maybe these metricd daemons don't share coordination and thus could potentially be racing to handle incoming. Not sure if this is a bug or, please provide more information. |
The `swift_container_prefix` option by itself only prefixes the containers created for metric storage. This is not enough to allow multiple Gnocchi deployments to share the same OpenStack project, as additional containers are created for Gnocchi configuration as well as for incoming metric storage, if Swift is also used as the incoming storage driver. This adds a new `swift_container_prefix_all` flag for enabling prepending `swift_container_prefix` to **all** Swift containers that can be made by Gnocchi. This allows new deployments of Gnocchi to be configured in a way that multiple deployments can share the project (e.g. a service project in a multi-region cloud). Unfortunately, existing Gnocchi deployments cannot easily be reconfigured to enable prefixes, nor can the prefix easily be changed. Fixes gnocchixyz#1067.
The `swift_container_prefix` option by itself only prefixes the containers created for metric storage. This is not enough to allow multiple Gnocchi deployments to share the same OpenStack project, as additional containers are created for Gnocchi configuration as well as for incoming metric storage, if Swift is also used as the incoming storage driver. This adds a new `swift_container_prefix_all` flag for enabling prepending `swift_container_prefix` to **all** Swift containers that can be made by Gnocchi. This allows new deployments of Gnocchi to be configured in a way that multiple deployments can share the project (e.g. a service project in a multi-region cloud). Unfortunately, existing Gnocchi deployments cannot easily be reconfigured to enable prefixes, nor can the prefix easily be changed. Fixes gnocchixyz#1067.
The `swift_container_prefix` option by itself only prefixes the containers created for metric storage. This is not enough to allow multiple Gnocchi deployments to share the same OpenStack project, as additional containers are created for Gnocchi configuration as well as for incoming metric storage, if Swift is also used as the incoming storage driver. This adds a new `swift_container_prefix_all` flag for enabling prepending `swift_container_prefix` to **all** Swift containers that can be made by Gnocchi. This allows new deployments of Gnocchi to be configured in a way that multiple deployments can share the project (e.g. a service project in a multi-region cloud). Unfortunately, existing Gnocchi deployments cannot easily be reconfigured to enable prefixes, nor can the prefix easily be changed. Fixes gnocchixyz#1067.
The `swift_container_prefix` option by itself only prefixes the containers created for metric storage. This is not enough to allow multiple Gnocchi deployments to share the same OpenStack project, as additional containers are created for Gnocchi configuration as well as for incoming metric storage, if Swift is also used as the incoming storage driver. This adds a new `swift_container_prefix_all` flag for enabling prepending `swift_container_prefix` to **all** Swift containers that can be made by Gnocchi. This allows new deployments of Gnocchi to be configured in a way that multiple deployments can share the project (e.g. a service project in a multi-region cloud). Unfortunately, existing Gnocchi deployments cannot easily be reconfigured to enable prefixes, nor can the prefix easily be changed. Fixes gnocchixyz#1067.
The `swift_container_prefix` option by itself only prefixes the containers created for metric storage. This is not enough to allow multiple Gnocchi deployments to share the same OpenStack project, as additional containers are created for Gnocchi configuration as well as for incoming metric storage, if Swift is also used as the incoming storage driver. This adds a new `swift_container_prefix_all` flag for enabling prepending `swift_container_prefix` to **all** Swift containers that can be made by Gnocchi. This allows new deployments of Gnocchi to be configured in a way that multiple deployments can share the project (e.g. a service project in a multi-region cloud). Unfortunately, existing Gnocchi deployments cannot easily be reconfigured to enable prefixes, nor can the prefix easily be changed. Fixes gnocchixyz#1067.
#1034 # Which version of Gnocchi are you using
4.3.2 (RDO stein release)
How to reproduce your problem
Openstack deployed with multiple regions, shared keystone database, swift ring spans all regions.
Configured swift 'storage' with swift_container_prefix = $location_gnocchi
Documentation suggests that incoming also uses swift_container_prefix, code looks to suggest otherwise.
What is the result that you get
Ceilometer in each region posts the metrics to gnocchi-api, i believe it then gets stored in swift in incoming128-X
Gnocchi-metricd running in each region then looks to start processing the incoming data (from all regions) before storing the metrics as $location_gnocchi.$metricid
Gnocchi-metricd in each region randomly logs that the incoming file is missing (404) assuming as another region has picked it up and processed it already?
Metrics then appear to contain a mix of data for resources from all regions.
What is result that you expected
swift_container_prefix is prepended to to the incoming128-X container and gnocchi-metricd processes results from the same container thereby processing only its own region.
Quick look at the code suggests prepending sack_name with swift_container_prefix would fix it?
Also the gnocchi-config should be prefixed, so you can set different sack number in each region?
Could also just create a project for each region and store the gnocchi in there and forget the prefix?
The text was updated successfully, but these errors were encountered: