{"id":1651,"date":"2015-01-07T09:24:04","date_gmt":"2015-01-07T08:24:04","guid":{"rendered":"http:\/\/vm.piszki.pl\/?p=1651"},"modified":"2015-03-07T21:55:46","modified_gmt":"2015-03-07T20:55:46","slug":"vcloud-director-5-5-balansowanie-ruchem-za-pomoca-big-ip-f5","status":"publish","type":"post","link":"https:\/\/vm.piszki.pl\/?p=1651","title":{"rendered":"vCloud Director 5.5: balansowanie ruchem za pomoc\u0105 BIG-IP F5"},"content":{"rendered":"<p align=\"justify\">Ten <a href=\"https:\/\/www.edge-cloud.net\/2013\/05\/configuring-f5-big-ip-with-vcd\/\">temat<\/a> by\u0142 <a href=\"http:\/\/www.hypervizor.com\/2011\/07\/publishing-the-vcloud-director-portal-on-the-internet\/\">poruszany<\/a> w <a href=\"http:\/\/www.chriscolotti.us\/vmware\/load-balancing-considerations-for-vcloud\/\">Internecie<\/a> <a href=\"http:\/\/www.yellow-bricks.com\/2012\/02\/16\/using-f5-to-balance-load-between-your-vcloud-director-cells\/\">wielokrotnie<\/a>, ale zawsze warto przypomnie\u0107 i od\u015bwie\u017cy\u0107 wiedz\u0119. Szczeg\u00f3lnie, \u017ce nowe wersje oprogramowania pojawiaj\u0105 si\u0119 co chwila, cz\u0119sto r\u00f3\u017cni\u0105c si\u0119 od siebie do\u015b\u0107 mocno. Poza tym, to \u017ce VMware ostatnio traktuje vCloud Director z lekk\u0105 niech\u0119ci\u0105, nie oznacza, \u017ce wszyscy nagle przenie\u015bli si\u0119 na vCAC. Dodatkowo skupi\u0119 tutaj si\u0119 do\u015b\u0107 mocno na balansowaniu ruchem przy dost\u0119pie do wirtualnych maszyn poprzez Console Proxy (vmrc). Na ten temat trudno jest znale\u017a\u0107 wyczerpuj\u0105ce informacje.<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd16.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd16\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd16_thumb.png\" alt=\"vcd16\" width=\"179\" height=\"176\" border=\"0\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<p align=\"justify\">W pierwszym kroku, je\u015bli jeszcze tego nie mamy, musimy wygenerowa\u0107 kolejnego noda (Cell) vCloud Director. Wszystkie nody musz\u0105 wsp\u00f3\u0142dzieli\u0107, poprzez NFS, katalog \u201ctransfer\u201d (\/opt\/vmware\/vcloud-director\/data\/transfer), dlatego nale\u017cy si\u0119 zastanowi\u0107 sk\u0105d go zamontujemy. Mo\u017ce to by\u0107 zewn\u0119trzny serwer NAS lub katalog wyeksportowany z pierwszego noda (tak jest w moim przypadku). Osobi\u015bcie u\u017cywam systemu CentOS 6.4 jako no\u015bnika dla vCloud Director (zamiast Red Hat), u\u0142atwia to do\u015b\u0107 mocno administracj\u0119. Przygotowanie kolejnego noda jest bardzo proste, wystarczy sklonowa\u0107 pierwszego! Oczywi\u015bcie za pierwszym razem uruchamiamy go w trybie izolacji sieciowej, wy\u0142\u0105czamy na nim vCD (service vmware-vcd stop), rekonfigurujemy karty sieciowe na nowe adresy IP i podnosimy interfejsy. Na pierwszym nodzie (nasz CentOS), je\u015bli jeszcze nie mamy, instalujemy i uruchamiamy serwer NFS:<\/p>\n<p>yum install nfs-utils nfs-utils-lib<br \/>\nchkconfig nfs on<br \/>\nservice rpcbind start<br \/>\nservice nfs start<\/p>\n<p>Do pliku \/etc\/exports dopisujemy lini\u0119:<\/p>\n<p>\/opt\/vmware\/vcloud-director\/data\/transfer\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 172.18.60.128 (rw,sync,no_root_squash,no_subtree_check)<\/p>\n<p>I wydajemy polecenie: exportfs \u2013a<\/p>\n<p align=\"justify\">W tym momencie mamy wyeksportowany po NFS katalog \u201ctransfer\u201d. Kopiujemy do niego plik \/opt\/vmware\/vcloud-director\/etc\/responses.properties (zawiera on podstawow\u0105 konfiguracj\u0119 kt\u00f3ra zostanie u\u017cyta przez kolejnego noda). Teraz przechodzimy do przygotowania certyfikat\u00f3w SSL dla obydwu nod\u00f3w. Jest to bardzo wa\u017cny krok i musi by\u0107 wykonany poprawnie. Dlaczego modyfikacje musimy wprowadzi\u0107 na obydwu nodach? Poniewa\u017c zgodnie z tym <a href=\"http:\/\/kb.vmware.com\/selfservice\/microsites\/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=2069355\">KB<\/a>, je\u015bli chcemy balansowa\u0107 ruchem w po\u0142\u0105czeniach VMRC, to wszystkie nody powinny mie\u0107 wsp\u00f3lny certyfikat SSL dla Console Proxy. Nazwa hosta w certyfikacie musi by\u0107 zgodna z wpisem VCD public console proxy:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd1.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;\" title=\"vcd1\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd1_thumb.png\" alt=\"vcd1\" width=\"467\" height=\"319\" border=\"0\" \/><\/a><\/p>\n<p align=\"justify\">W innym wypadku mo\u017cemy spotka\u0107 si\u0119 z b\u0142\u0119dem \u201cException during handshake: javax.net.ssl.SSLException: Received fatal alert: certificate_unknown\u201d. Jak zawsze najlepszym rozwi\u0105zaniem jest posiadanie certyfikatu typu Wildcard (w formacie pkcs12). Spreparowanie pliku certificates.ks na podstawie pkcs12 (pfx) jest bardzo proste:<\/p>\n<p>Przygotowanie pustego keystore typu JCEKS:<\/p>\n<p><span style=\"font-size: small;\">keytool -keystore certificates.ks -storetype JCEKS -storepass xxxxxxx -genkey -keyalg RSA -keysize 2048 -alias http<\/span><\/p>\n<p><span style=\"font-size: small;\">keytool -delete -alias http -keystore certificates.ks<\/span><\/p>\n<p>Importujemy certyfikaty CA i Intermediate (tyle ile <a href=\"https:\/\/vm.piszki.pl\/horizon-workspace-manualna-analiza-%c5%82a%c5%84cucha-certyfikat%c3%b3w\/\">trzeba<\/a>, nazwy alias\u00f3w mog\u0105 by\u0107 np. intermediate1, intermediate2 etc):<\/p>\n<p><span style=\"font-size: small;\">keytool -storetype JCEKS -storepass xxxxxxx -keystore certificates.ks \u2013importcert \u2013file ca1 \u2013alias root <\/span><\/p>\n<p><span style=\"font-size: small;\">keytool -storetype JCEKS -storepass xxxxxxx -keystore certificates.ks -importcert -file ca2 -alias intermediate<\/span><\/p>\n<p>Importujemy certyfikat wildcard razem z kluczem:<\/p>\n<p><span style=\"font-size: small;\">keytool -v -importkeystore -srckeystore pulab.pfx -srcstoretype PKCS12 -destkeystore certificates.ks -deststoretype JCEKS -alias http<\/span><\/p>\n<p><span style=\"font-size: small;\">keytool -v -importkeystore -srckeystore pulab.pfx -srcstoretype PKCS12 -destkeystore certificates.ks -deststoretype JCEKS \u2013alias consoleproxy<\/span><\/p>\n<p align=\"justify\">I to wszystko, po kolei, na obydwu nodach wy\u0142\u0105czamy us\u0142ug\u0119 vCloud Director (service vmware-vcd stop), usuwamy stary plik keystore i uruchamiamy \/opt\/vmware\/vcloud-director\/bin\/configure. Program sam wykryje zmian\u0119 pliku certificates.ks i zaproponuje jego zaimportowanie do konfiguracji. Po uruchomieniu obydwu nod\u00f3w (w tym nowego) powinni\u015bmy zobaczy\u0107 nast\u0119puj\u0105cy rezultat:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd2.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd2\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd2_thumb.png\" alt=\"vcd2\" width=\"449\" height=\"131\" border=\"0\" \/><\/a><\/p>\n<p align=\"justify\">W tym momencie mo\u017cemy przej\u015b\u0107 do konsoli F5. Przygotowanie odpowiedniej konfiguracji zaczniemy od stworzenia w\u0142a\u015bciwych monitor\u00f3w, jeden dla vCloud Director a drugi dla Console Proxy:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd3.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd3\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd3_thumb.png\" alt=\"vcd3\" width=\"444\" height=\"512\" border=\"0\" \/><\/a><\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd4.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd4\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd4_thumb.png\" alt=\"vcd4\" width=\"445\" height=\"367\" border=\"0\" \/><\/a><\/p>\n<p align=\"justify\">W kolejnym kroku tworzymy profil utrzymania sesji (Persistence) dla vCD, Console Proxy nie potrzebuje takiego profilu:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd5.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd5\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd5_thumb.png\" alt=\"vcd5\" width=\"432\" height=\"335\" border=\"0\" \/><\/a><\/p>\n<p align=\"justify\">Teraz tworzymy profil SSL dla vCD, w naszym wypadku u\u017cyjemy jak zwykle tego samego profilu Wildcard:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd6.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd6\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd6_thumb.png\" alt=\"vcd6\" width=\"423\" height=\"277\" border=\"0\" \/><\/a><\/p>\n<p align=\"justify\">Dodajemy kolejne Nody (na tym etapie wystarczaj\u0105cym monitorem jest ICMP):<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd7.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd7\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd7_thumb.png\" alt=\"vcd7\" width=\"422\" height=\"146\" border=\"0\" \/><\/a><\/p>\n<p align=\"justify\">Tworzymy pierwsz\u0105 pul\u0119 dla vCloud Director:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd8.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd8\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd8_thumb.png\" alt=\"vcd8\" width=\"420\" height=\"704\" border=\"0\" \/><\/a><\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd9.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd9\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd9_thumb.png\" alt=\"vcd9\" width=\"423\" height=\"199\" border=\"0\" \/><\/a><\/p>\n<p align=\"justify\">Tworzymy drug\u0105 pul\u0119 dla Console Proxy:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd10.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd10\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd10_thumb.png\" alt=\"vcd10\" width=\"422\" height=\"698\" border=\"0\" \/><\/a><\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd11.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd11\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd11_thumb.png\" alt=\"vcd11\" width=\"423\" height=\"194\" border=\"0\" \/><\/a><\/p>\n<p align=\"justify\">Na tym etapie mamy wszystko, co jest potrzebne do stworzenia Virtualnych Serwer\u00f3w. Jako pierwszy tworzymy VIP dla vCloud Director:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd12.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd12\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd12_thumb.png\" alt=\"vcd12\" width=\"423\" height=\"914\" border=\"0\" \/><\/a><\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd13.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd13\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd13_thumb.png\" alt=\"vcd13\" width=\"420\" height=\"350\" border=\"0\" \/><\/a><\/p>\n<p align=\"justify\">Jest to standardowy zestaw dla serwera WWW, u\u017cycie profilu http pozwala na u\u017cycie polityki bezpiecze\u0144stwa (ASM) w dost\u0119pie do vCloud Director. U\u017cycie profilu SSL nie jest obligatoryjne, mo\u017cemy wykona\u0107 te\u017c pe\u0142ne przekazanie sesji do nod\u00f3w (je\u015bli mamy ten sam certyfikat dla wszystkich nod\u00f3w). Je\u015bli nie u\u017cywamy synchronizacji katalog\u00f3w pomi\u0119dzy r\u00f3\u017cnymi chmurami to mo\u017cemy mie\u0107 dla ka\u017cdego noda (Cell) wygenerowany oddzielny certyfikat SSL podpisany przez lokalne CA (dotyczy tylko dost\u0119pu przez WWW). W ostatnim kroku tworzymy VIP dla Console Proxy:<\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd14.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd14\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd14_thumb.png\" alt=\"vcd14\" width=\"415\" height=\"930\" border=\"0\" \/><\/a><\/p>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd15.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;\" title=\"vcd15\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/11\/vcd15_thumb.png\" alt=\"vcd15\" width=\"416\" height=\"347\" border=\"0\" \/><\/a><\/p>\n<p align=\"justify\">W tym przypadku nie u\u017cywamy profilu http, Console Proxy nie jest zwyk\u0142\u0105 us\u0142ug\u0105 HTTPS. W zwi\u0105zku z tym nie mo\u017cemy te\u017c u\u017cy\u0107 ASM dla niej!<\/p>\n<p align=\"justify\">EDIT:<\/p>\n<p align=\"justify\">Wpis dosta\u0142 5 gwiazdek, znaczy si\u0119, kto\u015b go przeczyta\u0142, w zwi\u0105zku z tym, uzupe\u0142ni\u0119 go :-)<\/p>\n<p align=\"justify\">SSL w vCloud Director to delikatny temat, przy balansowaniu jest wiele zmiennych, opis powy\u017cej doprowadzi niestety do tego, \u017ce przestanie poprawnie dzia\u0142a\u0107 zintegrowana autentykacja SSO z vSphere. Rozwi\u0105zanie jest takie: ka\u017cdy node powinien mie\u0107 w\u0142asny, lokalny certyfikat (niezale\u017cnie od SSL-offload na F5), ale nie dotyczy to consoleproxy, na ka\u017cdym node powinien by\u0107 ten sam wildcard.<\/p>\n<p align=\"justify\">P.S. Piszcie o w\u0142asnych do\u015bwiadczeniach z vCloud Director! :-)<\/p>\n<p align=\"justify\">\n<div style='text-align:left' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>Ten temat by\u0142 poruszany w Internecie wielokrotnie, ale zawsze warto przypomnie\u0107 i od\u015bwie\u017cy\u0107 wiedz\u0119. Szczeg\u00f3lnie, \u017ce nowe wersje oprogramowania pojawiaj\u0105 si\u0119 co chwila, cz\u0119sto r\u00f3\u017cni\u0105c si\u0119 od siebie do\u015b\u0107 mocno. Poza tym, to \u017ce VMware ostatnio traktuje vCloud Director z &hellip; <a href=\"https:\/\/vm.piszki.pl\/?p=1651\">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":"Other","footnotes":""},"categories":[45],"tags":[34,18],"class_list":["post-1651","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-poradniki","tag-f5","tag-vcloud-director"],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":2,"sum_votes":10},"_links":{"self":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/1651"}],"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=1651"}],"version-history":[{"count":4,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/1651\/revisions"}],"predecessor-version":[{"id":2030,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/1651\/revisions\/2030"}],"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=1651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}