)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b17a80ae_620834b6","updated":"2025-01-21 16:48:57.000000000","message":"Some minor grammar and in the az-balancing-diagram.png I would center the left header so it\u0027s not touching the edge and more like the other 2. The examples look ok to me.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"3df1dba7726bf40adec1caac2386a4cb1480d283","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f5e3c95c_14570fe3","updated":"2025-01-21 15:37:58.000000000","message":"this is a big one, sorry for that","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":34411,"name":"Neil Hanlon","email":"neil@shrug.pw","username":"nhanlon"},"change_message_id":"fc71384f94adf140d223c43e6e0522b1a38dbae8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"36a61011_07f7937c","updated":"2025-04-14 13:28:19.000000000","message":"n.b. I did not go over this with *as* precise of an eye for grammar since Amy already took a pass at it. Examples and everything else look great!","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"7297f5b1af6f09c52dee873c99f84c35c81f6623","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"25298421_3ea99442","updated":"2025-04-17 09:59:58.000000000","message":"@noonedeadpunk@gmail.com hello, I think we can merge it, information is very useful.","commit_id":"dd5ad305a6ad84c6642253ea255c9799740b1b0f"},{"author":{"_account_id":34411,"name":"Neil Hanlon","email":"neil@shrug.pw","username":"nhanlon"},"change_message_id":"5ed24d62efbc3b0632285da27b3e388f9707d8a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"853ef049_0b51d286","updated":"2025-04-17 13:25:24.000000000","message":"LGTM! I did do another quick pass after Amy\u0027s recent review.","commit_id":"dd5ad305a6ad84c6642253ea255c9799740b1b0f"}],"doc/source/user/l3pods/multi_az.rst":[{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Example of multi-AZ environment configuration"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"On this page we will provide an example of configuration that can be used in"},{"line_number":8,"context_line":"production environments with multiple Availability Zones."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"It will be an extended and more specific version of :ref:`pod-environment-config`"}],"source_content_type":"text/x-rst","patch_set":4,"id":"acd3a9a9_492d3f75","line":7,"range":{"start_line":7,"start_character":40,"end_line":7,"end_character":56},"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\nOn this page, we will provide an example configuration that can be used in\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Example of multi-AZ environment configuration"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"On this page we will provide an example of configuration that can be used in"},{"line_number":8,"context_line":"production environments with multiple Availability Zones."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"It will be an extended and more specific version of :ref:`pod-environment-config`"}],"source_content_type":"text/x-rst","patch_set":4,"id":"cd4062eb_d7cc1eae","line":7,"range":{"start_line":7,"start_character":40,"end_line":7,"end_character":56},"in_reply_to":"acd3a9a9_492d3f75","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":8,"context_line":"production environments with multiple Availability Zones."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"It will be an extended and more specific version of :ref:`pod-environment-config`"},{"line_number":11,"context_line":"so it is expected that you are aware with concepts and approaches defined there."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"To better understand why some configuration options were applied in examples"},{"line_number":14,"context_line":"it is also recommended to look through :ref:`configuring-inventory`"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8bf2ab99_da81ed37","line":11,"range":{"start_line":11,"start_character":37,"end_line":11,"end_character":41},"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\nso it is expected that you are aware with the concepts and approaches defined there.\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":8,"context_line":"production environments with multiple Availability Zones."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"It will be an extended and more specific version of :ref:`pod-environment-config`"},{"line_number":11,"context_line":"so it is expected that you are aware with concepts and approaches defined there."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"To better understand why some configuration options were applied in examples"},{"line_number":14,"context_line":"it is also recommended to look through :ref:`configuring-inventory`"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9baaf907_7aae7d23","line":11,"range":{"start_line":11,"start_character":37,"end_line":11,"end_character":41},"in_reply_to":"8bf2ab99_da81ed37","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":16,"context_line":"Generic design"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Following design decisions were made in the example below:"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"* Three Availability Zones (AZs)"},{"line_number":22,"context_line":"* Three infrastructure (control plane) hosts, each host is placed in a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"af628894_370369d6","line":19,"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\nThe following design decisions were made in the example below:\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Generic design"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Following design decisions were made in the example below:"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"* Three Availability Zones (AZs)"},{"line_number":22,"context_line":"* Three infrastructure (control plane) hosts, each host is placed in a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aa96b79_780d6bf6","line":19,"in_reply_to":"af628894_370369d6","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":25,"context_line":"  Availability Zone has two extra compute hosts for pinned CPU aggregate."},{"line_number":26,"context_line":"* Three Ceph storage clusters provisioned with Ceph Ansible."},{"line_number":27,"context_line":"* Compute hosts act as OVN gateway hosts"},{"line_number":28,"context_line":"* Tunnel networks are reachable between Availability Zones"},{"line_number":29,"context_line":"* Public API, OpenStack external and management networks are represented as"},{"line_number":30,"context_line":"  stretched L2 networks between Availability Zones."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"caabb9d0_4ebeb25b","line":28,"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\n* Tunnel networks which are reachable between Availability Zones\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  Availability Zone has two extra compute hosts for pinned CPU aggregate."},{"line_number":26,"context_line":"* Three Ceph storage clusters provisioned with Ceph Ansible."},{"line_number":27,"context_line":"* Compute hosts act as OVN gateway hosts"},{"line_number":28,"context_line":"* Tunnel networks are reachable between Availability Zones"},{"line_number":29,"context_line":"* Public API, OpenStack external and management networks are represented as"},{"line_number":30,"context_line":"  stretched L2 networks between Availability Zones."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"52240e3d_deae3381","line":28,"in_reply_to":"caabb9d0_4ebeb25b","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Load Balancer (HAProxy) is usually deployed on infrastructure hosts. With"},{"line_number":39,"context_line":"infrastructure hosts being spread across Availability Zones we need to"},{"line_number":40,"context_line":"come up with more complex design which is aiming to solve following issues:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Withstand a single Availability Zone failure"},{"line_number":43,"context_line":"* Reduce amount of cross-AZ traffic"}],"source_content_type":"text/x-rst","patch_set":4,"id":"47a0e465_1e43766b","line":40,"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\ncome up with a more complex design which is aiming to solve following issues:\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Load Balancer (HAProxy) is usually deployed on infrastructure hosts. With"},{"line_number":39,"context_line":"infrastructure hosts being spread across Availability Zones we need to"},{"line_number":40,"context_line":"come up with more complex design which is aiming to solve following issues:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Withstand a single Availability Zone failure"},{"line_number":43,"context_line":"* Reduce amount of cross-AZ traffic"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5bbc028b_66220b86","line":40,"in_reply_to":"47a0e465_1e43766b","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":43,"context_line":"* Reduce amount of cross-AZ traffic"},{"line_number":44,"context_line":"* Spread load across Availability Zones"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"So address these challenges following changes to basic design were made:"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"* Leverage DNS Round Robin (an A/AAAA record per AZ) for Public API"},{"line_number":49,"context_line":"* Define Internal API FQDN through /etc/hosts overrides, which are unique per"}],"source_content_type":"text/x-rst","patch_set":4,"id":"77b82968_ed393e90","line":46,"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\nTo address these challenges following changes to basic design were made:\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"* Reduce amount of cross-AZ traffic"},{"line_number":44,"context_line":"* Spread load across Availability Zones"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"So address these challenges following changes to basic design were made:"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"* Leverage DNS Round Robin (an A/AAAA record per AZ) for Public API"},{"line_number":49,"context_line":"* Define Internal API FQDN through /etc/hosts overrides, which are unique per"}],"source_content_type":"text/x-rst","patch_set":4,"id":"2cd0ed93_4b9406ae","line":46,"in_reply_to":"77b82968_ed393e90","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":52,"context_line":"* Ensure HAProxy to prioritize a backend from own Availability Zone over"},{"line_number":53,"context_line":"  \"remote\" ones"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Example also does deploy HAProxy with Keepalived in their own LXC"},{"line_number":56,"context_line":"containers on the contrary to more conventional bare metal deployment."},{"line_number":57,"context_line":"You can check a :ref:`haproxy-in-lxc` for more details on how to do that."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"0715cbc2_f3e7ccc3","line":55,"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\nThe example also deploys HAProxy with Keepalived in their own LXC\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":52,"context_line":"* Ensure HAProxy to prioritize a backend from own Availability Zone over"},{"line_number":53,"context_line":"  \"remote\" ones"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Example also does deploy HAProxy with Keepalived in their own LXC"},{"line_number":56,"context_line":"containers on the contrary to more conventional bare metal deployment."},{"line_number":57,"context_line":"You can check a :ref:`haproxy-in-lxc` for more details on how to do that."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f9a7a1d_4e477092","line":55,"in_reply_to":"0715cbc2_f3e7ccc3","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  \"remote\" ones"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Example also does deploy HAProxy with Keepalived in their own LXC"},{"line_number":56,"context_line":"containers on the contrary to more conventional bare metal deployment."},{"line_number":57,"context_line":"You can check a :ref:`haproxy-in-lxc` for more details on how to do that."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":".. image:: ../figures/az-balancing-diagram.drawio.png"}],"source_content_type":"text/x-rst","patch_set":4,"id":"53dce143_aafc86f9","line":56,"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\ncontainers on the contrary to a more conventional bare metal deployment.\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bf7d4c96d169030af8ef55e054a90b5eefbe651b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  \"remote\" ones"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Example also does deploy HAProxy with Keepalived in their own LXC"},{"line_number":56,"context_line":"containers on the contrary to more conventional bare metal deployment."},{"line_number":57,"context_line":"You can check a :ref:`haproxy-in-lxc` for more details on how to do that."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":".. image:: ../figures/az-balancing-diagram.drawio.png"}],"source_content_type":"text/x-rst","patch_set":4,"id":"27cac7d7_7cb59335","line":56,"in_reply_to":"53dce143_aafc86f9","updated":"2025-01-23 08:34:11.000000000","message":"Done","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":63,"context_line":"Storage design complications"},{"line_number":64,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"There are multiple complications related to organizing storage with given"},{"line_number":67,"context_line":"setup, where storage is not stretched between Availability Zones."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"First now there is only a single controller in any given Availability"},{"line_number":70,"context_line":"Zone, while multiple copies of ``cinder_volume`` needs to be run for"},{"line_number":71,"context_line":"each storage provider for High Availability. As ``cinder_volume`` needs"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c57b8c43_c0defc0f","line":68,"range":{"start_line":66,"start_character":55,"end_line":68,"end_character":1},"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\nThere are multiple complications related to organizing storage where the storage is not stretched between Availability Zones.\n\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"Storage design complications"},{"line_number":64,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"There are multiple complications related to organizing storage with given"},{"line_number":67,"context_line":"setup, where storage is not stretched between Availability Zones."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"First now there is only a single controller in any given Availability"},{"line_number":70,"context_line":"Zone, while multiple copies of ``cinder_volume`` needs to be run for"},{"line_number":71,"context_line":"each storage provider for High Availability. As ``cinder_volume`` needs"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e5749063_ff5c078d","line":68,"range":{"start_line":66,"start_character":55,"end_line":68,"end_character":1},"in_reply_to":"c57b8c43_c0defc0f","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":66,"context_line":"There are multiple complications related to organizing storage with given"},{"line_number":67,"context_line":"setup, where storage is not stretched between Availability Zones."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"First now there is only a single controller in any given Availability"},{"line_number":70,"context_line":"Zone, while multiple copies of ``cinder_volume`` needs to be run for"},{"line_number":71,"context_line":"each storage provider for High Availability. As ``cinder_volume`` needs"},{"line_number":72,"context_line":"access to storage network, one of the best places for it are ``ceph-mon``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5523ec7a_f41c6bee","line":69,"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\nFirst, there is only a single controller in any given Availability\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"There are multiple complications related to organizing storage with given"},{"line_number":67,"context_line":"setup, where storage is not stretched between Availability Zones."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"First now there is only a single controller in any given Availability"},{"line_number":70,"context_line":"Zone, while multiple copies of ``cinder_volume`` needs to be run for"},{"line_number":71,"context_line":"each storage provider for High Availability. As ``cinder_volume`` needs"},{"line_number":72,"context_line":"access to storage network, one of the best places for it are ``ceph-mon``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"30617fe7_a9772754","line":69,"in_reply_to":"5523ec7a_f41c6bee","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":80,"context_line":"configuring Ceph RadosGW policy to replicate the bucket between independent"},{"line_number":81,"context_line":"instances located in their Availability Zones."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Last but not the least complication is Nova scheduling when ``cross_az_attach``"},{"line_number":84,"context_line":"is disabled. As Nova will not add Availability Zone to instances"},{"line_number":85,"context_line":"``request_specs`` when instance is created from a volume directly, on the"},{"line_number":86,"context_line":"contrary to creating volume manually in advance and supplying volume UUID to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"035aef7f_7ca1cf38","line":83,"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\nLast, but not the least complication is Nova scheduling when ``cross_az_attach``\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"configuring Ceph RadosGW policy to replicate the bucket between independent"},{"line_number":81,"context_line":"instances located in their Availability Zones."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Last but not the least complication is Nova scheduling when ``cross_az_attach``"},{"line_number":84,"context_line":"is disabled. As Nova will not add Availability Zone to instances"},{"line_number":85,"context_line":"``request_specs`` when instance is created from a volume directly, on the"},{"line_number":86,"context_line":"contrary to creating volume manually in advance and supplying volume UUID to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9734624e_2623ecf3","line":83,"in_reply_to":"035aef7f_7ca1cf38","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":185,"context_line":"Host network configuration"},{"line_number":186,"context_line":"--------------------------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Each host does require the correct network bridges to be implemented. In"},{"line_number":189,"context_line":"this example we leverage ``systemd_networkd`` role that performs configuration"},{"line_number":190,"context_line":"for us during ``openstack_hosts`` execution. It creates all required vlans and"},{"line_number":191,"context_line":"bridges. The only pre-requirement is to have a connection to the"},{"line_number":192,"context_line":"host via SSH available for Ansible to manage the host."}],"source_content_type":"text/x-rst","patch_set":4,"id":"14b7c4c2_f83d72cb","line":189,"range":{"start_line":188,"start_character":69,"end_line":189,"end_character":72},"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\nEach host does require the correct network bridges to be implemented. In\nthis example, we leverage the ``systemd_networkd`` role that performs configuration\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Host network configuration"},{"line_number":186,"context_line":"--------------------------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Each host does require the correct network bridges to be implemented. In"},{"line_number":189,"context_line":"this example we leverage ``systemd_networkd`` role that performs configuration"},{"line_number":190,"context_line":"for us during ``openstack_hosts`` execution. It creates all required vlans and"},{"line_number":191,"context_line":"bridges. The only pre-requirement is to have a connection to the"},{"line_number":192,"context_line":"host via SSH available for Ansible to manage the host."}],"source_content_type":"text/x-rst","patch_set":4,"id":"d650f354_c253fd66","line":189,"range":{"start_line":188,"start_character":69,"end_line":189,"end_character":72},"in_reply_to":"14b7c4c2_f83d72cb","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":222,"context_line":".. literalinclude:: ../../../../etc/openstack_deploy/env.d/cinder-volume.yml.container.example"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"In order to be able to execute playbook only against hosts in"},{"line_number":225,"context_line":"a single Availability Zone as well as be able to set AZ-specific"},{"line_number":226,"context_line":"variables, we need to define groups definitions. For that, create"},{"line_number":227,"context_line":"a file ``/etc/openstack_deploy/env.d/az.yml`` with the following content:"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":".. literalinclude:: ../../../../etc/openstack_deploy/env.d/az.yml.example"}],"source_content_type":"text/x-rst","patch_set":4,"id":"b6c58473_062d9f61","line":226,"range":{"start_line":225,"start_character":21,"end_line":226,"end_character":40},"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\na single Availability Zone, as well as be able to set AZ-specific\nvariables, we need to define groups definitions. For that, create\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":222,"context_line":".. literalinclude:: ../../../../etc/openstack_deploy/env.d/cinder-volume.yml.container.example"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"In order to be able to execute playbook only against hosts in"},{"line_number":225,"context_line":"a single Availability Zone as well as be able to set AZ-specific"},{"line_number":226,"context_line":"variables, we need to define groups definitions. For that, create"},{"line_number":227,"context_line":"a file ``/etc/openstack_deploy/env.d/az.yml`` with the following content:"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":".. literalinclude:: ../../../../etc/openstack_deploy/env.d/az.yml.example"}],"source_content_type":"text/x-rst","patch_set":4,"id":"326b6ce4_f3e2a267","line":226,"range":{"start_line":225,"start_character":21,"end_line":226,"end_character":40},"in_reply_to":"b6c58473_062d9f61","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"e6aac05f8791c7141d114a262186a708d67fe386","unresolved":true,"context_lines":[{"line_number":235,"context_line":"    bare metal nodes, that are part of the pod."},{"line_number":236,"context_line":"* ``azN_all`` that will contain `azN_hosts` and `azN_containers` members"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"We also need to define complete new set of groups for Ceph, to deploy multiple"},{"line_number":239,"context_line":"independent instances of it."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"For that, create a file ``/etc/openstack_deploy/env.d/ceph.yml`` with the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ac634993_fb1a1a47","line":238,"updated":"2025-01-21 16:48:57.000000000","message":"```suggestion\nWe also need to define a complete new set of groups for Ceph, to deploy multiple\n```","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"06dc39d400aed83386528463eb8e0574f10f0a5e","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    bare metal nodes, that are part of the pod."},{"line_number":236,"context_line":"* ``azN_all`` that will contain `azN_hosts` and `azN_containers` members"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"We also need to define complete new set of groups for Ceph, to deploy multiple"},{"line_number":239,"context_line":"independent instances of it."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"For that, create a file ``/etc/openstack_deploy/env.d/ceph.yml`` with the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9856c0ea_1a3ed64b","line":238,"in_reply_to":"ac634993_fb1a1a47","updated":"2025-01-23 08:33:21.000000000","message":"Fix applied.","commit_id":"cfa8a0e1617f9247e683e860eeb0625d3d6f9fd8"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"3cc843c8ca1b6cd23097c7e4785d5aff71c0f1bd","unresolved":true,"context_lines":[{"line_number":8,"context_line":"production environments with multiple Availability Zones."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"It will be an extended and more specific version of :ref:`pod-environment-config`"},{"line_number":11,"context_line":"so it is expected that you are aware with the concepts and approaches defined there."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"To better understand why some configuration options were applied in examples"},{"line_number":14,"context_line":"it is also recommended to look through :ref:`configuring-inventory`"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ab8449b7_783bdb0f","line":11,"updated":"2025-04-14 23:41:32.000000000","message":"```suggestion\nso it is expected that you are aware of the concepts and approaches defined there.\n```","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1d584a0cac0881e115071572bbe03ddf9c2c4281","unresolved":false,"context_lines":[{"line_number":8,"context_line":"production environments with multiple Availability Zones."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"It will be an extended and more specific version of :ref:`pod-environment-config`"},{"line_number":11,"context_line":"so it is expected that you are aware with the concepts and approaches defined there."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"To better understand why some configuration options were applied in examples"},{"line_number":14,"context_line":"it is also recommended to look through :ref:`configuring-inventory`"}],"source_content_type":"text/x-rst","patch_set":6,"id":"d26c3f62_10156ef4","line":11,"in_reply_to":"ab8449b7_783bdb0f","updated":"2025-04-15 07:42:45.000000000","message":"Fix applied.","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"3cc843c8ca1b6cd23097c7e4785d5aff71c0f1bd","unresolved":true,"context_lines":[{"line_number":35,"context_line":"Load Balancing"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Load Balancer (HAProxy) is usually deployed on infrastructure hosts. With"},{"line_number":39,"context_line":"infrastructure hosts being spread across Availability Zones we need to"},{"line_number":40,"context_line":"come up with a more complex design which is aiming to solve following issues:"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"083fd3c2_0ab88c7b","line":38,"updated":"2025-04-14 23:41:32.000000000","message":"```suggestion\nA Load Balancer (HAProxy) is usually deployed on infrastructure hosts. With\n```","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1d584a0cac0881e115071572bbe03ddf9c2c4281","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Load Balancing"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Load Balancer (HAProxy) is usually deployed on infrastructure hosts. With"},{"line_number":39,"context_line":"infrastructure hosts being spread across Availability Zones we need to"},{"line_number":40,"context_line":"come up with a more complex design which is aiming to solve following issues:"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"c3a88883_ef92e470","line":38,"in_reply_to":"083fd3c2_0ab88c7b","updated":"2025-04-15 07:42:45.000000000","message":"Fix applied.","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"3cc843c8ca1b6cd23097c7e4785d5aff71c0f1bd","unresolved":true,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Load Balancer (HAProxy) is usually deployed on infrastructure hosts. With"},{"line_number":39,"context_line":"infrastructure hosts being spread across Availability Zones we need to"},{"line_number":40,"context_line":"come up with a more complex design which is aiming to solve following issues:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Withstand a single Availability Zone failure"},{"line_number":43,"context_line":"* Reduce amount of cross-AZ traffic"}],"source_content_type":"text/x-rst","patch_set":6,"id":"839d35d4_555fd452","line":40,"range":{"start_line":40,"start_character":44,"end_line":40,"end_character":53},"updated":"2025-04-14 23:41:32.000000000","message":"```suggestion\ncome up with a more complex design which is aimed at solving the following issues:\n```","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1d584a0cac0881e115071572bbe03ddf9c2c4281","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Load Balancer (HAProxy) is usually deployed on infrastructure hosts. With"},{"line_number":39,"context_line":"infrastructure hosts being spread across Availability Zones we need to"},{"line_number":40,"context_line":"come up with a more complex design which is aiming to solve following issues:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Withstand a single Availability Zone failure"},{"line_number":43,"context_line":"* Reduce amount of cross-AZ traffic"}],"source_content_type":"text/x-rst","patch_set":6,"id":"31c6f17e_704f0ad5","line":40,"range":{"start_line":40,"start_character":44,"end_line":40,"end_character":53},"in_reply_to":"839d35d4_555fd452","updated":"2025-04-15 07:42:45.000000000","message":"Fix applied.","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"3cc843c8ca1b6cd23097c7e4785d5aff71c0f1bd","unresolved":true,"context_lines":[{"line_number":43,"context_line":"* Reduce amount of cross-AZ traffic"},{"line_number":44,"context_line":"* Spread load across Availability Zones"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"To address these challenges following changes to basic design were made:"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"* Leverage DNS Round Robin (an A/AAAA record per AZ) for Public API"},{"line_number":49,"context_line":"* Define Internal API FQDN through /etc/hosts overrides, which are unique per"}],"source_content_type":"text/x-rst","patch_set":6,"id":"29fdce4c_0cba0c69","line":46,"range":{"start_line":46,"start_character":17,"end_line":46,"end_character":37},"updated":"2025-04-14 23:41:32.000000000","message":"```suggestion\nTo address these challenges, the following changes to the basic design were made:\n```","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1d584a0cac0881e115071572bbe03ddf9c2c4281","unresolved":false,"context_lines":[{"line_number":43,"context_line":"* Reduce amount of cross-AZ traffic"},{"line_number":44,"context_line":"* Spread load across Availability Zones"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"To address these challenges following changes to basic design were made:"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"* Leverage DNS Round Robin (an A/AAAA record per AZ) for Public API"},{"line_number":49,"context_line":"* Define Internal API FQDN through /etc/hosts overrides, which are unique per"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1cab327a_8e7548c8","line":46,"range":{"start_line":46,"start_character":17,"end_line":46,"end_character":37},"in_reply_to":"29fdce4c_0cba0c69","updated":"2025-04-15 07:42:45.000000000","message":"Fix applied.","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"3cc843c8ca1b6cd23097c7e4785d5aff71c0f1bd","unresolved":true,"context_lines":[{"line_number":80,"context_line":"instances located in their Availability Zones."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Last, but not the least complication is Nova scheduling when ``cross_az_attach``"},{"line_number":83,"context_line":"is disabled. As Nova will not add Availability Zone to instances"},{"line_number":84,"context_line":"``request_specs`` when instance is created from a volume directly, on the"},{"line_number":85,"context_line":"contrary to creating volume manually in advance and supplying volume UUID to"},{"line_number":86,"context_line":"the instance create API call. The problem with that behavior, is that Nova"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a82a661_ba3f18d8","line":83,"updated":"2025-04-14 23:41:32.000000000","message":"```suggestion\nis disabled. As Nova will not add an Availability Zone to instances\n```","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1d584a0cac0881e115071572bbe03ddf9c2c4281","unresolved":false,"context_lines":[{"line_number":80,"context_line":"instances located in their Availability Zones."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Last, but not the least complication is Nova scheduling when ``cross_az_attach``"},{"line_number":83,"context_line":"is disabled. As Nova will not add Availability Zone to instances"},{"line_number":84,"context_line":"``request_specs`` when instance is created from a volume directly, on the"},{"line_number":85,"context_line":"contrary to creating volume manually in advance and supplying volume UUID to"},{"line_number":86,"context_line":"the instance create API call. The problem with that behavior, is that Nova"}],"source_content_type":"text/x-rst","patch_set":6,"id":"0bfadae1_6315827a","line":83,"in_reply_to":"3a82a661_ba3f18d8","updated":"2025-04-15 07:42:45.000000000","message":"Fix applied.","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"3cc843c8ca1b6cd23097c7e4785d5aff71c0f1bd","unresolved":true,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Last, but not the least complication is Nova scheduling when ``cross_az_attach``"},{"line_number":83,"context_line":"is disabled. As Nova will not add Availability Zone to instances"},{"line_number":84,"context_line":"``request_specs`` when instance is created from a volume directly, on the"},{"line_number":85,"context_line":"contrary to creating volume manually in advance and supplying volume UUID to"},{"line_number":86,"context_line":"the instance create API call. The problem with that behavior, is that Nova"},{"line_number":87,"context_line":"will attempt to Live Migrate or re-schedule instances without Availability"}],"source_content_type":"text/x-rst","patch_set":6,"id":"98bc5773_3624139c","line":84,"range":{"start_line":84,"start_character":23,"end_line":84,"end_character":31},"updated":"2025-04-14 23:41:32.000000000","message":"```suggestion\n``request_specs`` when an instance is created from a volume directly, on the\n```","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1d584a0cac0881e115071572bbe03ddf9c2c4281","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Last, but not the least complication is Nova scheduling when ``cross_az_attach``"},{"line_number":83,"context_line":"is disabled. As Nova will not add Availability Zone to instances"},{"line_number":84,"context_line":"``request_specs`` when instance is created from a volume directly, on the"},{"line_number":85,"context_line":"contrary to creating volume manually in advance and supplying volume UUID to"},{"line_number":86,"context_line":"the instance create API call. The problem with that behavior, is that Nova"},{"line_number":87,"context_line":"will attempt to Live Migrate or re-schedule instances without Availability"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a7d14be_ea5999d5","line":84,"range":{"start_line":84,"start_character":23,"end_line":84,"end_character":31},"in_reply_to":"98bc5773_3624139c","updated":"2025-04-15 07:42:45.000000000","message":"Done","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"3cc843c8ca1b6cd23097c7e4785d5aff71c0f1bd","unresolved":true,"context_lines":[{"line_number":84,"context_line":"``request_specs`` when instance is created from a volume directly, on the"},{"line_number":85,"context_line":"contrary to creating volume manually in advance and supplying volume UUID to"},{"line_number":86,"context_line":"the instance create API call. The problem with that behavior, is that Nova"},{"line_number":87,"context_line":"will attempt to Live Migrate or re-schedule instances without Availability"},{"line_number":88,"context_line":"Zone in ``request_specs`` to other AZs, which will result in failure, as"},{"line_number":89,"context_line":"``cross_az_attach`` is disabled. You can read more about this in a"},{"line_number":90,"context_line":"Nova `bug report \u003chttps://bugs.launchpad.net/nova/+bug/2047182\u003e`_"}],"source_content_type":"text/x-rst","patch_set":6,"id":"b002a858_247e9418","line":87,"updated":"2025-04-14 23:41:32.000000000","message":"```suggestion\nwill attempt to Live Migrate or re-schedule instances without an Availability\n```","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1d584a0cac0881e115071572bbe03ddf9c2c4281","unresolved":false,"context_lines":[{"line_number":84,"context_line":"``request_specs`` when instance is created from a volume directly, on the"},{"line_number":85,"context_line":"contrary to creating volume manually in advance and supplying volume UUID to"},{"line_number":86,"context_line":"the instance create API call. The problem with that behavior, is that Nova"},{"line_number":87,"context_line":"will attempt to Live Migrate or re-schedule instances without Availability"},{"line_number":88,"context_line":"Zone in ``request_specs`` to other AZs, which will result in failure, as"},{"line_number":89,"context_line":"``cross_az_attach`` is disabled. You can read more about this in a"},{"line_number":90,"context_line":"Nova `bug report \u003chttps://bugs.launchpad.net/nova/+bug/2047182\u003e`_"}],"source_content_type":"text/x-rst","patch_set":6,"id":"203bb314_125a197d","line":87,"in_reply_to":"b002a858_247e9418","updated":"2025-04-15 07:42:45.000000000","message":"Fix applied.","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":37632,"name":"Dmitriy Chubinidze","email":"dcu995@gmail.com","username":"chubinidzedr"},"change_message_id":"51ce83f2620b8831785f2f7ea36e5d48657a39ae","unresolved":false,"context_lines":[{"line_number":113,"context_line":"+-----------------------------+-----------------+------+"},{"line_number":114,"context_line":"| Network                     | CIDR            | VLAN |"},{"line_number":115,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":116,"context_line":"| Management Network          | 172.29.236.0/22 |  10  |"},{"line_number":117,"context_line":"+-----------------------------+-----------------+------+"},{"line_number":118,"context_line":"| AZ1 Storage Network         | 172.29.244.0/24 |  20  |"},{"line_number":119,"context_line":"+-----------------------------+-----------------+------+"}],"source_content_type":"text/x-rst","patch_set":6,"id":"c2f5aa12_bba50110","line":116,"range":{"start_line":116,"start_character":32,"end_line":116,"end_character":47},"updated":"2025-04-11 10:42:13.000000000","message":"What if AZ\u0027s are in different data centers, should controllers be anyway\nin one network and connected by some sort of tunnel?","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"85be98e6f93276159856a034cfff17703221b2c4","unresolved":false,"context_lines":[{"line_number":113,"context_line":"+-----------------------------+-----------------+------+"},{"line_number":114,"context_line":"| Network                     | CIDR            | VLAN |"},{"line_number":115,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":116,"context_line":"| Management Network          | 172.29.236.0/22 |  10  |"},{"line_number":117,"context_line":"+-----------------------------+-----------------+------+"},{"line_number":118,"context_line":"| AZ1 Storage Network         | 172.29.244.0/24 |  20  |"},{"line_number":119,"context_line":"+-----------------------------+-----------------+------+"}],"source_content_type":"text/x-rst","patch_set":6,"id":"86acc9c5_e57e2c59","line":116,"range":{"start_line":116,"start_character":32,"end_line":116,"end_character":47},"in_reply_to":"3d78f64b_c5c4b185","updated":"2025-04-13 11:20:05.000000000","message":"eventually all docs like that are more or less just reference on how you can do things, as with OSA you are not really limited in your design.\n\nso yes, for sure this can be also used for different racks/fire rooms inside of the same datacenter.\n\nI personally don\u0027t like AZs in OpenStack much, basically due to the reason then there\u0027s nothing in nova API as of today, which can take care of cross-az scheduling.\n\nthus, there are also limitations on Octavia/magnum/etc on how to leverage multi-AZ setup.\nand one of biggest benefits of az over just 2 regions, is ability to stretch the network for tenants, so they can spawn VMs in the same l2 segment.\notherwise - just do 2 regions, imo.","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"22e3118ac3ea7cb3524302bd67408ac7488334b2","unresolved":false,"context_lines":[{"line_number":113,"context_line":"+-----------------------------+-----------------+------+"},{"line_number":114,"context_line":"| Network                     | CIDR            | VLAN |"},{"line_number":115,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":116,"context_line":"| Management Network          | 172.29.236.0/22 |  10  |"},{"line_number":117,"context_line":"+-----------------------------+-----------------+------+"},{"line_number":118,"context_line":"| AZ1 Storage Network         | 172.29.244.0/24 |  20  |"},{"line_number":119,"context_line":"+-----------------------------+-----------------+------+"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3d78f64b_c5c4b185","line":116,"range":{"start_line":116,"start_character":32,"end_line":116,"end_character":47},"in_reply_to":"631c7381_0fc2ea4b","updated":"2025-04-13 11:08:41.000000000","message":"so this example is indeed showcases stretched l2 network between datacenters.\nand then each datacenter has a controller inside of it.\n\nthe reason behind why network is stretched - is for VIPs (and keepalived/VRRP) to work for both public and management networks.\n\notherwise you can do anycast and routed networks, but I don\u0027t want to go in depth with that, as potentially MPLS L2VPN might be simpler option in some cases.\n\nbut again, there are quite some ways on how to deal with AZs in OpenStack - you can have all controllers in 1 az only, leaving rest just with computes, you can stretch storage and networks across AZs or isolate them. but if you isolate everything inside of the az - maybe it\u0027s better to spawn up as different regions then...","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":37632,"name":"Dmitriy Chubinidze","email":"dcu995@gmail.com","username":"chubinidzedr"},"change_message_id":"e9443f619986807ce0a2c8bd27c01d0225d8ad09","unresolved":false,"context_lines":[{"line_number":113,"context_line":"+-----------------------------+-----------------+------+"},{"line_number":114,"context_line":"| Network                     | CIDR            | VLAN |"},{"line_number":115,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":116,"context_line":"| Management Network          | 172.29.236.0/22 |  10  |"},{"line_number":117,"context_line":"+-----------------------------+-----------------+------+"},{"line_number":118,"context_line":"| AZ1 Storage Network         | 172.29.244.0/24 |  20  |"},{"line_number":119,"context_line":"+-----------------------------+-----------------+------+"}],"source_content_type":"text/x-rst","patch_set":6,"id":"caf1724b_31d51d65","line":116,"range":{"start_line":116,"start_character":32,"end_line":116,"end_character":47},"in_reply_to":"86acc9c5_e57e2c59","updated":"2025-04-13 19:54:51.000000000","message":"@noonedeadpunk@gmail.com Thank you very much for detail explanation.","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"f578fef3589d42ab28ab2b4037af91846febd96e","unresolved":false,"context_lines":[{"line_number":113,"context_line":"+-----------------------------+-----------------+------+"},{"line_number":114,"context_line":"| Network                     | CIDR            | VLAN |"},{"line_number":115,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":116,"context_line":"| Management Network          | 172.29.236.0/22 |  10  |"},{"line_number":117,"context_line":"+-----------------------------+-----------------+------+"},{"line_number":118,"context_line":"| AZ1 Storage Network         | 172.29.244.0/24 |  20  |"},{"line_number":119,"context_line":"+-----------------------------+-----------------+------+"}],"source_content_type":"text/x-rst","patch_set":6,"id":"631c7381_0fc2ea4b","line":116,"range":{"start_line":116,"start_character":32,"end_line":116,"end_character":47},"in_reply_to":"c2f5aa12_bba50110","updated":"2025-04-11 15:19:37.000000000","message":"I think in this concept about place zones in one data-center (in separate racks / halls), may be I not right, wait @noonedeadpunk@gmail.com","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"3cc843c8ca1b6cd23097c7e4785d5aff71c0f1bd","unresolved":true,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":".. literalinclude:: ../../../../etc/openstack_deploy/env.d/cinder-volume.yml.container.example"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"In order to be able to execute playbook only against hosts in"},{"line_number":224,"context_line":"a single Availability Zone, as well as be able to set AZ-specific"},{"line_number":225,"context_line":"variables, we need to define groups definitions. For that, create"},{"line_number":226,"context_line":"a file ``/etc/openstack_deploy/env.d/az.yml`` with the following content:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"6f922ab8_f5fb7b9a","line":223,"updated":"2025-04-14 23:41:32.000000000","message":"```suggestion\nIn order to be able to execute a playbook only against hosts in\n```","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1d584a0cac0881e115071572bbe03ddf9c2c4281","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":".. literalinclude:: ../../../../etc/openstack_deploy/env.d/cinder-volume.yml.container.example"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"In order to be able to execute playbook only against hosts in"},{"line_number":224,"context_line":"a single Availability Zone, as well as be able to set AZ-specific"},{"line_number":225,"context_line":"variables, we need to define groups definitions. For that, create"},{"line_number":226,"context_line":"a file ``/etc/openstack_deploy/env.d/az.yml`` with the following content:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1f1616de_9e4468b0","line":223,"in_reply_to":"6f922ab8_f5fb7b9a","updated":"2025-04-15 07:42:45.000000000","message":"Fix applied.","commit_id":"71eea1222b59d2656553643095451c288fcd4d8d"}]}
