Я имею в виду сервер Couchbase в разделе стек приложений this, излагая требуемую архитектуру кластера Couchbase.Архитектура отказоустойчивости кластера Couchbase
Я заметил, что каждый из 5 узлов Couchbase на диаграмме имеет соответствующий веб-сервер. Я также знаю, что SDK Couchbase предназначены для установления соединения с одним узлом и сохраняют это соединение для всех запросов, за исключением событий с отказоустойчивостью.
Во-первых, я хочу подтвердить, что каждый из 5 веб-серверов на диаграмме установит одно соединение с одним из 5 узлов Couchbase. Я предполагаю, что результатом будет соотношение 1: 1; каждый веб-сервер будет подключаться к соответствующему узлу Couchbase, так что никакие 2 веб-сервера не будут устанавливать соединения с одним и тем же узлом Couchbase.
Если это так, то в случае сбоя узла Couchbase, считая, что узел не может быть восстановлен, следует ли удалить соответствующий веб-сервер? Это может показаться неинтуитивными, но здесь ситуация, как я понимаю:
- Couchbase узел # 1 умирает
- Веб-сервер # 1 (подключенный к Couchbase узел # 1) устанавливает подключение к следующему доступному узлу, Couchbase node # 2 (большинство SDK обрабатывают это, FAIA)
- У узла Couchbase # 2 теперь установлено 2 установленных соединения; с веб-сервера # 2 (его соответствующий сервер), а также теперь от веб-сервера # 1 (чей соответствующий Couchbase узел мертв)
Меня беспокоит то, что я заметил, эфемерные проблемы порт истощения с Couchbase сервера, при установлении более чем 1 подключение к одному узлу. This generally results in client timeouts:
Получить http://0.0.0.0:8091/pools: наберите TCP 0.0.0.0:8091: операции истекло из
Опять же, основываясь на этом, я должен также удалить соответствующий веб-сервер, когда узел Couchbase умирает, чтобы избегать множественных подключений к одному узлу Couchbase и возможного истощения портов в эфемерном режиме?