File Transport Protocol (FTP) - это старый и сложный мультипортовый протокол который предъявляет определенный набор требований к окружению LVS. Для того, чтобы представить себе природу этих требований, необходимо вначале понять несколько ключевых моментов в работе FTP.
В ходе прочих клиент-серверных взаимоотношений, клиентская машина открывает подключение к определенному порту сервера, а сервер впоследствии отвечает с этого порта клиенту. Когда FTP-клиент подключается к серверу, он открывает соединение на 21 порт. Затем клиент сообщает серверу, соединение какого типа нужно установить - активного или пассивного. Выбранный клиентом тип соединения определяет, каким образом отвечает сервер и через какой порт будут проходить транзакции.
Существует два типа соединений:
- Активные соединения
Когда устанавливается активное соединение, сервер подключается с 20 порта на один из портов верхнего диапазона на клиентской машине. В дальнейшем данные с сервера проходят через это соединение.
- Пассивные соединения
Когда устанавливается пассивное соединение, клиент посылает запрос FTP-серверу на установку порта пассивного соединения. Сервер затем привязывает этот порт к определенной сессии и передает номер этого порта клиенту. Клиент затем устанавливает data-соединение с этим портом на сервере. Каждый data-запрос, отправляемый клиентом, приводит к установлению отдельного data-соединения. Большинство современных FTP-клиентов пытаются установить пассивное соединение при запросе данных с сервера.
Замечание
Именно клиент, а не сервер, определяет тип подключения. Это означает, что для построения эффективного кластера FTP необходимо настроить LVS-маршрутизаторы таким образом, чтобы они могли обрабатывать и активные, и пассивные подключения.
Клиент-серверные взаимоотношения при использовании протокола FTP потенциально могут открыть большое количество портов, о которых не известно ни Piranha Configuration Tool, ни IPVS.