Это моя предлагаемая установка с использованием контейнеров OpenVZ (размещенных на Proxmox):
CT 1: MySQL и nginx. Размещает все базы данных и несколько веб-сайтов (доменов). Используемые порты: 80, 443, 3306, 8080
CT 2, 3, 4: Эти специальные серверы хоста, которые все прослушивают порты 7171 и 7172. Они также подключаются к CT1 для своих баз данных.
Для подключения к веб-сайтам люди используют exampledomain1.com
exampledomain2.com
и так далее
Для подключения к серверам в КТ 2, 3 и 4 человека используют login.exampledomain1.com:7171
и так далее (после аутентификации клиент переключается на порт 7172)
MySQL слушает mysql.exampledomain9.com
Так что было бы лучше получить дополнительные IP-адреса для этой конфигурации? Сколько мне нужно (может быть, по одному на домен?)?
Короткий ответ: Нет, не следует. Пожалуйста, прочтите ниже рекомендации.
Пожалуйста, рассмотрите возможность НЕ открывать вашу базу данных через общедоступный Интернет. Поскольку вы используете контейнеры OpenVZ, вы сможете получить к ним доступ через внутреннюю сеть. Если это возможно, вам следует привязать MySQL к прослушиванию IP-адреса локальной сети. Вы можете установить это в my.cnf. При такой настройке вы можете либо указать mysql.domain.com на этот внутренний IP-адрес, либо пропустить его и использовать /etc/hosts
файл на своем веб-сервере, чтобы не раскрывать вашу внутреннюю конфигурацию через общедоступный DNS.
Нет особых причин для доступа к серверу базы данных из Интернета. Если вы не можете использовать внутреннюю сеть, я бы продолжил настройку внутренней VPN между двумя серверами. Для этого можно использовать OpenVPN, и базовой настройки будет достаточно.
Теперь вам нужен один IP-адрес на общедоступный компьютер. Больше не надо. Apache можно настроить для обработки любого количества доменов по HTTP и HTTPS.
Частные компьютеры (например, серверные части), если можете, настройте их с локальными IP-адресами.
С помощью следующего вы можете добавить несколько IP-адресов к одному и тому же порту Ethernet, что позволит вам создавать похожие серверы с одним и тем же портом. Очевидно, это также означает, что вам необходимо использовать правильный IP-адрес для подключения к указанному серверу (например, 192.168.1.2 и 192.168.1.3, как показано здесь).
auto eth1:0
iface eth1:0 inet static
name Local network
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254
auto eth1:1
iface eth1:1 inet static
name Local network
address 192.168.1.3
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254
etc.
Примечание: нет реального ограничения на количество портов, которые вы можете добавить сейчас в день, хотя некоторые платы могут не принимать более 255 или 256 IP-адресов, а их слишком много может замедлить работу вашей сети.
Вообще говоря, вы должны стремиться использовать как можно меньше IP-адресов.
Если ваше приложение работает и у вас есть только один публичный IP-адрес, ничего страшного.
Если вам нужно различать разные роли на сервере или вы хотите заранее спланировать разделение ролей в будущем, используйте DNS-имена для идентификации каждой роли, которую выполняет сервер.