Как использовать 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}"
Надеюсь это поможет!