[IRC-DEV] Actualizaciones en caliente de IRC.

Jorge Duarte Rodríguez jduarter at gmail.com
Mon May 9 19:14:38 CEST 2005


Hola, lista.

  La idea sería hacer un servidor proxy que evitase las interrupciones en el
servicio de IRC bajo ciertas circunstancias, como por ejemplo, un upgrade
del daemon.

  Adjunto conversación con Jesús, detallando algo más:

[18:39:20]<jcea> por ejemplo, la persistencia la uso en la mayoria de mis
proyectos
[18:39:26]<jcea> De hecho lo del MMAP en el IRCD
[18:39:34]<jcea> para la BDD, van los tiros por ahí :9
[18:39:43]<jcea> pero está a medio hacer, claro
[18:39:55]<mount> jeje
[18:40:12]<jcea> pero mi idea es poder reiniciar el IRC en medio segundo
[18:40:18]<jcea> y mandar el burst minimo
[18:40:19]<jcea> osea
[18:40:19]<mount> puf
[18:40:22]<jcea> que cuando hay un split
[18:40:27]<mount> si
[18:40:28]<jcea> en vez de tirar todo lo que tienes en memoria
[18:40:32]<jcea> no tiras nada
[18:40:33]<jcea> pero es inaccesible
[18:40:34]<mount> si
[18:40:37]<jcea> y cuando hay un netjoin
[18:40:40]<jcea> solo se manda la actualizacion
[18:40:41]<mount> y esperar a q la red este de nuevo unida
[18:40:42]<mount> claro
[18:40:46]<jcea> no todos los nicks que YA conoces
[18:40:51]<jcea> asi el join podría ser casi instantaneo
[18:41:33]<mount> si
[18:41:38]<mount> vamos, un diff xD
[18:41:39]<jcea> si a eso lo juntas con un proxy en la misma maquina
[18:41:46]<jcea> sencillito, que lo unico que haga es forwarding de conexion
[18:41:50]<jcea> al iord, que tienes en l amiama maquina
[18:41:57]<jcea> puedes actualizar el demonio de IRC
[18:41:58]<jcea> sin cargar la red
[18:42:02]<jcea> y sin que los usuarios
[18:42:07]<jcea> conectados se caigan!
[18:42:11]<mount> jeje
[18:42:21]<jcea> simplemente paras el irc de una forma "especial"
[18:42:29]<jcea> eso hace que vuelque toda su memoria en disco
[18:42:33]<jcea> con lo susuarios conectados
[18:42:34]<jcea> su estado
[18:42:35]<jcea> TODOS
[18:42:36]<jcea> TODO
[18:42:41]<jcea> Eso son igual 15-20 megas
[18:42:46]<jcea> osea, en mi disco duro, medio segundo
[18:42:57]<jcea> pongamos que por carga, serializacion, etc
[18:42:58]<jcea> sean dos segundos
[18:43:06]<jcea> el proxy recibe la orden de encolarlo todo
[18:43:11]<mount> aja
[18:43:12]<jcea> de no pasar nada al irc (que ya no funciona)
[18:43:20]<jcea> asi que simplemten se queda parado
[18:43:26]<jcea> sin leer ni escribir en los sockets
[18:43:27]<mount> se queda en cola hasta que el ircd este de nuevo en marcha
[18:43:31]<jcea> ahora lanzas la version nueva del irc
[18:43:38]<jcea> al lanzarse ve que hay estado "previo"
[18:43:42]<mount> aja
[18:43:44]<jcea> asi que lo carga en RAM
[18:43:50]<jcea> y ahora le dice al proxy
[18:43:53]<jcea> que le pase ya info
[18:44:00]<jcea> asi que el proxy empieza  hacer su trabajo
[18:44:01]<jcea>
[18:44:03]<jcea> resultado
[18:44:08]<mount> una red sin caidas
[18:44:09]<mount> xD
[18:44:11]<jcea> no se entera NI DIOS
de que has actualizado el irc
[18:44:18]<jcea> si un usuario desconecto
[18:44:21]<jcea> mientras tanto
[18:44:22]<jcea> por ejemplo
[18:44:32]<jcea> el proxy no se entera, porque está bloqueado
[18:44:34]<jcea> esperando el "continue" del irc
[18:44:56]<jcea> pero en cuando el irc le avisa y empieza
[18:45:01]<jcea> a procesos sus conexiones de forma normal
[18:45:05]<jcea> verá que hay una caida
[18:45:10]<jcea> y se la manda al IRC, coamo cualquier otro proxy
[18:45:13]<jcea> hala
[18:45:17]<mount> je
[18:45:21]<jcea> asi qu elo unico que ve la red
[18:45:31]<jcea> u otros usuarios es que el servidor pilla lag durante unos
sgudnos
[18:45:34]<jcea> 5- 10 segundos
[18:45:35]<jcea> poquito
[18:45:37]<mount> si
[18:45:38]<jcea> y que luego se recupera
[18:45:41]<mount> lo que dure la actualizacion
[18:45:41]<jcea> nada mas
[18:45:46]<jcea> ¿Tiempo para hacer eso?
[18:45:51]<jcea> un par de semanas de curro
[18:45:58]<jcea> es FACIL

¿Opiniones? ¿Sugerencias?

--
Jorge Duarte Rodríguez (also known as mount).




More information about the IRC-Dev mailing list