Uploaded image for project: 'Red Hat 3scale API Management'
  1. Red Hat 3scale API Management
  2. THREESCALE-1132

Redis HA for System components - system-redis

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Done
    • Icon: Major Major
    • None
    • 2.2 GA, SaaS
    • System
    • 3scale 2019-06-03

      System components use REDIS_URL environment variable for setting the URL for Redis (JIRA for adding this in the template – THREESCALE-1062)

      This only supports a single Redis instance, the request is to support Redis HA (e.g. Sentinels, as backend component does), as when Redis is down, some components will not work, which affects the functionality of the product.

      system-redis is used for job queues.

      ---------------------- Part 2? -----------------------
      System components communicate to backend Redis to get analytics information. The location is configured via BACKEND_REDIS_URL environment variable (JIRA for adding this in the template – THREESCALE-1062).

      Backend supports Redis Sentinel (see the description in the KCS, and the JIRA for adding this to the documentation).

      However, system currently doesn't support the same setup, and so system can only connect to one node to pull the statistics.

      The request is to make system work with Redis Sentinel as well.

      Notes

      See this comment for configuration instructions

      Dev Notes

      gem install?, some config files to add, upgrade documentation, ...
      #=> Probably no gem upgrade as redis-sentinel is deprecated: https://github.com/flyerhzm/redis-sentinel
      #=> We could probably add an option for sentinels in the redis yml configs though: https://github.com/redis/redis-rb#sentinel-support

      Needs to be tested on OpenShift

      Other thing to consider

      ruby redis client accepts password for sentinels, and it needs to be implemented.

      SENTINELS = [{ host: '127.0.0.1', port: 26380, password: 'mysecret' },
                   { host: '127.0.0.1', port: 26381, password: 'mysecret' }]
      
      redis = Redis.new(host: 'mymaster', sentinels: SENTINELS, role: :master)
      

              Unassigned Unassigned
              rhn-support-dmayorov Daria Mayorova
              Guilherme Cassolato Guilherme Cassolato
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

                Created:
                Updated:
                Resolved: