Дизайн слишком расплывчат, чтобы о нем судить.
Некоторые вопросы, которые вы должны решить:
Есть ли какие-либо данные, которые объединяют все шарды?
Если да, как эти данные распределяются и поддерживаются согласованными по всем сегментам?
Как HAproxy определяет, к какому сегменту следует направлять запрос?
Как добавить или удалить осколок?
Что произойдет, если осколок упадет?
Есть ли у вас какое-то автоматическое переключение на резервные базы данных? Если да, то как вы это делаете?
Предложение memcached: я думаю, что это ошибка кеширования результатов запроса к базе данных. Это обычно вызывает больше проблем, чем решает. Вместо этого хорошо спроектируйте запросы к базе данных.