Как объединить ресурсы нескольких компьютеров
Вот несколько вопросов, я бы хотел, чтобы вы меня просветили.
Непрозрачно, когда работающая программа может каким-то образом использовать второй компьютер для выполнения кода, поскольку они логически разделены, и процессор не может обмениваться данными или получать доступ к памяти друг друга.
Это не значит, что вы не можете объединить вычислительную мощность:
Если вы хотите каким-либо образом использовать дополнительный компьютер, крайне важно иметь возможность удаленного управления. Два способа сделать это через некоторый вид удаленного доступа (RDP, VNC) или альтернативно что-то вроде синергии +.
Одна из моих наиболее часто используемых строк - Да и Нет!
Да, это возможно - для определенных приложений, которые предназначены для работы таким образом. (Обычно известный как кластер - Дальнейшее чтение здесь)
Нет, невозможно (по крайней мере, насколько я знаю) взять два готовых компьютера, "связать" их вместе и получить объединенную память, вычислительную мощность и все остальное.
Это очень возможно! Но, судя по простоте вашего вопроса, я предполагаю, что вы хотели бы просто запустить программу, которая волшебным образом сделает ваш компьютер в два раза быстрее, что невозможно.
Необходимо понимать, что при запуске программы она поддерживает свое состояние, провоцируя ЦП перемещать память между регистрами жесткого диска, ОЗУ и ЦП, а также адреса различных компонентов (таких как видеокарты или сетевые карты). Проблема с использованием процессора с другого компьютера, чтобы помочь вам, что ему нужен доступ к той же памяти. А поддержание зеркального отображения памяти вашего компьютера на другом компьютере требует таких больших накладных расходов, что это легко побеждает цель добавления другого компьютера для повышения производительности :)
Но тип вещей, которые можно разделить между несколькими компьютерами, это рендеринг изображений или некоторые математические вычисления, которые могут работать независимо.
Если вам нужен способ объединения вычислительной мощности двух ПК в один, самый простой способ сделать это - настроить их оба в качестве хостов виртуальных машин с использованием программного обеспечения, такого как VMWare ESXi (предупреждаем, что для этого потребуется устройство с совместимым оборудованием) и создание группы ресурсов или кластера и создание виртуальной машины, которая использует ресурсы обоих компьютеров. Это НЕ даст вам полной скорости в 2 раза (вы потеряете ресурсы из-за виртуализации) и является ограниченным решением из-за вероятных требований совместимости, но это самый "правильный" ответ на ваш вопрос. Виртуальная машина будет работать как один ПК с вычислительной мощностью обоих хостов за вычетом накладных расходов, необходимых для поддержки виртуализации.
Я согласен с другими ответами:
Если вы говорите о разработке программного обеспечения для работы в распределенной (с несколькими компьютерами) среде, вот несколько советов:
В офисе валяется куча ненужных, рабочих системных блоков. Вот я и решил объединить их в единую вычислительную сеть, а по сути в обычный компьютер управляемый единой ОС, но представляющий собой 3+ системных блока.
Итог: Мне нужно что бы 5+ коробок работала как одна, при этом я не хочу управлять каждым серваком отдельно, моя цель единая машина состоящая физически из нескольких под управлением одной системы. Что она будет делать? Да что угодно, хоть пусть будет web сервером с ip в интернете или просто рабочей станцией Ubuntu или fedora
Ответ сводится к тому, что Вам необходимо создать кластер компьютеров под управлением какой-либо Linux-like OS.
Вот несколько готовых решений:
[useless link: has been removed].
Описывать весь процесс в ответе особого смысла нет. Думаю, мой ответ вам полезен.
В таком виде - в котором вы спрашиваете: решения будут неэффективными. Системы из множества компьютеров(серверов) делаются отдельно, под каждую задачу свои, мало того программы - для работы которых и создаётся такая система - тоже пишутся именно под определённые системы серверов.
Называются они "высоконагруженные системы", и их создание/использование - это очень дорогой процесс, который называется "масштабирование". Крупнейшие примеры таких систем - социальные сети: например работу VK обеспечивает 10к машин, но сравнимых по мощности с домашним компьютером(как утверждают владельцы). Да и сам StackOverflow конечно работает не на одном сервере.
обычно решения строятся от задачи, а не от платформы
что конкретно вы хотите делать?
из личного опыта -- анализ логов на биллинге, и ретарификация: делал ручным шардингом на уровне приложения (скрипты на Python), на пачке списанных десктопов, аккаунте на конторском IBM eServer, и паре десктопов под windows.
если у вас межсоединения на древнем 100mbit ethernet, а не как минимум 1G (не говоря уж о спецжелезе типа Infiniband) -- дешевле будет пойти в магазин, купить самую поганую материнку и набить ее памятью под завязку, съэкономите на дорогом быстром 1G свитче и энергопотреблении
ваш вариант конфигурации может быть эффективен только в одном случае: все параллельные потоки полностью независиммы, и каждый блок задачи польностью влазит в ОЗУ и ресурсы одного узла, неплохо решаются вычислительные задачи с полным отсутствием зависимостей в архитектуре "одна нода - один расчетный блок"
с другой стороны, в качестве кластерной рабочей станции подобная утилизация вполне интересная и имеет право на жизнь, и может оказаться выигрышным вариантом: на рабочей станции активно не более 2-3 тяжелых задач, остальные ресурсы тратятся на хранение гигабайтных вкладок в браузере, текстовые редакторы и редкие пробежки утилит по файловой системе
Linux реализаций похоже нет:
так что решение задачи в оригинальной постановке сводится по факту к освоению системного программирования в полном объеме: написать аналог ядра Linux обеспечивающий весь необходимый функционал DOS, адаптировать базовые библиотеки в т.ч. из поставки копиляторов GNU (libc, libatomic, gomp. ) и пересобрать всю систему до состояния, когда сможет работать весь компплект ПО который вы используете
с практической точки зрения:
- ищите задачи с минимальным объемом обмена данными между потоками, и
- пишите свое ПО: смотрите в сторону готовых распределенных платформ для веб/микросервисов, требующие для работы минимальных ресурсов
- перетаскивайте бизнес-процессы в вашей конторе на веб-технологии, чтобы можно было раздать хилое железо юзерам в качестве терминалов/запускалок браузеров
есть два ПК соединённые гигобитной сетью
задача состоит в том, чтобы с точки зрения юзера, эти два компьютера были одним. Т.е. файловая система этих двух компьютеров была общей, наподобие рейд массива. Но производительность бы распределялась, к примеру, при загруженности первого пк, отдельные задачи бы выполнялись уже на втором.
Всё это с иксами, для обычных задач юзеров, офис, локальный софт для расчётов и т.п.
нагуглил по этому вопросу Kerrighed
при помощи него это реализуемо? и есть ещё какие либо варианты?
Я русский, и ты меня оскорбляешь. Что у тебя есть в оправдание?
Продай один комп и проапгрейди другой.
Кластеры это вообще другое.
Goury
на поставленный вопрос это никак не отвечает, в моём понимании кластер это
Кластер — группа компьютеров, объединённых высокоскоростными каналами связи, представляющая с точки зрения пользователя единый аппаратный ресурс.
По-моему тебе нужен тонкий клиент в виде vnc (если эти сотрудники там кинцо не смотрят то им хватит) - сотрудник ушел с объекта A на Б, подрубился к своей сессии и работает. Вернулся на А - опять же подключился к своей сессии на этом ПК и вперед. Либо x11vnc и рулить ПК а с ПК Б и наоборот.
alozovskoy ★★★★★ ( 16.03.15 11:48:37 )Последнее исправление: alozovskoy 16.03.15 11:50:42 (всего исправлений: 1)
Как вариант nfs+x2go, т.е объединяется жетский диск в единое пространство и x2go для открытия сессии на другом пк.
и alozovskoy а если сель сойдёт? Причём она может сойти и в пункте А и в пункте Б. Но А постоянное место работы, а Б в частном случае как резерв.
Вариант общей тревоги для А и Б не рассматриваем. потому что это форс мажор. Руководству тут нечего сказать.
Суть в том, что нужно реалтайм, как в рейде синхронизация жёстких дисков обоих компьютеров. И как похоже выясняется из манов, Kerrighed полностью это реализует.
всем спасибо, анонимус иди в жопу. Если у кого есть варианты, рад буду услышать.
Вот как раз с синхронизацией двух дисков по сети проблем и нет. Проблемы с синхронизацией процессов: даже если ты как-то заставишь это работать, оно будет неюзабельно медленно по гигабитной сети.
Kerrighed уже давно протух и разработка остановилась, так как ему так и не нашли полезное применение. Было какое-то решение для Xen (синхронизация двух работающих виртуалок), но по гигабиту оно тоже будет неюзабельно. Тут десяти то вряд ли хватит.
ИМХО наиболее реалистичное решение - синхронизация дисков (drbd?), а сервисы запускать только на одном из компьютеров, с другого удалённый доступ. Если компьютер с сервисами внепланово отключается - запускать те же сервисы на другом (данные везде идентичны).
Deleted ( 16.03.15 12:38:49 )Последнее исправление: Deleted 16.03.15 12:39:11 (всего исправлений: 1)
И кстати kerrighed не обеспечивал отказоустойчивость, насколько я помню.
Deleted ( 16.03.15 12:40:22 )Последнее исправление: Deleted 16.03.15 12:40:43 (всего исправлений: 1)
файловая система этих двух компьютеров была общей, наподобие рейд массива.
Кластер — группа компьютеров, объединённых высокоскоростными каналами связи, представляющая с точки зрения пользователя единый аппаратный ресурс
Можно попробовать хомяк засунуть в glusterfs, но ей наверное 2х машин будет маловато.
откуда всё это? мощности современных персоналок выше серверов 10 летней давности, получается тогда тоже нельзя было назвать связки серверов кластером?
alozovskoy mironov_ivan да просто во время тревоги юзер может быть не перед компом, и его сразу выведут. Но суть ясна, я просто хотел максимально прозрачно для пользователя, но оказывается эт что то совсем геморно. Ваши варианты куда более реальны. Спасибо.
я можть неправ сильно, но я в голове для такого сценария нагуглил один ноутбук и опциональный впн.
Два это не группа, это пара.
Гигабит это не высокоскоростной канал; высокоскоростной это такой, который имеет большую пропускную способность и меньшую латентность чем хотя бы узкие места. Гигабит имеет лаг в единицы миллисекунд и работает даже медленнее современных НЖМД, не говоря уже о твёрдотелах.
Потому я и говорю: толку с такого кластера не будет, проще комп купить более мощный.
А если денег на решение задачи нет, то стоит задуматься в целесообразности изобретения решения вообще.
Goury ★★★★★ ( 16.03.15 15:12:53 )Последнее исправление: Goury 16.03.15 15:13:59 (всего исправлений: 3)
гугли - ha cluster
тонкие клиенты в помощь
странно, что гуру не понабежали и не натыкали еще
епть, что человеку мозги пудришь, отказоустойчивость ему нужна и тонкие клиенты, у него там здание бетоном походу при аврале заливают в саркофаге (:
хотя две тачки в кластер стремно, поболе надо в таких штуках
имел ввиду, да.
избалован я мыслями о том, что бизнес для зарабатывания денег должен тратить деньги.
Mosix так умел, но давно помер. Помянем.
мощности современных персоналок выше серверов 10 летней давности
А при чем тут мощность? Вопрос в том какие задачи решает кластер, а какие десктоп.
Я присоединяюсь к предыдущим высказавшимся, что тебе нужен удаленный доступ и сервер в надежном месте.
ну. присобачь туда люстру. в чём проблема?
а причём тут тогда пользователь? Что есть кластер в твоём определении?
вот это было прикольно почитать, спасибо)
Goury
Наиболее распространенный размер для кластера HA является двухузловый кластер
это я погуглив ha cluster
Гигабит это не высокоскоростной канал
в своё время был высокосроростным, да и всё зависит от задач
А если денег на решение задачи нет, то стоит задуматься в целесообразности изобретения решения вообще.
такой подход доводит до решения любых вопросов деньгами, имхо. Да и интересно где вы работаете, что такая философия работает?
sergej давайте без наркомании, я пытался из пк сделать кластер. Помойму задача из персоналки сделать персональный сервер не должна удивлять. Тут везде админы локалхостов.
darkenshvein просто читай сначала, <>while(I_got_it)
Такой подход не столько доводит до решения любых проблем деньгами, сколько доводит до отброса разработки заведомо бесполезных решений.
Иными словами, все что в твоих глазах не приносит видимой прибыли не стоит внедрять. Так и запишем, на аудит не звать, ни при каких обстоятельствах.
Дубли ключевых систем гниют годами и заменяются по окончании срока эксплуатации. Если они много работают, то система спроектирована плохо. Но то что они гниют, не значит, что они там ненужны.
Пусть пользователь работает в виртуалке. В случае тревоги виртуалку замораживаем, переносим на другой объект и там размораживаем. Пользователь продолжает работать.
У меня такое подозрение, что ты хочешь такого
Но без затрат денег. без особых технических наворотов. одной кнопкой. на двух компах. Чего-то я сильно сомневаюсь. Либо переформулируй условия задачи.
Скажи, например, при форс-мажоре на одном из объектов комп на этом объекте будет физически уничтожен или у него будет временный даунтайм, или у него гарантированные 100% фуллтайм работоспособность и сетевая доступность?
justAmoment , нет я просто пытаюсь улучшить производительность и так работающей схемы. Думать о людях плохо? Про виртуалки почитаю, спасибо
нет я просто пытаюсь улучшить производительность и так работающей схемы. Думать о людях плохо?
Почему плохо? Нормально всё. Хочешь думать — думай. Просто это не кластер будет, а какое-то другое тех. решение. Может, и свой собственноручно написанный велосипед, который в твоих условиях будет лучше промышленных решений.
Вот ты просто хочешь, чтобы оно само работало и данные сохраняло, и аппаратные ресурсы распределяло. Но чтобы полагаться на автоматику, нужно предсказать все возможные варианты поведения поднадзорных систем. Т.е. заняться сначала сбором статистики использования систем, потом проектированием, потом пуско-наладкой и потом уже эксплуатацией. А ты хочешь все этапы перепрыгнуть и сразу заняться эксплуатацией.
Ну, например, по предоставленным тобой данным через монитор я вижу, что тебе идеально подходит teamviewer. Да не будет автоматики. Но люди не отягащённые it-знаниями легко понимают концепцию переносной флешки и также легко понимают концепцию работы teamviewer.
Объединить несколько компьютеров между собой можно проще, чем вы думаете. Немного времени, и можно будет легко передавать файлы напрямую и пользоваться общей периферией.
Когда в одном доме находится несколько компьютеров, возникает потребность объединить их все в одну сеть для быстрого доступа к общим файлам и обмена информации. На первый взгляд, кажется, что для организации домашней сети потребуется специальное дорогостоящее оборудование, однако это не так. Стоимость такой системы очень низкая и доступна для кошелька каждого пользователя. В сегодняшней статье мы расскажем, как подключить и настроить локальную сеть.
Что для этого нужно
- Несколько компьютеров, которые будем соединять.
- Несколько метров кабеля. Если вы планируете создать локальную сеть с помощью Wi-Fi, то потребуются соответствующие адаптеры для каждого стационарного компьютера. Для ноутбуков такие адаптеры не нужны.
- Инструмент для обжимки, который позволяет устанавливать коннекторы на концы проводов.
- Сами коннекторы, которые называются RJ45. Потребуется 2 штуки для каждого соединительного провода. То есть если планируется объединить 3 компьютера, то соответственно необходимо 6 коннекторов. Если интернет-кабель голый, то еще один коннектор и для него. Итого в конкретном случае — 7 коннекторов.
- Маршрутизатор или Wi-Fi роутер, которые будет выполнять функцию соединительной точки для каждого устройства.
Как создать локальную сеть
Для начала займитесь кабель менеджментом: продумайте как будут проложены провода, отрежьте необходимую длину и обожмите каждый провод с двух сторон. Затем подсоедините все компьютеры к маршрутизатору. Убедитесь, что в маршрутизаторе достаточно слотов расширения, чтобы подключить все устройства. Обязательно обратите внимание, что при подключении кабеля в материнскую плату, загорелся соответствующий индикатор рядом с разъемом. Это сигнализирует о том, что подключение произведено правильно. На роутере индикаторы находятся спереди, поэтому рядом с подключенным коннектором никакая лампочка не загорается. После этого можно переходить к программной настройке.
Принцип создания самой простой сети одинаковый для любых версий операционных систем, в том числи и для устаревших версий. Исключения могут составлять корпоративные сети с большим количеством подсетей.
После подключения оборудования, первым делом необходимо проверить рабочую группу. Она должна быть одинаковая на всех компьютерах. Для этого нажмите комбинацию клавиш Win + R и в появившемся окне введите команду sysdm.cpl.
Для изменения рабочей группы достаточно просто нажать «изменить» в категории «Имя компьютера» в свойствах системы.
В новом окне включите следующие функции: сетевое обнаружение, общий доступ к файлам и принтерам. В самом низу можно включить или отключить защиту паролем. Также вы можете настроить доступ, чтобы пользователи могли читать и записывать файлы в общедоступных папках. На этом первый этап настройки заканчивается если роутер в автоматическом режиме назначает динамические адреса. Если вы используете маршрутизатор или устройства подключены напрямую, то могут потребоваться дополнительные настройки.
Настройка сети
Зайдите в центр управления сетями и общественным доступом с помощью вышеуказанной команды. В левой части окна выберите «Изменение параметров адаптера«.
В новом окне выбираем подключение по локальной сети, нажимаем по нему правой кнопкой мыши и заходим в свойства. Далее выбираем пункт «IP версии 4 (TCP/IPv4)» и снова заходим в свойства.
Задаем следующие настройки:
- IP-адрес: 192.168.0.100
- Маска подсети: 255.255.255.0
- Основной шлюз: 192.168.0.10
На каждом последующем компьютере делаем всё тоже самое, только в последнем значении указываем другое число: 192.168.0.101 на втором устройстве, 192.168.0.102 на третьем устройстве и так далее.
После данных настроек сеть должна заработать. Если этого не произошло, а вы уверены, что всё сделали правильно, то проверьте настройки брандмауэра и антивируса. Они могут ограничивать доступ к сети. Для проверки, попробуйте их на время отключить и если после этого сеть заработает как надо, то вы нашли причину.
Настройка общих папок
Для этого нажмите правой кнопкой мыши на любой папке и выберите свойства. В появившемся окне во вкладке «Доступ» перейдите в меню «Общий доступ».
Возвращаемся в свойства папки и переходим во вкладку «Безопасность». Нажимаем на пункт «Изменить».
Читайте также: