{"id":544,"date":"2013-02-04T21:35:20","date_gmt":"2013-02-04T20:35:20","guid":{"rendered":"http:\/\/blog.guiguiabloc.fr\/?p=544"},"modified":"2013-02-04T21:35:20","modified_gmt":"2013-02-04T20:35:20","slug":"haute-disponibilite-et-load-balancing-par-cascade-de-ns","status":"publish","type":"post","link":"http:\/\/blog.guiguiabloc.fr\/index.php\/2013\/02\/04\/haute-disponibilite-et-load-balancing-par-cascade-de-ns\/","title":{"rendered":"Haute-disponibilit\u00e9 et Load-Balancing par Cascade de NS"},"content":{"rendered":"<p style=\"text-align: center;\"><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/indestructible.jpg\"><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-1415\" title=\"indestructible\" src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/indestructible-193x300.jpg\" alt=\"\u00a9Disney\/Pixar\" width=\"193\" height=\"300\" srcset=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/indestructible-193x300.jpg 193w, http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/indestructible.jpg 225w\" sizes=\"(max-width: 193px) 100vw, 193px\" \/><\/a><\/p>\n<p>\u00a0Un retour aux premiers amours de ce blog, avec, pour changer, une suite de billets syst\u00e8me et r\u00e9seau.<\/p>\n<p>Cette s\u00e9rie est issue d&rsquo;une petite discussion que j&rsquo;ai eu avec mon ami Horacio, du blog <a title=\"http:\/\/www.lostinbrittany.org\/blog\/\" href=\"http:\/\/www.lostinbrittany.org\/blog\/\" target=\"_blank\">LostinBrittany<\/a>, durant un projet technique professionnel commun.<br \/>\nPlut\u00f4t que de garder pour moi mes r\u00e9flexions, autant vous les faire partager \ud83d\ude42<\/p>\n<p>Cette discussion concerne surtout le prochain billet de ce blog, mais avant de l&rsquo;aborder, il fallait poser les bases d&rsquo;une certaine architecture et c&rsquo;est ce que nous allons tout d&rsquo;abord voir aujourd&rsquo;hui.<\/p>\n<p>Je vais vous parler d&rsquo;une technique qui para\u00eet bien triviale mais \u00e9tonnamment efficace et largement employ\u00e9e dans les architectures disposant de 2 branches d&rsquo;acc\u00e8s Internet.<\/p>\n<p>Apr\u00e8s tout, dans votre soucis constant de disposer d&rsquo;une architecture hautement disponible et partant du sacro-saint adage \u00ab\u00a0on ne met pas les oeufs dans le m\u00eame panier\u00a0\u00bb, vous avez d\u00e9cid\u00e9 de confier l&rsquo;acc\u00e8s internet de votre infrastructure \u00e0 deux op\u00e9rateurs diff\u00e9rents (par exemple, si\u00a0 &gt; 2, cela marche aussi&#8230;)<\/p>\n<p>Bien \u00e9videmment, cela peut aussi \u00eatre l&rsquo;h\u00e9bergement de vos serveurs d\u00e9di\u00e9s chez deux entit\u00e9s diff\u00e9rentes, ou encore, plus simplement, des serveurs d\u00e9di\u00e9s dans 2 datacenters diff\u00e9rents, ou tout b\u00eatement, de 2 serveurs d\u00e9di\u00e9s devant lesquelles vous n&rsquo;avez pas de load-balancer&#8230;<\/p>\n<p>Quoi qu&rsquo;il en soit, la multiplication des points d&rsquo;entr\u00e9es \u00ab\u00a0Internet\u00a0\u00bb de votre service sur plusieurs chemins diff\u00e9rents, vous donne, d\u00e9j\u00e0, une meilleure s\u00e9r\u00e9nit\u00e9 de sa disponibilit\u00e9 envers le \u00ab\u00a0monde\u00a0\u00bb.<\/p>\n<p>L&rsquo;inconv\u00e9nient de ce choix est qu&rsquo;il est difficile de positionner un Load-Balancer devant vos serveurs pour r\u00e9partir la charge ou tout simplement de renvoyer tout le trafic sur le serveur \u00ab\u00a0vivant\u00a0\u00bb quand l&rsquo;autre est tomb\u00e9.<\/p>\n<p>On ramenant le concept \u00e0 deux serveurs web (que je vais utiliser pour un exemple plus \u00ab\u00a0accessible\u00a0\u00bb ), nous allons voir comment utiliser le service DNS pour aller sur l&rsquo;un ou l&rsquo;autre des serveurs et pouvoir basculer le trafic sur l&rsquo;un des deux en cas de panne d&rsquo;un acc\u00e8s (ou du d\u00e9c\u00e8s de l&rsquo;un des serveurs Web).<\/p>\n<p>Dans un vision tr\u00e8s habituelle des choses, que l&rsquo;on rencontre fr\u00e9quemment sur les architectures expos\u00e9es par les sysadmins, la technique souvent utilis\u00e9e est le \u00ab\u00a0<a title=\"http:\/\/fr.wikipedia.org\/wiki\/DNS_round-robin\" href=\"http:\/\/fr.wikipedia.org\/wiki\/DNS_round-robin\" target=\"_blank\">Round Robin DNS<\/a>\u00ab\u00a0.<\/p>\n<p>Je vous rassure tout de suite, rien \u00e0 voir avec des probl\u00e8mes d&rsquo;ob\u00e9sit\u00e9 <a title=\"http:\/\/fr.wikipedia.org\/wiki\/Robin_des_Bois\" href=\"http:\/\/fr.wikipedia.org\/wiki\/Robin_des_Bois\" target=\"_blank\">d&rsquo;un quelconque d\u00e9fenseur de la f\u00f4ret de Sherwood<\/a>, mais d&rsquo;une bidouille d&rsquo;un enregistrement dns.<\/p>\n<p>En effet, pour un enregistrement de type A (un enregistrement DNS sp\u00e9cifiant un nom = une adresse IP\u00a0 pour faire simple), on peut donner 2 entr\u00e9es pour le m\u00eame nom.<\/p>\n<p>Exemple :<\/p>\n<pre lang=\"text\">blog.guiguiabloc.fr\u00a0 IN A 10.10.10.10\r\nblog.guiguiabloc.fr\u00a0 IN A 10.20.20.20<\/pre>\n<p>Les plus pointus allant m\u00eame jusqu&rsquo;\u00e0 modifier l&rsquo;entr\u00e9e TTL pour peaufiner.<\/p>\n<p>R\u00e9sultat, alternativement, les requ\u00eates sont envoy\u00e9es sur 10.10.10.10 ou sur 10.20.20.20.<\/p>\n<p>Le gros inconv\u00e9nient de cette technique est que les requ\u00eates iront toujours sur l&rsquo;un ou l&rsquo;autre, m\u00eame si l&rsquo;un des deux est mort&#8230; Un acc\u00e8s sur 2 n&rsquo;aura donc pas de r\u00e9ponse&#8230; G\u00eanant.<br \/>\nC&rsquo;est donc une technique \u00ab\u00a0a pas cher\u00a0\u00bb de load-balancing, mais nullement une solution de haute-disponibilit\u00e9 (ou de Fail-Over).<\/p>\n<p>Alors comment utiliser les DNS pour faire et du load-balancing et du fail-over ?<br \/>\nLa r\u00e9ponse s&rsquo;appelle du \u00ab\u00a0Cascading NS\u00a0\u00bb (ou cascade de serveurs NS).<\/p>\n<p>Si une entr\u00e9e DNS de type A fait la correspondance entre un nom d&rsquo;h\u00f4te et une adresse IP, un enregistrement de type NS vous donne le serveur DNS ayant autorit\u00e9 sur le domaine (et qui donc sera \u00e0 m\u00eame de vous donner l&rsquo;adresse IP (ou type A) du nom d&rsquo;h\u00f4te que vous recherchez ou de vous indiquez \u00e0 qui le demander).<\/p>\n<p>Un dessin valant un long discours, regardons un peu le fonctionnement du cascading NS :<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/cascadingNS.jpg\" target=\"_blank\"><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-1447\" title=\"cascadingNS\" src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/cascadingNS-300x252.jpg\" alt=\"\" width=\"300\" height=\"252\" srcset=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/cascadingNS-300x252.jpg 300w, http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/cascadingNS.jpg 825w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Que se passe t-il quand le client demande \u00ab\u00a0blog.guiguiabloc.fr\u00a0\u00bb ?<\/p>\n<p>&#8211; Les autorit\u00e9s TLD r\u00e9pondent que le domaine \u00ab\u00a0guiguiabloc.fr\u00a0\u00bb est g\u00e9r\u00e9 par les NS de tel registrar (OVH, GANDI, etc&#8230;) (je simplifie hein :p)<\/p>\n<p>&#8211; Les serveurs DNS du Registrar r\u00e9pondent qu&rsquo;il faut interroger deux autres NS, NS1.mondns.fr et NS2.mondns.fr qui sont autorit\u00e9 de zone pour le domaine \u00ab\u00a0guiguiabloc.fr\u00a0\u00bb (on arrive la sur VOS serveurs DNS) (1)<\/p>\n<p>&#8211; Les serveurs DNS, ns1.mondns.fr et ns2.mondns.fr r\u00e9pondent qu&rsquo;ils g\u00e8rent bien le domaine \u00ab\u00a0guiguiabloc.fr\u00a0\u00bb mais le sous-domaine \u00ab\u00a0blog.guiguiabloc.fr\u00a0\u00bb est g\u00e9r\u00e9 par deux autres DNS, web-1.mondns.fr et web-2.mondns.fr (qui sont vos serveurs Web sur lesquelles tournent un serveur DNS ne s&rsquo;occupant que de cette zone) (2)<\/p>\n<p>&#8211; Le client interroge alors l&rsquo;un des NS (web-1.mondns.fr ou web-2.mondns.fr) pour connaitre l&rsquo;entr\u00e9e A de blog.guiguiabloc.fr (3)<\/p>\n<p>&#8211; Si c&rsquo;est web-1.mondns.fr qui est interrog\u00e9, il r\u00e9pondra 10.10.10.10, si c&rsquo;est web-2.mondns.fr, il r\u00e9pondra 10.20.20.20, avec une dur\u00e9e de vie d&rsquo;1 minute de la correspondance (60 secondes plus tard, si le client doit demander de nouveau blog.guiguiabloc.fr, il devra demander de nouveau l&rsquo;adresse IP (lors d&rsquo;une nouvelle session par exemple).<\/p>\n<p>Voila ce que donnera une demande de r\u00e9solution :<\/p>\n<pre lang=\"text\">\r\nguigui@Clara:~$ dig blog.guiguiabloc.fr\r\n\r\n; <<>> DiG 9.7.3 <<>> blog.guiguiabloc.fr\r\n;; global options: +cmd\r\n;; Got answer:\r\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41551\r\n;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1\r\n\r\n;; QUESTION SECTION:\r\n;blog.guiguiabloc.fr.              IN      A\r\n\r\n;; ANSWER SECTION:\r\nblog.guiguiabloc.fr.       49      IN      A       10.10.10.10\r\n\r\n;; AUTHORITY SECTION:\r\nblog.guiguiabloc.fr.       49      IN      NS      web-1.mondns.fr.\r\n\r\n;; ADDITIONAL SECTION:\r\nweb-1.mondns.fr.         3922    IN      A       10.10.10.10\r\n<\/pre>\n<p>Et 60 secondes plus tard :<\/p>\n<pre lang=\"text\">\r\n...\r\n;; ANSWER SECTION:\r\nblog.guiguiabloc.fr.       60      IN      A       10.20.20.20\r\n\r\n;; AUTHORITY SECTION:\r\nblog.guiguiabloc.fr.       60      IN      NS      web-2.mondns.fr.\r\n\r\n;; ADDITIONAL SECTION:\r\nweb-2.mondns.fr.         5006    IN      A       10.20.20.20\r\n<\/pre>\n<p>Vous avez compris que le site web blog.guiguiabloc.fr tourne sur les deux serveurs web avec chacun une IP diff\u00e9rente.<\/p>\n<p>A l'inverse du Round-Robin DNS, le client interroge les NS al\u00e9atoirement et prend la r\u00e9ponse du plus rapide (et donc \u00e9galement du plus proche g\u00e9ographiquement).<br \/>\nRassurez vous, toute cette s\u00e9quence ne prend que quelques millisecondes.<\/p>\n<p>Mais que se passe-t-il quand web-1.mondns.fr tombe (et donc ne peut plus r\u00e9pondre).<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/cascadingNS-Fail.jpg\" target=\"_blank\"><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-1448\" title=\"cascadingNS-Fail\" src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/cascadingNS-Fail-300x282.jpg\" alt=\"\" width=\"300\" height=\"282\" srcset=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/cascadingNS-Fail-300x282.jpg 300w, http:\/\/blog.guiguiabloc.fr\/wp-content\/2013\/02\/cascadingNS-Fail.jpg 766w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>\u00a0Le d\u00e9but est identique mais quand le client demande \"blog.guiguiabloc.fr\"\u00a0 aux serveurs NS de la sous-zone, seul le \"NS\" 2 r\u00e9pondra.<\/p>\n<p>Vous avez la un fail-over imm\u00e9diat (tout au moins a 60 secondes apr\u00e8s le crash) puisque NS1 ne r\u00e9pondra jamais.<br \/>\nLa technique est aussi tr\u00e8s efficace quand vous souhaitez retirer un des serveurs web de votre pool, il vous suffit d'arreter le serveur DNS dessus. Il ne r\u00e9pondra plus aux requ\u00e8tes NS et donc ne prendra pas de trafic \ud83d\ude00<\/p>\n<p>La configuration des DNS est des plus basiques pour cela, il faut bien \u00e9videmment que les serveurs DNS de web-1.mondns.fr et web-2.mondns.fr soit chacun master (ma\u00eetre) (puisqu'ils donnent une entr\u00e9e de type A diff\u00e9rente).<\/p>\n<p>Pr\u00e9-requis, vous avez bien entendu d\u00e9fini une entr\u00e9e de type A pour web-1 et web-2 dans la zone \"mondns.fr\".<\/p>\n<p>Sur vos serveurs DNS principaux (ns1.mondns.fr et ns2.mondns.fr), pour la zone \"guiguiabloc.fr\" (bien s\u00fbr remplacez tout cela par vos domaines\/IP \ud83d\ude09 )<\/p>\n<pre lang=\"text\">$TTL 600\r\n@\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IN SOA\u00a0 ns1.mondns.fr. noc.mondns.fr. (\r\n2013020400 ; serial\r\n3600\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; refresh\r\n3600\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; retry\r\n3600000\u00a0\u00a0\u00a0 ; expire\r\n3600\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; minimum\r\n)\r\n\r\nIN NS ns1.mondns.fr.\r\nIN NS ns2.mondns.fr.\r\nblog \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IN NS web-1.mondns.fr.\r\n                        IN NS web-2.mondns.fr.<\/pre>\n<p>Sur web-1, pour la zone \"blog.guiguiabloc.fr\" :<\/p>\n<pre lang=\"text\">$ORIGIN .\r\n$TTL 60\r\nblog.guiguiabloc.fr\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IN SOA\u00a0 ns1.mondns.fr. noc.mondns.fr. (\r\n2013020400 ; serial\r\n3600\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; refresh\r\n3600\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; retry\r\n3600000\u00a0\u00a0\u00a0 ; expire\r\n3600\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; minimum\r\n)\r\n\r\nIN NS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 web-1.mondns.fr.\r\nIN A\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 10.10.10.10<\/pre>\n<p>Sur web-2, pour la zone \"blog.guiguiabloc.fr\"<\/p>\n<pre lang=\"text\">$ORIGIN .\r\n$TTL 60\r\nblog.guiguiabloc.fr\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IN SOA\u00a0 ns1.mondns.fr. noc.mondns.fr. (\r\n2013020400 ; serial\r\n3600\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; refresh\r\n3600\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; retry\r\n3600000\u00a0\u00a0\u00a0 ; expire\r\n3600\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; minimum\r\n)\r\n\r\nIN NS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 web-2.mondns.fr.\r\nIN A\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 10.20.20.20<\/pre>\n<p>Bien entendu, je vous laisse adapter \u00e0 votre configuration, c'est juste un exemple \ud83d\ude42<\/p>\n<p>Alors, elle n'est pas sympa cette technique ? \ud83d\ude42<\/p>\n<p><em>\"oui,oui. Tr\u00e8s sympa oh Grand Guiguiabloc, mais y'a quand m\u00eame un probl\u00e8me !\"<br \/>\n<\/em>\"Ah ? Je t'\u00e9coute jeune Padawan\"<br \/>\n<em>\"si le service web de web-1 plante par exemple, mais pas le serveur, mon DNS il r\u00e9pond toujours !!! et les visiteurs ils arrivent toujours sur mon serveur !! Ca craint !\"<br \/>\n<\/em>\"Je m'attendais \u00e0 cette remarque, jeune youglin, et comme je suis dans une ann\u00e9e de grande bont\u00e9, je vais te donner une solution pour cela\"<\/p>\n<p><em>\"oh merci Grand Guiguiabloc !!!\" (flap-flap-flap)<\/em><\/p>\n<p>La solution pour couper votre DNS local sur votre serveur web (ou votre reverse-proxy hein) en cas de crash du service http s'appelle :<br \/>\n<a title=\"http:\/\/mmonit.com\/monit\/\" href=\"http:\/\/mmonit.com\/monit\/\" target=\"_blank\">MONIT<\/a>.<\/p>\n<p>MONIT est un utilitaire qui surveille vos process (mais \u00e9galement vos r\u00e9pertoires, fichiers, programmes etc..) et execute des actions en cas de soucis.<\/p>\n<p>L'action la plus courante est d'avertir l'admin (forc\u00e9ment :p) mais \u00e9galement par exemple, de tenter de relancer le programme.<\/p>\n<p>Exemple pour surveiller le process Nginx<\/p>\n<pre>check process nginx with pidfile \/var\/run\/nginx.pid\r\n  start program = \"\/etc\/init.d\/nginx start\"\r\n  stop program  = \"\/etc\/init.d\/nginx stop\"\r\n  group www-data<\/pre>\n<p>Vous trouverez des exemples sur la page wiki du projet :<\/p>\n<p><a title=\"http:\/\/mmonit.com\/wiki\/Monit\/ConfigurationExamples\" href=\"http:\/\/mmonit.com\/wiki\/Monit\/ConfigurationExamples\" target=\"_blank\">http:\/\/mmonit.com\/wiki\/Monit\/ConfigurationExamples<\/a><\/p>\n<p>En cas de non r\u00e9ponse du process, vous pouvez appeler un script par \"exec\" 'de type \"\/etc\/init.d\/bind9 stop\" \ud83d\ude09<\/p>\n<p>Plus simple encore, un simple script bash appeler en crontab :<\/p>\n<pre lang=\"bash\">#!\/bin\/bash\r\n#pre-requis blog.guiguiabloc.fr a une entr\u00e9e dans\r\n#le fichier \/etc\/hosts avec son ip locale\r\n#pour \u00e9viter d'interroger les DNS\r\nTESTING=`curl -sL -w \"%{http_code} %{url_effective}\\\\n\" \"blog.guiguiabloc.fr\" -o \/dev\/null`\r\nif test \"$TESTING\" != \"200 http:\/\/blog.guiguiabloc.fr\"\r\nthen\r\necho \"CA CHIE\"\r\nelse\r\necho \"ok\"\r\nfi<\/pre>\n<p>Et donc arreter le service DNS si \"CA CA CHIE\" \ud83d\ude00<\/p>\n<p>En esp\u00e9rant que cela vous donne des id\u00e9es<\/p>\n<p>Amusez-vous bien \ud83d\ude00<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a0Un retour aux premiers amours de ce blog, avec, pour changer, une suite de billets syst\u00e8me et r\u00e9seau. Cette s\u00e9rie est issue d&rsquo;une petite discussion que j&rsquo;ai eu avec mon ami Horacio, du blog LostinBrittany, durant un projet technique professionnel &hellip; <a href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2013\/02\/04\/haute-disponibilite-et-load-balancing-par-cascade-de-ns\/\">Read More <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[27,7],"tags":[197,141],"_links":{"self":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/544"}],"collection":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/comments?post=544"}],"version-history":[{"count":60,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/544\/revisions"}],"predecessor-version":[{"id":1465,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/544\/revisions\/1465"}],"wp:attachment":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/media?parent=544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/categories?post=544"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/tags?post=544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}