Licencjonowanie to zawsze gorący temat, a w przypadku niektórych producentów – takich jak na przykład Microsoft – często mocno skomplikowany. Jednym z zastanawiających scenariuszy jest licencjonowanie per procesor w środowiskach wirtualnych. Procesory fizyczne, logiczne, wirtualne – jak to wszystko ugryźć? Podjęliśmy starania, by u źródła wyjaśnić istotę problemu i znaleźć odpowiedzi na wszystkie nurtujące pytania.
Na początek przedstawmy potencjalne problemy z interpretacją zapisów licencyjnych, na jakie można natrafić w środowiskach wirtualnych. Pierwszy scenariusz to jednoprocesorowy serwer z czterema rdzeniami (procesorami logicznymi), na którym pracuje Windows Server 2008 Standard z rolą Hyper-V. Generalnie nie ma to dla nas znaczenia, jaki system pracuje na partycji fizycznej – interesuje nas tylko temat partycji wirtualnych. Serwer ten hostuje jedną maszynę wirtualną z czterema wirtualnymi procesorami, na której pracuje SQL Server 2008 licencjonowany per procesor. Ile licencji na serwer bazodanowy potrzebujemy? Wariant tego scenariusza – dwie maszyny wirtualne z dwoma lub czterema (wtedy mamy do czynienia z overcommitmentem) wirtualnymi procesorami i dwoma SQL Serverami.
Drugi problem dotyczy dwuprocesorowej maszyny i identycznego układu maszyn z SQL Serverami. Powstaje pytanie, czy fizyczne procesory mają w jakikolwiek sposób przełożenie na procesory wirtualne? W niektórych hypervisorach, np. w ESXi 4.0 mamy możliwość przypisania danego procesora fizycznego tylko do konkretnej maszyny wirtualnej, w Hyper-V takiej możliwości już nie ma. Oznacza to, że nawet maszyna wirtualna z jednym wirtualnym procesorem może korzystać z obu procesorów fizycznych. Ile zatem licencji per procesor dla SQL Servera potrzebujemy?
Z braku jednoznacznych informacji na stronach Microsoftu zapytaliśmy u źródła, jak powinno się rozumieć niektóre zapisy licencyjne. Rozwiązania obu problemów szczęśliwie udało się podać jednocześnie, choć mogą być nieco zadziwiające – w kwestii licencjonowania produktów Microsoftu per procesor (np. SQL Servera) pod uwagę brane są jedynie procesory bezpośrednio obecne w systemie, w którym pracuje instancja licencjonowanego produktu. Mówiąc jaśniej, na maszynie wirtualnej interesują nas jedynie procesory wirtualne i nie zastanawiamy się nad tym, ile procesorów fizycznych jest „pod spodem”. Niestety w praktyce oznacza to, że nawet na serwerze jednoprocesorowym potrzebujemy czterech licencji per procesor, jeśli przydzielimy maszynie wirtualnej cztery wirtualne procesory... Co więcej, gdy dodamy drugą maszynę wirtualną – na przykład także z czterema wirtualnymi procesorami (overcommitment) – to SQL Server zainstalowany na takiej maszynie wymaga kolejnych czterech licencji per procesor. Jeśli dodatkowo na partycji fizycznej pracuje trzecia instancja produktu, ona również wymaga własnej licencji na procesor - w przypadku jednoprocesorowej maszyny już tylko jednej. W scenariuszu ilustrowanym przez poniższy schemat potrzebowalibyśmy więc sześciu licencji per procesor.
Rozwiązaniem tego dosyć drogiego problemu są, niestety także dość drogie, licencje per procesor na edycje Enterprise serwerów SQL Server 2005 i 2008. Posiadają one specjalny zapis, który po przypisaniu licencji na każdy procesor fizyczny serwera-hosta pozwala na pracę dowolnej liczby instancji na tym serwerze, włączając w to instancje fizyczne oraz wirtualne. W przypadku, gdy mamy więcej maszyn wirtualnych z SQL Serverem na jednym serwerze fizycznym, licencja Enterprise może okazać się tańsza niż zakup kilku licencji per procesor w edycji Standard. Na przykład w tym samym scenariuszu (obrazek powyżej) zamiast sześciu licencji per procesor wystarczą dwie, ale Enterprise.
Przy okazji przypomnijmy jeszcze, jak wygląda kwestia licencjonowania wirtualnych instancji systemów Windows Server 2008. Edycja Standard pozwala na uruchomienie jednej fizycznej i dodatkowo jednej wirtualnej instancji systemu. Edycja Enterprise rozszerza tę możliwość do czterech wirtualnych instancji systemu, zaś edycja Datacenter nie posiada żadnych ograniczeń co do uruchamiania dodatkowych wirtualnych instancji. Należy jednak pamiętać, że istnieje zapis w licencji stanowiący wyraźnie, że instancja fizyczna może być wykorzystywana jedynie do hostowania i zarządzania instancjami wirtualnymi. Możemy więc posadzić na niej Hyper-V i administrować maszynami wirtualnymi, ale zgodnie z licencją nie możemy na niej skonfigurować serwera IIS i hostować na nim firmowej witryny WWW czy wewnętrznego SharePointa.
Abstrahując od momentami dość absurdalnych rozwiązań, temat licencjonowania per procesor w środowiskach wirtualnych jest ciekawy. Warto jednak najpierw zastanowić się, czy wirtualizacja SQL Servera jest aby na pewno konieczna – nawet w średniej wielkości środowiskach koszty licencjonowania per procesor mogą być wyższe, niż zakup dedykowanego i prawdopodobnie wydajniejszego niż maszyna wirtualna sprzętu do obsługi baz danych. Ostatecznie nawet Microsoft w szumnie reklamowanej migracji serwisu internetowego TechNet na Hyper-V zdecydował się na wirtualizację wszystkiego oprócz SQL Serverów...
Jeśli nurtują Was podobne pytania odnośnie licencjonowania w niekonwencjonalnych scenariuszach, dajcie znać - być może uda nam się sprawę wyjaśnić i opisać.