首页 > 解决方案 > Distribute_reads gem 是否支持 Amazon Aurora 的负载平衡副本?

问题描述

我使用distribute_reads gem并具有以下database.yml设置:

default: &default
  url: postgresql-makara:///
  makara:
    sticky: true
    connections:
      - role: master
        name: primary
        url: <%= ENV["DATABASE_URL"] %> # aurora writer endpoint 
      - name: replica
        url: <%= ENV["REPLICA_DATABASE_URL"] %> # aurora reader endpoint 

development:
  <<: *default

production:
  <<: *default

当 CPU 增加时,Amazon Aurora 会创建额外的副本,但新副本似乎根本没有被使用。我们期望从过载副本的连接转移到新的副本。我已经在阅读连接应该以某种方式重新连接以直接连接到新副本。

我希望 gem 以与fresh_connection gem 提供的类似方式工作。下面是自述文件中的架构以及副本在我们的应用程序中的行为方式。

Rails -------+---- DB Master
             |
             |                     +------ DB Replica1 # CPU 99% 500 connections
             |                     |
             +---- Loadbalancer ---+
                                   |
                                   +------ DB Replica2 # CPU 5% 0 connections

标签: ruby-on-railsamazon-aurora

解决方案


下面的设置database.yml帮助我们在只读副本之间分配流量。

idle_timeout: 5
reaping_frequency: 5

推荐阅读