{"id":2306,"date":"2020-04-07T17:06:49","date_gmt":"2020-04-07T15:06:49","guid":{"rendered":"https:\/\/geko2.factoryfy.com\/?p=977"},"modified":"2021-11-03T17:49:09","modified_gmt":"2021-11-03T16:49:09","slug":"comprobaciones-de-estado-haproxy-y-control-del-downtime","status":"publish","type":"post","link":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/","title":{"rendered":"Comprobaciones de estado HAProxy y control del downtime"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Cuando realizas el load balancing de un servicio es importante asegurarse que los servidores que van a recibir el tr\u00e1fico est\u00e1n en buenas condiciones para dar respuesta. En este articulo nos enfocamos en un par de mecanismos que HAProxy nos brinda para ello.\u00a0\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">HTTP health checks\u00a0<\/span><\/h3>\n<p>Para habilitar las <em>health checks<\/em> de cada servidor, al menos la palabra &#8216;check&#8217; debe colocarse en las lineas del servidor o <em>default-server lines<\/em><\/p>\n<p>Pero hablemos del comportamiento predeterminado de HAProxy. Las comprobaciones utilizar\u00e1n el puerto IP y TCP del servidor para realizar las health check. El intervalo entre dos comprobaciones de estado consecutivas ser\u00e1 de dos segundos y su tiempo de espera m\u00e1ximo ser\u00e1 el mismo valor, por lo que si no hay respuesta en ese tiempo, se considerar\u00e1 una comprobaci\u00f3n no v\u00e1lida. Considerar\u00e1 un servidor como UP despu\u00e9s de realizar dos health check v\u00e1lidas consecutivas y considerar\u00e1 un servidor como DOWN despu\u00e9s de realizar tres comprobaciones de estado inv\u00e1lidas consecutivas. Solo leer\u00e1 los primeros 16384 bytes de la respuesta. Todos estos par\u00e1metros se pueden cambiar en su configuraci\u00f3n.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1652 size-full\" src=\"https:\/\/geko2.factoryfy.com\/wp-content\/uploads\/haproxy_server_state_checks.png\" alt=\"haproxy server state checks\" width=\"500\" height=\"308\" \/><\/p>\n<p>Ahora, lo interesante sobre HAProxy es que puede realizar layer 7 health checks, que son un m\u00e9todo m\u00e1s preciso al reenviar tr\u00e1fico a servidores http. Para habilitar la comprobaci\u00f3n de http, solo tienes que usar la opci\u00f3n directiva httpchk dentro del bloque de backend.<\/p>\n<div class=\"wp-block-codemirror-blocks code-block\">\n<pre class=\"CodeMirror\" data-setting=\"{\">backend http_test\r\n\u00a0mode http\r\n\u00a0balance roundrobin\r\n\u00a0option httpchk\r\n\u00a0http-check expect status 200\r\n\r\n\u00a0server Server1 192.168.10.11:80 check\r\n\u00a0server Server2 192.168.10.12:80 check<\/pre>\n<\/div>\n<p><span style=\"font-weight: 400;\">Puedes personalizar esta comprobaci\u00f3n un poco m\u00e1s, de este modo:<\/span><\/p>\n<div class=\"wp-block-codemirror-blocks code-block\">\n<pre class=\"CodeMirror\" data-setting=\"{\">\u00a0option httpchk HEAD \/ HTTP\/1.1rnHost: www.test.netrnUser-Agent: haproxy_check\r\n\u00a0http-check expect status 200<\/pre>\n<\/div>\n<p>Aqu\u00ed estamos especificando el uso del m\u00e9todo HEAD HTTP para guardarnos la respuesta del cuerpo HTTP, seguido del protocolo HTTP y finalmente el encabezado HTTP, que es una cadena concatenada en la que cada par\u00e1metro est\u00e1 separado por &#8216; r n&#8217; y cada clave \/ valor por una barra diagonal inversa y un espacio. En este encabezado en particular, hemos configurado el host, que es necesario para verificar un host virtual en el servidor web de destino, y tambi\u00e9n el user agent para poder identificar esas solicitudes en los registros f\u00e1cilmente.<\/p>\n<p>Al usar la directiva <i><span style=\"font-weight: 400;\">http-check expect<\/span><\/i>, establecemos una regla de coincidencia para buscar una respuesta v\u00e1lida. Aqu\u00ed usamos la palabra clave <em>status<\/em> para marcar solo como respuestas http v\u00e1lidas cuyo c\u00f3digo es 200. Tambi\u00e9n podr\u00edamos buscar una cadena usando la palabra clave <em>string<\/em>, aunque esto requiere el uso de un m\u00e9todo HTTP GET o POST en lugar de HEAD.<\/p>\n<p>Hay bastantes opciones para ajustar la configuraci\u00f3n, pero el objetivo de este art\u00edculo no es explicar en profundidad las opciones de este mecanismo de verificaci\u00f3n. Puedes obtener m\u00e1s detalles en la <a href=\"https:\/\/www.haproxy.com\/documentation\/aloha\/10-0\/traffic-management\/lb-layer7\/health-checks\/\"><strong>documentaci\u00f3n de HAProxy<\/strong><\/a>.<\/p>\n<h3><span style=\"font-weight: 400;\">Slow start mode<\/span><\/h3>\n<p>El Slow Start mode limita y mide el tr\u00e1fico reenviado a un servidor que acaba de volver a estar online, y esto lo hace de forma progresiva. Es decir, el servidor obtiene una cantidad de tr\u00e1fico ascendente a medida que pasa el tiempo dentro de una ventana de tiempo configurada, empieza recibiendo un 0% del tr\u00e1fico y se incrementa hasta el 100% al final. Esto le permite agregar nuevos servidores sin colapsarlos con una avalancha de solicitudes.<\/p>\n<p>El Slow start mode de HAProxy es muy \u00fatil para aplicaciones que dependen de la memoria cach\u00e9 y necesitan un per\u00edodo de calentamiento antes de poder responder a las solicitudes con un rendimiento \u00f3ptimo, o aplicaciones que tienen un delay de inicio porque pueden necesitar cargar m\u00f3dulos o incluso compilar algunos elementos para inicializar (hello ASP .NET).<\/p>\n<p>Puedes establecer el par\u00e1metro slowstart en la l\u00ednea del servidor dentro del bloque backend o en la<em> default-server<\/em> line, ya sea en el bloque de back-end o\u00a0 en el predeterminado. Puedes hacerlo as\u00ed:<\/p>\n<div class=\"wp-block-codemirror-blocks code-block\">\n<pre class=\"CodeMirror\" data-setting=\"{\">backend https_test\r\n mode http\r\n balance roundrobin\r\n option httpchk HEAD \/ HTTP\/1.1rnHost: www.test.netrnUser-Agent: haproxy_check\r\n http-check expect status 200\r\n default-server check ssl verify none slowstart 4m\r\n \r\n server Server1 192.168.10.11:443\r\n server Server2 192.168.10.12:443<\/pre>\n<\/div>\n<p>Solo acepta un valor de tiempo, y puede usar varias unidades de tiempo distintas: ms (predeterminado), s, m, h, etc.<\/p>\n<p>Es importante tener en cuenta que este modo no se aplica a los servidores cuando se inicia el haproxy o se ha vuelto a cargar despu\u00e9s de que se haya modificado la configuraci\u00f3n porque se ha agregado un nuevo servidor. Solo se aplica a los servidores que se<strong> marcaron previamente como fallidos.<\/strong><\/p>\n<p>Y bueno, espero que esto sirva para cualquier duda b\u00e1sica que pueda tener sobre los health checks de HAProxy.<\/p>\n<hr \/>\n<p>Espero que hayas disfrutado de este post y te animo a que <a href=\"https:\/\/geko.cloud\/es\/blog\/\">revises nuestro blog para leer otrosposts<\/a> que puedan ser de tu inter\u00e9s. <a href=\"https:\/\/geko.cloud\/es\/contacto\/\">No dudes en contactarnos<\/a> si deseas que te ayudemos en tus proyectos.<\/p>\n<p>\u00a1Nos vemos en la pr\u00f3xima entrada!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando realizas el load balancing de un servicio es importante asegurarse que los servidores que van a recibir el tr\u00e1fico est\u00e1n en buenas condiciones para dar respuesta. En este articulo nos enfocamos en un par de mecanismos que HAProxy nos brinda para ello.\u00a0\u00a0 HTTP health checks\u00a0 Para habilitar las health checks de cada servidor, al [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":2309,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[18],"tags":[43],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>HAProxy health checks<\/title>\n<meta name=\"description\" content=\"How to configure HAProxy health checks and some other considerations.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HAProxy health checks\" \/>\n<meta property=\"og:description\" content=\"How to configure HAProxy health checks and some other considerations.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/\" \/>\n<meta property=\"og:site_name\" content=\"Geko Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-07T15:06:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-03T16:49:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/geko.cloud\/wp-content\/uploads\/haproxy_logo-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Antonio Olmos\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@geko_cloud\" \/>\n<meta name=\"twitter:site\" content=\"@geko_cloud\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/\"},\"author\":{\"name\":\"Antonio Olmos\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/06c5401df344025908fdda04850a1dd0\"},\"headline\":\"Comprobaciones de estado HAProxy y control del downtime\",\"datePublished\":\"2020-04-07T15:06:49+00:00\",\"dateModified\":\"2021-11-03T16:49:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/\"},\"wordCount\":765,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/haproxy_logo-2.png\",\"keywords\":[\"HAproxy\"],\"articleSection\":[\"Labs\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/\",\"url\":\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/\",\"name\":\"HAProxy health checks\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/haproxy_logo-2.png\",\"datePublished\":\"2020-04-07T15:06:49+00:00\",\"dateModified\":\"2021-11-03T16:49:09+00:00\",\"description\":\"How to configure HAProxy health checks and some other considerations.\",\"breadcrumb\":{\"@id\":\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#primaryimage\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/haproxy_logo-2.png\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/haproxy_logo-2.png\",\"width\":2000,\"height\":1000,\"caption\":\"HAProxy logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/geko.cloud\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Comprobaciones de estado HAProxy y control del downtime\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/geko.cloud\/es\/#website\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"name\":\"Geko Cloud\",\"description\":\"Servicios de consultor\u00eda cloud y devops\",\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/geko.cloud\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/geko.cloud\/es\/#organization\",\"name\":\"Geko Cloud\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"width\":1650,\"height\":809,\"caption\":\"Geko Cloud\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/geko_cloud\",\"https:\/\/www.instagram.com\/gekocloud\/\",\"https:\/\/www.linkedin.com\/company\/gekocloud\",\"https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/06c5401df344025908fdda04850a1dd0\",\"name\":\"Antonio Olmos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/48f5ef4bb4ea8f8258470052a3ce4a44?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/48f5ef4bb4ea8f8258470052a3ce4a44?s=96&d=mm&r=g\",\"caption\":\"Antonio Olmos\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HAProxy health checks","description":"How to configure HAProxy health checks and some other considerations.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/","og_locale":"es_ES","og_type":"article","og_title":"HAProxy health checks","og_description":"How to configure HAProxy health checks and some other considerations.","og_url":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/","og_site_name":"Geko Cloud","article_published_time":"2020-04-07T15:06:49+00:00","article_modified_time":"2021-11-03T16:49:09+00:00","og_image":[{"width":2000,"height":1000,"url":"https:\/\/geko.cloud\/wp-content\/uploads\/haproxy_logo-2.png","type":"image\/png"}],"author":"Antonio Olmos","twitter_card":"summary_large_image","twitter_creator":"@geko_cloud","twitter_site":"@geko_cloud","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#article","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/"},"author":{"name":"Antonio Olmos","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/06c5401df344025908fdda04850a1dd0"},"headline":"Comprobaciones de estado HAProxy y control del downtime","datePublished":"2020-04-07T15:06:49+00:00","dateModified":"2021-11-03T16:49:09+00:00","mainEntityOfPage":{"@id":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/"},"wordCount":765,"commentCount":2,"publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"image":{"@id":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/haproxy_logo-2.png","keywords":["HAproxy"],"articleSection":["Labs"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/","url":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/","name":"HAProxy health checks","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#primaryimage"},"image":{"@id":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/haproxy_logo-2.png","datePublished":"2020-04-07T15:06:49+00:00","dateModified":"2021-11-03T16:49:09+00:00","description":"How to configure HAProxy health checks and some other considerations.","breadcrumb":{"@id":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#primaryimage","url":"https:\/\/geko.cloud\/wp-content\/uploads\/haproxy_logo-2.png","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/haproxy_logo-2.png","width":2000,"height":1000,"caption":"HAProxy logo"},{"@type":"BreadcrumbList","@id":"https:\/\/geko.cloud\/es\/comprobaciones-de-estado-haproxy-y-control-del-downtime\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/geko.cloud\/es\/"},{"@type":"ListItem","position":2,"name":"Comprobaciones de estado HAProxy y control del downtime"}]},{"@type":"WebSite","@id":"https:\/\/geko.cloud\/es\/#website","url":"https:\/\/geko.cloud\/es\/","name":"Geko Cloud","description":"Servicios de consultor\u00eda cloud y devops","publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/geko.cloud\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/geko.cloud\/es\/#organization","name":"Geko Cloud","url":"https:\/\/geko.cloud\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/","url":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","width":1650,"height":809,"caption":"Geko Cloud"},"image":{"@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/geko_cloud","https:\/\/www.instagram.com\/gekocloud\/","https:\/\/www.linkedin.com\/company\/gekocloud","https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ"]},{"@type":"Person","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/06c5401df344025908fdda04850a1dd0","name":"Antonio Olmos","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/48f5ef4bb4ea8f8258470052a3ce4a44?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/48f5ef4bb4ea8f8258470052a3ce4a44?s=96&d=mm&r=g","caption":"Antonio Olmos"}}]}},"_links":{"self":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/2306"}],"collection":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/comments?post=2306"}],"version-history":[{"count":2,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/2306\/revisions"}],"predecessor-version":[{"id":5212,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/2306\/revisions\/5212"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/media\/2309"}],"wp:attachment":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/media?parent=2306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/categories?post=2306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/tags?post=2306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}