Ik zit met een rechten issue welke in een database zijn opgeslagen, een zogenaamde ACL. Wat is mijn probleem? Veel gebruikers en veel verschillende rechten, dus performance bunch. Oplossing? Memcached!
Ik heb al verschillende mogelijkheden bekeken en ben er echt uit dat ik voor memcached met een MySQL DB als backend ga. Ik sla hier mijn sessies in op en tevens de ACL. Als er wat wijzigt wordt alles direct ge-update in memcached.
Ik heb een aparte memcached server en aparte MySQL server, deze wil ik beide redundant uitvoeren of met meer machines in een master <> master replicatie.
Het probleem zit hem in beide connecties voor de redundancy. Ik gebruik een PHP script om mijn sessies in MySQL en Memcached te zetten. Verandert er iets in de sessie dan wordt MySQL geupdate, daarna Memcached waarna Memcached weer leading is tot de volgende wijziging in de sessie...
In mijn script connect ik naar mijn MySQL server en mijn Memcached server, hier zit meteen mijn bottleneck in redundancy.
Ik probeer een manier te vindend dat wanneer ik bijvoorbeeld 4 webservers heb, deze allemaal naar de eerst beschikbare Memcached server en of MySQL server kunnen connecten.
In de php.ini kan je het volgende instellen:
Dit levert denk ik alleen een probleem op als je zoals ik het doe via een PHP script je sessies in Memcached zet en tevens MySQL als backend gebruikt hiervoor.
De volgende manier kan overigens voor het PHP script, echter hoe gaan we dan met MySQL om ?
Ik weet overigens niet of bovenstaand de manier is welke als web1 uitvalt direct naar web2 overstapt om de Memcached data daar weer vandaan te halen. Wellicht heb ik hier een functie voor nodig welke dit controleert ?
Al met al complex, en ja ik heb dit nodig om mijn sessies levend te houden. Sessies in Memcached alleen is verre van optie!
Any ideas ?
Ik heb al verschillende mogelijkheden bekeken en ben er echt uit dat ik voor memcached met een MySQL DB als backend ga. Ik sla hier mijn sessies in op en tevens de ACL. Als er wat wijzigt wordt alles direct ge-update in memcached.
Ik heb een aparte memcached server en aparte MySQL server, deze wil ik beide redundant uitvoeren of met meer machines in een master <> master replicatie.
Het probleem zit hem in beide connecties voor de redundancy. Ik gebruik een PHP script om mijn sessies in MySQL en Memcached te zetten. Verandert er iets in de sessie dan wordt MySQL geupdate, daarna Memcached waarna Memcached weer leading is tot de volgende wijziging in de sessie...
In mijn script connect ik naar mijn MySQL server en mijn Memcached server, hier zit meteen mijn bottleneck in redundancy.
Ik probeer een manier te vindend dat wanneer ik bijvoorbeeld 4 webservers heb, deze allemaal naar de eerst beschikbare Memcached server en of MySQL server kunnen connecten.
In de php.ini kan je het volgende instellen:
code:
1
2
| session.save_handler = memcache session.save_path="tcp://localhost:11211, tcp://192.168.0.2:11211" |
Dit levert denk ik alleen een probleem op als je zoals ik het doe via een PHP script je sessies in Memcached zet en tevens MySQL als backend gebruikt hiervoor.
De volgende manier kan overigens voor het PHP script, echter hoe gaan we dan met MySQL om ?
code:
1
2
3
4
5
6
7
8
9
| $MEMCACHE_SERVERS = array( "10.1.1.1", //web1 "10.1.1.2", //web2 "10.1.1.3", //web3 ); $memcache = new Memcache(); foreach($MEMCACHE_SERVERS as $server){ $memcache->addServer ( $server ); } |
Ik weet overigens niet of bovenstaand de manier is welke als web1 uitvalt direct naar web2 overstapt om de Memcached data daar weer vandaan te halen. Wellicht heb ik hier een functie voor nodig welke dit controleert ?
Al met al complex, en ja ik heb dit nodig om mijn sessies levend te houden. Sessies in Memcached alleen is verre van optie!
Any ideas ?