Я новичок в AWS, так что это может быть вопрос новичка. Я настроил экземпляр RDS с репликой для чтения и подключил свои виртуальные машины к главной БД через AWS Opsworks. В идеале я хочу, чтобы чтение было сбалансировано между ведущим и ведомым, а записи шли только на ведущий.
Конечно, я делаю это в коде, но это будет беспорядочно, особенно если я хочу добавить больше подчиненных RDS или если я удалю один или несколько своих экземпляров.
Так что-то я упустил? Есть ли какая-то конфигурация, предоставляемая AWS, с которой я еще не сталкивался, чтобы сделать это легко?
AWS (в настоящее время) не поддерживает балансировку нагрузки экземпляров RDS таким образом, поэтому вам придется реализовать такие вещи самостоятельно. Есть несколько разных подходов, которые вы можете использовать для самостоятельной настройки чего-то вроде этого:
Как вы заявили, вы можете сделать это в своем собственном коде, что будет немного беспорядочно.
Вы можете попробовать использовать циклический DNS для реализации базовой формы балансировки нагрузки. Если вы не знакомы с циклическим DNS, это, по сути, способ использования DNS для возврата разных IP-адресов для каждого запроса. См. Документацию Amazon по взвешенная маршрутизация для получения дополнительной информации о настройке этого в Route53.
Вы можете включить простой прокси / балансировщик нагрузки, например HAProxy или баланс либо на одном из ваших существующих серверов приложений, либо на отдельном небольшом экземпляре, и пусть он управляет балансировкой нагрузки между экземплярами RDS.
Вероятно, есть и другие варианты (включая другие приложения для балансировки нагрузки), но один из них, вероятно, будет самым простым решением для ваших нужд.