Титла: apache ha cluster и php sessions Публикувано от: ovrpwrd в Nov 12, 2008, 11:32 Здравейте,
От известно време си играя с ha клъстеринг в домашни условия. Имам 2 апача в клъстер с ldirectord и т.н. но не намирам решение за php сесиите. Реално проблема е че когато се логна в някой от сайтовете на клъстера, когато конекцията се пренасочи към другия апач сесията се разпада. Несъм програмист и не разбирам php нито начина по който работят сесиите. Затова се надявам някой тук да ми помогне. Нужна ми е просто насока, някакво howto или статия по темата. Разрових се из google но не открих нищо подходящо. А ако някой има повече време може и да поясни стъпка по стъпка решение :) Благодаря Ви! Титла: Re: apache ha cluster и php sessions Публикувано от: VladSun в Nov 12, 2008, 12:00 До колкото ми е известно, има два (стандартни) начина за пазене на PHP сесиите - във файлове или в ДБ. Т.е. имаш варианти да направиш общ storage на файловете за сесии или обща ДБ за двата сървера.
gat3way, кво ще кажеш ти по въпроса ;) ? Титла: Re: apache ha cluster и php sessions Публикувано от: ovrpwrd в Nov 12, 2008, 12:07 До колкото ми е известно, има два (стандартни) начина за пазене на PHP сесиите - във файлове или в ДБ. Т.е. имаш варианти да направиш общ storage на файловете за сесии или обща ДБ за двата сървера. Да обмислих варианта да пазя сесиите в ДБ, но тогава трябва да преконфигурирам всички приложения да използват ДБ като session storage което е немислимо ако имам огромен брой приложения/сайтове. Опитах другия вариант с общ session.save_path, монтирах единия на другия, но пак се губят сесиите. Сега разглеждам drbd, може да се окаже някакво решение. Благодаря, все още търся решение на проблема и всяка идея би била полезна! Титла: Re: apache ha cluster и php sessions Публикувано от: gat3way в Nov 12, 2008, 12:49 Трябва ти shared storage някакъв. Това може да бъде NFS сървър (кофти вариант, single point of failure). Най-икономичният вариант е drbd, но ако трябва да го направиш като хората, за да е сигурно и за да не товариш външния интерфейс, ще е добре на 2-те апач машини да имаш по втори интерфейс, който да ползваш за drbd трафик.
Гадното на drbd е че не можеш да синхронизираш повече от 2 машини. Те 2 са достатъчни за целите на failover де. А, да, сам по себе си drbd не ти решава проблема, защото не ти трябва просто споделено блоково устройство, а споделена файлова система. За целта ти трябва клъстерна файлова система, защото иначе се сещаш какво става когато две машини я монтират едновременно и почнат да мажат отгоре (особено по журнала) без да имат идея за съседа си който прави същото....ще съсипеш файловата система одма :) ocfs2 и gfs са добри варианти. Титла: Re: apache ha cluster и php sessions Публикувано от: ovrpwrd в Nov 12, 2008, 12:58 Трябва ти shared storage някакъв. Това може да бъде NFS сървър (кофти вариант, single point of failure). Най-икономичният вариант е drbd, но ако трябва да го направиш като хората, за да е сигурно и за да не товариш външния интерфейс, ще е добре на 2-те апач машини да имаш по втори интерфейс, който да ползваш за drbd трафик. До момента изпробвах следното: монтирам с NFS session.save_path (/tmp) от единия сървър на другия. Ефект: правя сесия на единия апач, създава файл например sess_420998c1bf3999c530fdb43b688ad5567db135dd в тази директория(/tmp), но другия апач се прави че не е видял файла и сесията се разпада. Не е ли нормално другото php да види този файл и да продължи сесията? Титла: Re: apache ha cluster и php sessions Публикувано от: gat3way в Nov 12, 2008, 13:00 Хм, странно. Не би трябвало де. Дали позволенията са като хората?
Титла: Re: apache ha cluster и php sessions Публикувано от: ovrpwrd в Nov 12, 2008, 13:11 Абсолютно, наред са. Вероятно пише нещо другаде.
Титла: Re: apache ha cluster и php sessions Публикувано от: gat3way в Nov 12, 2008, 13:15 Не, не, не би трябвало да има проблем. Сигурен ли си че на двете машини apache user-a с който върви уебсървъра (www-data в дебиан, apache в редхат) имат един и същ uid?!?
Титла: Re: apache ha cluster и php sessions Публикувано от: bnight в Nov 12, 2008, 13:23 Така доста съм си играл с HA като съм достигал до напълно работещ сървър. Въпроса е че при NFS има едни Lock който ти пречат за това със сесиите. Та това е основният проблем.
Титла: Re: apache ha cluster и php sessions Публикувано от: gat3way в Nov 12, 2008, 13:43 NFS сървъра явно се намира на една от двете машини предполагам, щом стават подобни драми с локинг-а. Е те това не е много разумна идея като цяло, отпадането на едната машина води до отпадане на функционалността и на другата - щото няма да чете и пише в mountpoint-a.
Титла: Re: apache ha cluster и php sessions Публикувано от: gat3way в Nov 12, 2008, 15:18 ...
Титла: Re: apache ha cluster и php sessions Публикувано от: ovrpwrd в Nov 13, 2008, 11:08 NFS сървъра явно се намира на една от двете машини предполагам, щом стават подобни драми с локинг-а. Е те това не е много разумна идея като цяло, отпадането на едната машина води до отпадане на функционалността и на другата - щото няма да чете и пише в mountpoint-a. Здравейте отново, Да просто бях монтирал session.save_path на едното php като NFS на другото, просто за теста, но несе получи не заради nfs lock мисля, вероятен проблем с позволениятя(nfsnobody/nobody) не успях да го изясня тъй като прецених че NFS сторидж за сесиите не е надежден и го изключих като вариант. Реших проблема използвайки memcached да пази сесиите(на трета машина). Остава да клъстеризирам и memcached демона за да не осъмна без сесии евентуално някой ден :) и така. Това е моето решение засега, все пак продължавам да търся сходни решения и евентуално развитие. |