Skip to content
Snippets Groups Projects
  1. Apr 13, 2023
    • Matt Crees's avatar
      Remove RabbitMQ ha-all policy when not required · c85b64d1
      Matt Crees authored
      With the addition of the variable
      `om_enable_rabbitmq_high_availability`, this feature in the upgrade
      task should be brought back. It is also now used in the deploy task. The
      `ha-all` policy is cleared only when
      `om_enable_rabbitmq_high_availability` is set to `false`.
      
      Change-Id: Ia056aa40e996b1f0fed43c0f672466c7e4a2f547
      c85b64d1
  2. Apr 12, 2023
  3. Jul 27, 2022
  4. Jul 25, 2022
    • Michal Nasiadka's avatar
      Fix var-spacing · dcf5a8b6
      Michal Nasiadka authored
      ansible-lint introduced var-spacing - let's fix our code.
      
      Change-Id: I0d8aaf3c522a5a6a5495032f6dbed8a2be0251f0
      dcf5a8b6
  5. Mar 18, 2022
  6. Feb 21, 2022
    • Doug Szumski's avatar
      Remove classic queue mirroring for internal RabbitMQ · 6bfe1927
      Doug Szumski authored
      When OpenStack is deployed with Kolla-Ansible, by default there
      are no durable queues or exchanges created by the OpenStack
      services in RabbitMQ. In Rabbit terminology, not being durable
      is referred to as `transient`, and this means that the queue
      is generally held in memory.
      
      Whether OpenStack services create durable or transient queues is
      traditionally controlled by the Oslo Notification config option:
      `amqp_durable_queues`. In Kolla-Ansible, this remains set to
      the default of `False` in all services. The only `durable`
      objects are the `amq*` exchanges which are internal to RabbitMQ.
      
      More recently, Oslo Notification has introduced support for
      Quorum queues [7]. These are a successor to durable classic
      queues, however it isn't yet clear if they are a good fit for
      OpenStack in general [8].
      
      For clustered RabbitMQ deployments, Kolla-Ansible configures all
      queues as `replicated` [1]. Replication occurs over all nodes
      in the cluster. RabbitMQ refers to this as 'mirroring of classic
      queues'.
      
      In summary, this means that a multi-node Kolla-Ansible deployment
      will end up with a large number of transient, mirrored queues
      and exchanges. However, the RabbitMQ documentation warns against
      this, stating that 'For replicated queues, the only reasonable
      option is to use durable queues: [2]`. This is discussed
      further in the following bug report: [3].
      
      Whilst we could try enabling the `amqp_durable_queues` option
      for each service (this is suggested in [4]), there are
      a number of complexities with this approach, not limited to:
      
      1) RabbitMQ is planning to remove classic queue mirroring in
         favor of 'Quorum queues' in a forthcoming release [5].
      2) Durable queues will be written to disk, which may cause
         performance problems at scale. Note that this includes
         Quorum queues which are always durable.
      3) Potential for race conditions and other complexity
         discussed recently on the mailing list under:
         `[ops] [kolla] RabbitMQ High Availability`
      
      The remaining option, proposed here, is to use classic
      non-mirrored queues everywhere, and rely on services to recover
      if the node hosting a queue or exchange they are using fails.
      There is some discussion of this approach in [6]. The downside
      of potential message loss needs to be weighed against the real
      upsides of increasing the performance of RabbitMQ, and moving
      to a configuration which is officially supported and hopefully
      more stable. In the future, we can then consider promoting
      specific queues to quorum queues, in cases where message loss
      can result in failure states which are hard to recover from.
      
      [1] https://www.rabbitmq.com/ha.html
      [2] https://www.rabbitmq.com/queues.html
      [3] https://github.com/rabbitmq/rabbitmq-server/issues/2045
      [4] https://wiki.openstack.org/wiki/Large_Scale_Configuration_Rabbit
      [5] https://blog.rabbitmq.com/posts/2021/08/4.0-deprecation-announcements/
      [6] https://fuel-ccp.readthedocs.io/en/latest/design/ref_arch_1000_nodes.html#replication
      [7] https://bugs.launchpad.net/oslo.messaging/+bug/1942933
      [8] https://www.rabbitmq.com/quorum-queues.html#use-cases
      
      Partial-Bug: #1954925
      Change-Id: I91d0e23b22319cf3fdb7603f5401d24e3b76a56e
      6bfe1927
  7. Oct 12, 2020
    • Radosław Piliszek's avatar
      Performance: optimize genconfig · 3411b9e4
      Radosław Piliszek authored
      Config plays do not need to check containers. This avoids skipping
      tasks during the genconfig action.
      
      Ironic and Glance rolling upgrades are handled specially.
      
      Swift and Bifrost do not use the handlers at all.
      
      Partially-Implements: blueprint performance-improvements
      Change-Id: I140bf71d62e8f0932c96270d1f08940a5ba4542a
      3411b9e4
  8. Aug 28, 2020
  9. Sep 21, 2018
  10. Aug 21, 2018
    • Paul Bourke's avatar
      Temporarily remove the rabbitmq clusterer plugin · 0d03fc27
      Paul Bourke authored
      In order to migrate to the latest release of rabbitmq (3.7), we need to
      first remove this deprecated plugin which is no longer supported (the
      problems it solved are now addressed in rabbitmq itself).
      
      This avoids a circular dependency in CI where the new images depend on
      the new clustering and the new clustering depends on the new images.
      
      Change-Id: I921459f3e40b9e0d4af9497384e49aabf0abe79b
      0d03fc27
  11. Jul 25, 2018
  12. Jun 08, 2018
  13. May 11, 2018
    • Jeffrey Zhang's avatar
      Fix ansible warning · c5670551
      Jeffrey Zhang authored
      - rename action and serial to kolla_ansible and kolla_serial
      - use become instead of "sudo <command>" in shell
      - Remove quota for failed_when and changed_when in rabbitmq tasks
      
      Change-Id: I78cb60168aaa40bb6439198283546b7faf33917c
      Implements: blueprint migrate-to-ansible-2-2-0
      c5670551
  14. Oct 27, 2017
  15. Aug 21, 2017
    • Mick Thompson's avatar
      Omit outward_rabbitmq from check for upgrade · c618dbcd
      Mick Thompson authored
       Upgrade fails as outward_rabbitmq does not exist
       and cannot therefore be upgraded. Omit it from the
       upgrade check and bootstrap it after rabbitmq upgrade.
      
       Remove jinja2 from 'Find gospel node' task; removes warnings.
      
      Change-Id: I3766271c62779c8dbd31e7cf2300473815bbbe68
      c618dbcd
  16. Jun 15, 2017
  17. Feb 17, 2017
  18. Apr 10, 2016
  19. Mar 18, 2016
    • Michal (inc0) Jastrzebski's avatar
      Playbook for rabbitmq upgrade · 23e7f6c2
      Michal (inc0) Jastrzebski authored
      
      Main issue with rabbitmq clusterer setup is to shut down gospel node
      as last one, which is bulk of this change
      
      Co-Authored-By: default avatarSam Yaple <sam@yaple.net>
      Change-Id: I88e566a19ed813b0e3eef65ef7139ccfaa0c2700
      Implements: blueprint upgrade-rabbitmq
      Partially-implements: blueprint upgrade-kolla
      23e7f6c2
  20. Jan 26, 2016
    • Michal Jastrzebski's avatar
      Add stub upgrade.yml · 375965dd
      Michal Jastrzebski authored
      After introduction of pull action and turing every main.yml into
      {{action}}.yml we lost ability to perform upgrade
      
      Change-Id: Ie9fa2cd083b061033abc733fba53d54f9c55e393
      Fixes-Bug: #1538210
      375965dd
Loading