{"id":1399,"date":"2014-09-16T10:44:00","date_gmt":"2014-09-16T08:44:00","guid":{"rendered":"http:\/\/vm.piszki.pl\/?p=1399"},"modified":"2014-09-16T10:45:18","modified_gmt":"2014-09-16T08:45:18","slug":"horizon-view-6-0-balansowanie-ruchem-za-pomoca-big-ip-f5-bez-uzycia-iapp","status":"publish","type":"post","link":"https:\/\/vm.piszki.pl\/?p=1399","title":{"rendered":"Horizon View 6.0: balansowanie ruchem za pomoc\u0105 BIG-IP F5 (bez u\u017cycia iApp)"},"content":{"rendered":"<p align=\"justify\">Przy tak postawionym tytule, nale\u017cy od razu odpowiedzie\u0107 na pytanie, czemu mamy balansowa\u0107 ruchem bez u\u017cycia tak fajnego rozwi\u0105zania jakim jest iApp (for View)? Odpowied\u017a jest prosta, u\u017cywaj\u0105c iApp, nie zrobisz niczego, czego nie przewidzieli jej tw\u00f3rcy (na przyk\u0142ad, nie przewidzieli u\u017cywania polityk bezpiecze\u0144stwa oraz nie ma obs\u0142ugi protoko\u0142u BLAST). Podstawow\u0105 zalet\u0105 iApp jest szybko\u015b\u0107 wdro\u017cenia, kilka klikni\u0119\u0107 i gotowe. R\u0119cznie trwa to troch\u0119 d\u0142u\u017cej ale efekt jest ten sam a mo\u017cliwo\u015bci du\u017co wi\u0119ksze. W opisanej przeze mnie konfiguracji, u\u017cy\u0142em balansowania ruchem na poziomie serwer\u00f3w po\u0142\u0105cze\u0144 z pomini\u0119ciem serwer\u00f3w bezpiecze\u0144stwa. Uwa\u017cam, \u017ce balansowanie serwerami bezpiecze\u0144stwa nie ma sensu, w ko\u0144cu F5 ma je zast\u0105pi\u0107! Oczywi\u015bcie w naszej sieci istniej\u0105 takie serwery, s\u0105 one tradycyjn\u0105 furtk\u0105 bezpiecze\u0144stwa dla u\u017cytkownik\u00f3w uprzywilejowanych (VIP), czyli g\u0142\u00f3wnie administrator\u00f3w. To samo dotyczy sieci wewn\u0119trznej, mo\u017cna jednocze\u015bnie \u0142\u0105czy\u0107 si\u0119 poprzez F5 (User) lub bezpo\u015brednio na dany serwer po\u0142\u0105cze\u0144 (VIP). Taka konfiguracja daje nam du\u017cy stopie\u0144 elastyczno\u015bci i odporno\u015bci na potencjalne awarie oraz spore mo\u017cliwo\u015bci dla Administrator\u00f3w. <\/p>\n<p align=\"justify\"><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/Przechwytywanie.png\"><img loading=\"lazy\" decoding=\"async\" title=\"Przechwytywanie\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"Przechwytywanie\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/Przechwytywanie_thumb.png\" width=\"435\" height=\"145\"><\/a><\/p>\n<p align=\"justify\">\n<p><!--more--><\/p>\n<p align=\"justify\">Zgodnie z tym co wida\u0107 na rysunku, na wst\u0119pie musimy spe\u0142ni\u0107 kilka warunk\u00f3w. Na zewn\u0119trznym firewallu nale\u017cy otworzy\u0107 i przekierowa\u0107 na odpowiedni adres w F5 (w moim przypadku 172.18.31.130) nast\u0119puj\u0105ce porty, TCP: 80, 443, 8443, 4127, UDP:4127. Stworzy\u0107 na zewn\u0119trznym serwerze DNS rekord (view.pulab.pl) kt\u00f3ry w sieci LAN b\u0119dzie rozwi\u0105zywa\u0142 si\u0119 lokalnym adresem F5 (NAT). Sama konfiguracja Horizon View nie odbiega od standardu, w naszym przypadku po\u0142\u0105czenie do maszyn jest szyfrowane, istnieje mo\u017cliwo\u015b\u0107 pod\u0142\u0105czenia si\u0119 poprzez BLAST. Ze wzgl\u0119du na obci\u0105\u017cenia sieci, serwery po\u0142\u0105cze\u0144 nie funkcjonuj\u0105 jako proxy dla protoko\u0142u PCoIP.<\/p>\n<p align=\"justify\">Konfiguracja \u201cConnection Server\u201d:<\/p>\n<p align=\"justify\"><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv2.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv2\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv2\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv2_thumb.png\" width=\"453\" height=\"264\"><\/a><\/p>\n<p>Konfiguracja \u201cSecurity Server\u201d:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv3.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv3\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv3\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv3_thumb.png\" width=\"432\" height=\"324\"><\/a><\/p>\n<p align=\"justify\">BIG-IP F5 mo\u017cna wykorzysta\u0107 do terminowania po\u0142\u0105cze\u0144 SSL (offload). Aby taki serwer po\u0142\u0105cze\u0144 uruchomi\u0142 si\u0119 na porcie 80, nale\u017cy w katalogu C:\\Program Files\\VMware\\VMware View\\Server\\sslgateway\\conf stworzy\u0107 plik o nazwie locked.properties z zawarto\u015bci\u0105 serverProtocol=http (i zrestartowa\u0107 us\u0142ug\u0119). Dodatkow\u0105 zalet\u0105 takiej konfiguracji jest te\u017c to, \u017ce nie trzeba tworzy\u0107 wirtualnego serwera (na F5) na porcie 80 w celu przekierowania ruchu. Port 80 zostanie przekierowany na 443 przez serwer po\u0142\u0105cze\u0144 (przy po\u0142\u0105czeniu przez przegl\u0105dark\u0119). Przechodzimy do F5, na pocz\u0105tku stworzymy wszystkie potrzebne profile. Zaczynamy od Client-SSL, w naszym przypadku mamy certyfikat typu Wildcard i jeden profil kt\u00f3ry u\u017cywamy przy wszystkich wirtualnych serwerach (PULAB):<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv6.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv6\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv6\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv6_thumb.png\" width=\"374\" height=\"248\"><\/a><\/p>\n<p align=\"justify\">W opisywanej konfiguracji, adres view.pulab.pl (dost\u0119pny przez F5 z zewn\u0105trz i z wewn\u0105trz) b\u0119dzie pos\u0142ugiwa\u0142 si\u0119 ww. certyfikatem wildcard, natomiast wszystkie serwery po\u0142\u0105cze\u0144 b\u0119d\u0105 mia\u0142y w\u0142asne certyfikaty wystawione przez <a href=\"https:\/\/vm.piszki.pl\/przygotowanie-certyfikatu-ssl-dla-view-connection-server\/\">lokalne<\/a> CA. W kolejnym kroku tworzymy profil utrzymania po\u0142\u0105cze\u0144 (persistence):<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv5.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv5\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv5\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv5_thumb.png\" width=\"370\" height=\"458\"><\/a><\/p>\n<p align=\"justify\">Tworzymy profil HTTP dla po\u0142\u0105cze\u0144 na porcie 443:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv4.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv4\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv4\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv4_thumb.png\" width=\"371\" height=\"700\"><\/a><\/p>\n<p align=\"justify\">Tworzymy monitor dla \u201cConnection Server\u201d (zgodnie z dokumentacj\u0105 Horizon View):<a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv7.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv7\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv7\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv7_thumb.png\" width=\"369\" height=\"410\"><\/a><\/p>\n<p align=\"justify\">Teraz tworzymy pule serwer\u00f3w, zaczynamy od HTTPS, port 443, health monitor jak wy\u017cej:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv91.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv9\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv9\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv9_thumb1.png\" width=\"373\" height=\"276\"><\/a><\/p>\n<p align=\"justify\">Pula HTTP, potrzebna do wykonania offloadu SSL na F5, health monitor jak wy\u017cej:<\/p>\n<p align=\"justify\"><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv8.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv8\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv8\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv8_thumb.png\" width=\"369\" height=\"312\"><\/a><\/p>\n<p align=\"justify\">Pula PCoIP, port 4172, health monitor \u201cgateway_icmp\u201d (nale\u017cy na firewallu wszystkich \u201cConnection Server\u201d doda\u0107 regu\u0142\u0119 ICMP\/PING):<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv101.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv10\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv10\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv10_thumb1.png\" width=\"370\" height=\"314\"><\/a><\/p>\n<p align=\"justify\">Pula BLAST, port 8443, monitor \u201cgateway_icmp\u201d:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv111.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv11\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv11\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv11_thumb1.png\" width=\"371\" height=\"313\"><\/a><\/p>\n<p align=\"justify\">W kolejnym kroku przechodzimy do stworzenia wirtualnych serwer\u00f3w, zaczynamy od Horizon-View-HTTPS (SNAT-&gt;AutoMap). Jak wida\u0107 na rysunkach, nie u\u017cywamy profilu SSL dla serwera a pula serwer\u00f3w to HTTP, przy takiej konfiguracji wykonywany jest offloading SSL na F5:<\/p>\n<p align=\"justify\"><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv22.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv22\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv22\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv22_thumb.png\" width=\"376\" height=\"635\"><\/a><\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv20.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv20\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv20\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv20_thumb.png\" width=\"374\" height=\"176\"><\/a><\/p>\n<p align=\"justify\">Nast\u0119pnie tworzymy wirtualny serwer odpowiedzialny za obs\u0142ug\u0119 BLAST\/HTML (SNAT-&gt;AutoMap), w tym wypadku po\u0142\u0105czenie do serwera jest szyfrowane(offload SSL nie jest wspierany przy BLAST):<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv141.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv14\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv14\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv14_thumb1.png\" width=\"379\" height=\"598\"><\/a><\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv171.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv17\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv17\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv17_thumb2.png\" width=\"379\" height=\"177\"><\/a><\/p>\n<p align=\"justify\">W ostatnim kroku tworzymy serwery wirtualne do obs\u0142ugi protoko\u0142u PCoIP (UDP\/TCP):<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv161.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv16\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv16\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv16_thumb1.png\" width=\"385\" height=\"492\"><\/a><\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv181.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv18\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv18\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv18_thumb1.png\" width=\"384\" height=\"487\"><\/a><\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv191.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv19\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv19\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv19_thumb1.png\" width=\"377\" height=\"176\"><\/a><\/p>\n<p align=\"justify\">Mapa naszych wirtualnych serwer\u00f3w przedstawia si\u0119 nast\u0119puj\u0105co:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv15.png\"><img loading=\"lazy\" decoding=\"async\" title=\"fv1\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto\" border=\"0\" alt=\"fv1\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/09\/fv1_thumb1.png\" width=\"202\" height=\"457\"><\/a><\/p>\n<p align=\"justify\">Taka konfiguracja dzia\u0142a bardzo sprawnie i wydajnie. Opisane rozwi\u0105zanie w wersji pierwotnej zosta\u0142o przetestowane w BIG-IP F5 VE, jednak ze wzgl\u0119du na ograniczenia przepustowo\u015bci, wersja F5 VE nadaje si\u0119 jedynie do ma\u0142ych \u015brodowisk testowych. Pozdrawiam i \u017cycz\u0119 udanych test\u00f3w.<\/p>\n<div style='text-align:left' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>Przy tak postawionym tytule, nale\u017cy od razu odpowiedzie\u0107 na pytanie, czemu mamy balansowa\u0107 ruchem bez u\u017cycia tak fajnego rozwi\u0105zania jakim jest iApp (for View)? Odpowied\u017a jest prosta, u\u017cywaj\u0105c iApp, nie zrobisz niczego, czego nie przewidzieli jej tw\u00f3rcy (na przyk\u0142ad, nie &hellip; <a href=\"https:\/\/vm.piszki.pl\/?p=1399\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1525,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[45],"tags":[33,34,4,64],"class_list":["post-1399","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-poradniki","tag-big-ip","tag-f5","tag-horizon-view","tag-iapp"],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"_links":{"self":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/1399"}],"collection":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1399"}],"version-history":[{"count":3,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/1399\/revisions"}],"predecessor-version":[{"id":1428,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/1399\/revisions\/1428"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/media\/1525"}],"wp:attachment":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}