Experiencias con PostgreSQL en AWS

Embed Size (px)

DESCRIPTION

Charla que dí en la PgConfEU en el año 2014, la cual se celebró en Madrid, España. (Recomiendo descargar el original de la presentación) Hablo sobre como desplegué Postgres en AWS en 2008 y comento también sobre cosas que se podrían hacer mejor, siguiendo un enfoque de mejora iterativo

Citation preview

  • 1. EXPERIENCIAS CONPOSTGRESQL EN AWSPGCONF.EU 2014Alejandro E. Brito Monedero @ae_bm

2. Quin soy y por qu estoy aqu?Ya sabes mi nombreEstudie ciencias de la computacinHe trabajado como sysadmin por msde 8 aosMs info en http://bit.ly/1sT7bLwNo s 3. Quin soy y por qu estoy aqu? 4. Esquema de la historiaAntes de la nubeMigrando a la nubeComo operaba en la nubeMejoras a lo hecho en la nube 5. Antes de la nubeConocimiento de postgresqlInstalar (apt-get installpostgresql-X.Y)Arreglar shared_bufferskernel.shmmax kernel.shmallBD sobre servidor fsico 6. Migrando a la nube 7. Migrando a la nubeUn par de conceptosPago por usoReservar instanciasImagen de mquina virtual: AMIInstance storeEBS backed 8. Migrando a la nubeUn par de conceptosAlmacenamientoEfmero: Instance StoreEBS y SnapshotsObjetos: S3 9. Migrando a la nubeUn par de conceptosRedes: VPCMquina virtual: instanceEBS-Optimized. Ej:r3.8xlarge 10. Migrando a la nubeUn par de conceptosAutenticacin y autorizacin: IAMCredentials & RolesE/S garantizada: ProvisionedIOPSFirewall: Security Groups 11. Migrando a la nube 12. Migrando a la nube 13. Migrando a la nubeReceta de la abuelaBuscar un AMI baseCrear nueva AMIInstalar postgresScripts de backups 14. Migrando a la nubeReceta de la abuelaCrear rol o generar credencialesCrear un Security Group y subredesdentro de VPCElegir tipo de instancia 15. Migrando a la nube Receta de la abuelaQu instancia?Discos rpidosY mucho ===> 16. Migrando a la nubeReceta de la abuelaEjecutar instancia con el AMIpersonalizadoCrear volumen EBS y asociarlo a lainstanciaPoner LVM sobre el EBS 17. Migrando a la nubeReceta de la abuelaMontar el LV (logical volume) comodirectorio de datos de postgresPoner en el crontab los scripts debackupCargar un dump de la BD 18. Como operaba en la nubeEscalado verticalEste es el procedimiento cuando seusan instancias del tipo instancestoreImplica una parada del servicio 19. Como operaba en la nubeEscalado verticalIniciar la imagen con postgres enuna nueva instancia ms grandeDetener postgres en la instanciaactual 20. Como operaba en la nubeEscalado verticalDesmontar el volumen de postgresDesactivar volume groupvgchange -an Desconectar EBS de la instancia 21. Como operaba en la nubeEscalado verticalConectar EBS a la instancia nuevaActivar volume groupvgchange -ay Montar volumen de postgres 22. Como operaba en la nubeEscalado verticalIniciar postgresHacer que los clientes sepan quepostgres esta en la instancia nuevaPoner a dormir a la instanciaantigua 23. Como operaba en la nubeAumentar en caliente el tamao delvolumen de datosCrear EBS ms grandeConectar EBS a la instanciapvcreate vgextend 24. Como operaba en la nubeAumentar en caliente el tamao del volumende datospvmove vgreduce pvremove lvextend 25. Como operaba en la nubeAumentar en caliente el tamao delvolumen de datosextender filesystemDesconectar y eliminar EBS antiguoSi, no es gratis (E/S) pero no sdaban cuenta ^_^ 26. Como operaba en la nubeBackupsCrear otro EBS donde guardar losdumpsConectar el EBS a la instanciaMontar y usar el EBS sin cosasrebuscadas (LVM, etc) 27. Como operaba en la nubeBackupsHacer un script que tenga 2 pasosHacer el dump de la BD que sealmacena en el EBS creado paralos backupspg_dumpall clean --file= 28. Como operaba en la nubeBackupsHacer un script que tenga 2 pasosDesmontar volumen EBSHacer un snapshot a S3 del EBS delos backupsNo olvidar siempre siempre siemprerevisar los cdigos de error 29. Como operaba en la nubeRestaurar backupsDepender del cataclismo o pruebaque se hagaSi sigue funcional el EBSpsql -1 -f postgres 30. Como operaba en la nubeRestaurar backupsSi el EBS esta muertoCrear un EBS del snapshot delbackupSeguir los pasos de cuando elEBS esta funcional 31. Como operaba en la nube 32. Mejoras a lo hecho en la nubePuntos a mejorarAl hacer escalado vertical el tenerque actualizar la direccin de la BDMientras ms grande es la BD mstardara en hacerse el dump y elrespectivo restore 33. Mejoras a lo hecho en la nubePuntos a mejorarMejorar la frecuencia de losrespaldosUsar PITRBackups cuando se tiene RAID 1+0 34. Mejoras a lo hecho en la nubeActualizar la direccin de la BDUsar un servidor DNS internoUsar un pooler / proxy comopgbouncer 35. Mejoras a lo hecho en la nubeActualizar la direccin de la BDQuerer impresionar y usar algocomo Consul o etcdAprovechar las funcionalidades deVPC 36. Mejoras a lo hecho en la nubeActualizar la direccin de la BDPor ejemplo usando VPC se puedeAsignar direcciones IP secundariasa la interfaz de redSe usa IP aliasingLa IP primaria y secundariapueden estar en la misma subred 37. Mejoras a lo hecho en la nubeActualizar la direccin de la BDOtro ejemplo con VPCCrear una subred para el servicioCrear una interfaz que estar en la red deservicioHay que usar el comando ipLa IP de servicio no puede estar en en elmismo rango que la IP primaria 38. Mejoras a lo hecho en la nubeActualizar la direccin de la BDEjemplo de la configuracin cuando se usaninterfaces de redip rule add from table ip addr add / dev 39. Mejoras a lo hecho en la nubeActualizar la direccin de la BDEjemplo de la configuracin cuandose usan interfaces de redip link set dev up 40. Mejoras a lo hecho en la nubeActualizar la direccin de la BDEjemplo de la configuracin cuando se usaninterfaces de redip route add dev proto kernel scope link src table 41. Mejoras a lo hecho en la nubeActualizar la direccin de la BDEjemplo de la configuracin cuando se usaninterfaces de redip route add default via dev table 42. Mejoras a lo hecho en la nubeBackupsVer http://goo.gl/cBrtEQEstrategia similar a la anterior, perousando el formato custom 43. Mejoras a lo hecho en la nubeBackupsRespaldar los globalespg_dumpall -g -c -f Por cada BDpg_dump -f -Fc 44. Mejoras a lo hecho en la nubeBackupsRestaurarpsql -1 -f Por cada BDpg_restore -C -d postgres 45. Mejoras a lo hecho en la nubeBackupsAhora, si queremos aprovechar lassnapshots de los EBSarchive_mode = onwal_level = archive osuperior 46. Mejoras a lo hecho en la nubeBackupsAhora, si queremos aprovechar lassnapshots de los EBSPara archive_commandusar un comando que no sobrescribawal logsSolo termine con cdigo 0 si hizo lacopia 47. Mejoras a lo hecho en la nubeBackupsAhora, si queremos aprovechar lassnapshots de los EBSPara archive_commandEl destino de los wal logs es unvolumen aparte 48. Mejoras a lo hecho en la nubeBackupsEl procedimiento es quedaSELECTpg_start_backup();Hacer el snapshot de el / los EBSque conforman el clusterSELECT pg_stop_backup(); 49. Mejoras a lo hecho en la nubeBackupsEl procedimiento es quedaDesmontar EBS donde elarchive_command deja los wal logsHacer un snapshot de ese EBSNo olvidar revisar los cdigos de error 50. Mejoras a lo hecho en la nubeBackupsPara restaurarRecuperar las snapshot quetienen los datosRecuperar la snapshot delvolumen con los wal logs 51. Mejoras a lo hecho en la nubeBackupsPara restaurarCrear el recovery.conf con unrestore_commandIniciar la BD 52. Mejoras a lo hecho en la nubeBackupsSobre el procedimientoAunque se use RAID0 en eldirectorio de datos no esnecesario suspender el dispositivo(segn mis pruebas) 53. Mejoras a lo hecho en la nubeBackupsSobre el procedimientoSi eres paranoico lo puedes hacerpero recuerda reanudar la E/Santes de hacer el pg_stop_backup 54. Mejoras a lo hecho en la nubeBackupsSobre el procedimientoSi suspendes el dispositivobloquearas las operaciones deE/S, as que haz los snapshotsrpido 55. Mejoras a lo hecho en la nubeBackupsSobre el procedimientoSuspender Ej:dmsetup suspend Reanudar Ej:dmsetup resume 56. Mejoras a lo hecho en la nubePerformance?Un tema para mucha discusin,cada caso es distintoPuedes usar SSDs, ProvisionedIOPS, da consistencia a cambio de$$$ 57. Mejoras a lo hecho en la nubePerformance?Ver http://youtu.be/QkvNazjv_coVer http://youtu.be/3OH4-Hx3tlE 58. Mejoras a lo hecho en la nubePerformance?Determinar el cuello de botellaCualquier optimizacin que no seahecha sobre el cuello de botella notendr efecto sobre el sistema(Theory of Constraints) 59. Preguntas u objetoscontundentes? 60. Creditoshttps://commons.wikimedia.org/wiki/File:Cloud_pattern1.jpghttp://knowyourmeme.com/photos/638208-i-have-no-idea-what-im-doinghttp://static3.tudespensa.com/rep/7d72/imagenes/40471/4/chocolate-a-la-taza-tradicional-ram-brik-1-lt.jpghttps://www.muralesyvinilos.com/murales/Madrid_skyline_muralesyvinilos_39870095__Monthly_XXL.jpghttps://commons.wikimedia.org/wiki/File:Postgresql_elephant.svghttp://giphy.com/gifs/m4Kw0bz2tW9wshttp://www.memegenerator.es/meme/13014499http://giphy.com/gifs/Pk17IeO00wxFehttp://i.giphy.com/wsEX8uMrTRDoI.gifhttp://i.giphy.com/XSQUAevZhaROM.gif