Как использовать Chef JSON для настройки конфигурации redis и sidekiq

Я использую AWS OpsWorks для приложения Rails с Redis и Sidekiq и хотел бы сделать следующее:

  • Переопределить maxmemory конфиг для редиса
  • Запускайте Redis & Sidekiq только на выбранном экземпляре EC2

Моя текущая конфигурация JSON имеет только переопределения database.yml:

{
  "deploy": {
    "appname": {
      "database": {
        "username": "user",
        "password": "password",
        "database": "db_production",
        "host": "db.host.com",
        "adapter": "mysql2"
      }
    }
  }
}

1 ответ

Переопределить конфигурацию maxmemory для redis

Посмотрите и убедитесь, что выбранная вами поваренная книга Redis дает вам атрибут для установки / предоставления пользовательских значений конфигурации. Я знаю главное redisio один позволяет вам установить значение конфигурации, как я делаю это на своих стеках (я полагаю, я устанавливаю путь к кешу на диске)

Запускайте Redis & Sidekiq только на выбранном экземпляре EC2

Эта часть проста: создайте слой для Redis (или Redis/Sidekiq) и добавьте экземпляр к этому слою.

Теперь, поскольку Redis находится на ином экземпляре, чем ваш сервер Rails, вы не обязательно будете знать, какой IP-адрес у вашего сервера Redis. Тем более, что вы, вероятно, захотите использовать внутренний IP-адрес EC2 по сравнению с публичным IP-адресом для коробки (использование внутреннего адреса означает, что вы уже находитесь в брандмауэре по умолчанию).

Оооо... что вам, вероятно, нужно сделать, это написать собственную поваренную книгу для вашего приложения, если вы еще этого не сделали. В вашем attributes/default.rb напишите некоторый код, подобный этому:

redis_instance_details = nil
redis_stack_name = "REDIS"

redis_instance_name, redis_instance_details = node["opsworks"]["layers"][redis_stack_name]["instances"].first

redis_server_dns = "127.0.0.1"
if redis_instance_details
  redis_server_dns = redis_instance_details["private_dns_name"]
end

Затем позже в файле атрибутов установите вашу конфигурацию redis для вашего redis_hostname (возможно, используя его для установки:

default[:deploy][appname][:environment_variables][:REDIS_URL] = "redis://#{redis_server_dns}:#{redis_port_number}"

Надеюсь это поможет!

Другие вопросы по тегам