Я сейчас планирую как все будет работать и пытаюсь разобраться полностью с HTTPS и WSS.
Суть такова, на одном домене весят два ip. На каждом ip по серверу.
Со стороны пользователя все хорошо, он подключается к любому из них проверяет ssl сертификат и все гуд.
Но мне надо связать эти два сервера между собой и тоже по защищенному каналу.
в связи с этим у меня возникло два вопроса.
1) Можно ли используя домен подключится к конкретному ip который на нем весит (просто тупо выбрать один из двух)?
но как почитав в интернете, я понял что нельзя по домену выбрать конкретный ip. Но может я не правильно понял.
2) На фоне этого появился другой вопрос. Будет ли работать SSL при подключение по ip?
То есть вот у меня два сервера на Node js , один стучится к другому по ip , https будет работать ? просто как я понял при https у нас идет сверка домена с данными в ssl который выдаться на домен, а мы стучимся по ip в это момент. По логике должен быть сбой при проверки, тк тут у нас ip, а не домен
Просто хочу понять на берегу, что с этим делать. Если возможно, был бы признателен если бы объяснили подробно что и как, если да то как работает, если не то почему.
Вам нужно по сертификату на каждый домен. Либо сертификат wildcard на все поддомены вашего общего домена. Сертификат на ip брать очень и очень плохо, так как ip могут меняться, может быть куча ip на домене и т.д.
Вообще-то nodejs лучше убрать за nginx, который и будет рулить сертификатами и перенаправлять трафик на нужные ip. Обычно делают для этого отдельный сервер с выделенным ip, на него заводят все сертификаты ваших доменов, и далее он перебрасывает запросы (проксирует) уже расшифрованный трафик на внутренние или внешние ip-адреса, лучше на внутренние. Многие провайдеры сразу предлагают такие услуги, амазон и прочие клауды типа селектел и маилру.,
у меня домен один, мне не нужно много сертификатов
у меня весит два ip на одном домене для распределения нагрузки и к ним надо подключаться по одному домену, но тк они на одном домене надо как то их связать между собой. Вопрос как раз в том что можно ли на одном и без wildcard как то.
Просто можно ли этой рулеткой как то управлять на dns сервере или ей конкретно сказать куда подключатся.
Neckvik, я немного дописал ответ. Ставьте nginx, который будет перебрасывать по нужным правилам на нужные адреса и шифровать трафик для всех сервисов и ip-адресов
Алексей Черемисин, в прицепе я понял вас, спасибо.
Но как я понял вас, вы предлагаете сделать один главный а дальше играться с внутренними серверами.
Но тогда у меня не будет отказа устойчивости все будет лежать по сути в одной корзинке если я правильно понял что вы предлагаете про внутренний ip.
И правильно ли я понял вы предлагаете перелезь NOde js на nginx?
И так же вопрос не по теме мб немного, можете подсказать пожалуйста, если у нас весит на одном домене несколько ip, и dns сервер на них раскидывает по рандому, то если один из серверов упадет (ip будет не доступен) dns перестанет на него направлять клиентов или нет?
Днс может раздавать только рандомно. И ему тогда нужно будет сказать, что какой-то сервер отвалился. Но это еще не все, многие провайдеры и сами операционки ккешируют запросы к dns. И вы получите ситуацию, когда на dns уже нет записи об ip, а клиенты еще сутки к нему ломятся, а то и больше. Ставьте или nginx, он все умеет, или ha-proxy. Которые будут перенаправлять запросы к вашим nodejs! Так все хорошие мальчики поступают. В nginx читаете про upstream и смотрите тамже примеры.
Алексей Черемисин, спасибо, думаю воспользуюсь идеей
Тогда такой вопрос возникает а что делать если nginx падает? если он не выдержал нагрузку, как тогда быть , можно ли как то подстраховаться и сделать их 2 штуки или как то еще, просто если на dns просто 2 шт nginx повесить то опять же часть запросов может теряться если один из них упадет. и что тогда делать?
И еще один технический маленький вопрос, про ssl сертификаты немного не понял.
Нам где надо ставить сертификаты. и сколько сколько эту нам надо будет? на каждый сервер + балансировщик или только на балансировщик ? просто тогда не очень понимаю схему работы.
Через роутер правилами распределять трафик на несколько балансировщиков. Но nginx и ha-proxy очень надежные штуки, на моей памяти они не падали. Вот каналы забивались под ддос, но не падали.
В общем на балансировщики трафик пускаем через аппаратные или программные роутеры.
Можешь еще подсказать еще один момент по принципу его работы правильно понял он выступает по сути мостом между серверами и пользователями, а не просто указателем куда пользователю идти. То есть все данные проходят через него. Верно я понял принцип его работы ?
И какое под него железо надо что бы 500 000 пользователей выдерживал например онлайн (тк одна из задач сервера это чат в котором куча пользователь), просто ни где не могу найти инфо какое железо надо ставить под балансировщик.
Или как вообще считать это?
Neckvik, Да, через балансировщик(и) проходит весь трафик, и он выступает мостом между серверами и пользователями. На нем можно создавать разные правила, в зависимости откуда, какой и куда пользователь ходит. Балансировщик также может снижать нагрузку на серверы, путем отдачи статики, кеширования контента, перенаправления на другие ресурсы (например по коду 301). В nginx также можно писать на языке lua правила перенаправлений и принятия решений. У меня один из серверов так раздает видео, по "защищенным" временным ссылкам.
Про нагрузку никто ничего не скажет, тем более, если пользователи онлайн. Нужно проводить нагрузочное тестирование, так как нагрузка бывает совершенно разная, но 500к одновременных коннектов - неплохое начало! Рекомендую посмотреть на jmeter, в нем написать профиль клиента, и через него запустить нагрузочное тестирование. Также стоит посмотреть еще и на grinder, как инструмент тестирования. Оба инструмента могут работать в кластерной конфигурации, когда тесты запускаются сразу с группы клиентов на один сервер. grinder.sourceforge.net https://jmeter.apache.org
1) в файле hosts пропишите ip вашего сервера и будете по домену подключаться к нужному серверу.
2) если у вас есть сертификат для ip, то всё будет хорошо, но если вы выполните действие из пункта 1, то вы можете подключаться по домену, а не по ip
Спасибо, кажется я понял про что вы, но все же уточню)
Правильно ли понял вас, вы предлагаете подключаться по домену но просто обогнуть dns сервер , тк hosts выше приоритетом, и прописать в нем один конкретный ?
А не подскажите ли, а как можно обойти эту ситуацию если у нас серверов не 2, а N количество, и каждый должен быть связан с каждым?
И как я понял сейчас сертификаты на ip не выдаются, и желательно действовать по домену как то, то есть через пункт 1
Правильно ли понял вас, вы предлагаете подключаться по домену но просто обогнуть dns сервер , тк hosts выше приоритетом, и прописать в нем один конкретный ?
Да, правильно.
Если серверов больше тогда этот вариант не сработает. Но если для каждого сервера сделать свой поддомен, тогда сработает
Это наилучший вариант. Тогда можно нормально рулить нагрузку, расширяться горизонтально, увеличивать количество серверов только в тот момент, когда в этом есть необходимость
Neckvik, сделайте vpn и свяжите им все ваши N серверов, после этого вам не нужен будет wss для связи между ними, вы сможете связывать из либо через ws либо через обычные сокеты, главное чтобы соединения между серверами шли через поднятый vpn. А в качестве балансировщика нагркзки, а по совместительству и прокси обеспечивающий ssl/tls используйте nginx.