Если мой веб-сайт работает на выделенном сервере с использованием PHP и MySQL. Когда я узнаю, что мне нужен второй выделенный сервер? и легко ли заставить мой сайт работать на двух серверах? будет ли это стоить мне чего-нибудь, кроме стоимости нового сервера? Например: справится ли с этим MySQL Community Edition? и как я могу разделить свой сайт на два сервера?
Вау, какой обширный вопрос! На эту тему написано 1200 страниц книг, и сложно обобщить ее в один благородный ответ на ошибку сервера. Давай попробуем:
Использование ресурсов сервера
Следите за этим. Изобразите это. Следите за тенденциями. Если загрузка ЦП и т. Д. Явно не растет со временем, не нужно торопиться. Если использование ресурсов неуклонно растет, купите больше оборудования, прежде чем это дерьмо поразит вас; скажем, вы видите, что загрузка ЦП в среднем достигла 40-50%, пора начать инвестировать в новое оборудование. Или, если использование памяти приближается к комфортным пределам, увеличьте объем оперативной памяти или купите больше серверов.
Распределение нагрузки более чем на один сервер
Да, это вполне выполнимо. Типичный первый шаг - разделить сервер базы данных и веб-сервер; поместите MySQL на один сервер и ваш веб-сервер на другой.
Добавление дополнительных веб-серверов может быть очень простым или очень сложным, в зависимости от ваших настроек и программного обеспечения, которое вы используете. Если большая часть контента является сервером CMS (например, Drupal или Wordpress), а статический контент (файлы изображений и т. Д.) Изменяется редко, вы можете настроить cronjob rsyning файлов время от времени с главного сервера на другие серверы и делать это с помощью который. Или используйте файловый сервер, и ваши веб-серверы будут обращаться к нему через NFS. Или используйте какую-нибудь кластерную файловую систему (GFS, GPFS, OCFS2), хотя у них есть свои проблемы. Или используйте DRDB.
Добавление дополнительных серверов баз данных может быть сложнее. В MySQL наиболее традиционный способ - иметь один главный сервер, который обрабатывает и чтение, и запись, а затем X подчиненных серверов, которые обрабатывают только чтение. Сложная часть может заключаться в настройке вашего приложения для этого сценария, а также в очень загруженных средах может быть заметная задержка при репликации главный-> подчиненный. Теоретически вы также можете использовать multimaster с MySQL, но в этом тоже есть свои подводные камни.
Если вы используете только программное обеспечение с открытым исходным кодом, все это не будет стоить вам дополнительных денег в дополнение к серверам - хотя планирование, внедрение и тестирование всего этого займет довольно много времени.