Content Delivery Network (CDN)

Content Delivery Network to sieć serwerów, które w sposób efektywny dostarczają zawartość stron webowych do użytkowników. Aby zminimalizować opóźnienia w dostarczaniu treści CDN cachuje kontent w serwerach brzegowych najbliższych użytkownikom.

Tworzenie profilu CDN przy pomocy portalu Azure odbywa się przez kliknięcia:

All resources -> Add -> Mobile -> CDN

Do wyboru mamy kilka opcji cen (Pricing tier). Tworzymy dla naszego CDNa od razu stosowne zakończenie (endpoint).

Tworzenie CDN i zakończenia przy pomocy PowerShella:

To samo ale w jednej linii:

Więcej o zarządzaniu CDN przez PowerShella:

https://docs.microsoft.com/pl-pl/azure/cdn/cdn-manage-powershell

Blobsy z publicznym dostępem składowane w kontenerach zostają replikowane do zakończeń CDN. Aby uzyskać dostęp do zawartości naszego CDNa zamieniamy adresy URL odnoszące się do blobsów na adresy zakończeń CDN.

Stary adres:

http://storageaccount.blob.core.windows.net/imgs/logo.png

zamieniamy na zakończenie CDN:

http://[CDN endpoint name].azureedget.net/imgs/logo.png

CDN cachuje pliki tak długo jak określa to parametr time-to-live (TTL) zawarty w nagłówkach CacheControl HTTP. Jeżeli oryginalny serwer, z którego pochodzi strona nie określa TTL to CDN domyślnie przyjmuje 7 dni.

CacheControl na plikach blob można ustawiać podczas wgrywania plików na storage przy pomocy:

  • StorageExplorera

  • PowerShella

Max-age ustawiamy w sekundach, 86400 sek. to 24 h.

Są dwa sposoby na usunięcie kontentu z CDN zależne od tego w jaki sposób kontent został dodany do CDN:

  • Kontent jest w storagu – można ustawić kontener jako prywatny albo wykasować kontent z konternera, czy też wykasować sam kontener.
  • Kontent jest w usłudze lub stronie webowej Azure – można zmodyfikować aplikację aby już nie serwowała danego kontentu. Można także wyaksować zakończenie CDN (endpoint) ale stracimy wtedy dostęp do innych treści w nim zawartych.

Kontent usunięty ze storaga lub niedostępny z aplikacji webowej pozostaje w CDN aż do czasu określonego przez TTL. Za pośrednictwem portalu Azure istnieje możliwość natychmiastowego usunięcia kontentu:

All resources -> [Nazwa CDN] -> Purge

Pole Content path powyższego okna dialogowego wspiera wyrażenia regularne. Wyrażenia regularne i opcja Purge all nie jest jednak wspierana aktualnie przez CDN Akamai.  Więcej o opcji Purge tutaj:

https://docs.microsoft.com/en-us/azure/cdn/cdn-purge-endpoint

 

Innym sposobem kontrolowania cachowanych w CDN treści są query strips (ciągi zapytań), o czy można poczytać tutaj:

https://docs.microsoft.com/en-us/azure/cdn/cdn-query-string

 

Dane są keszowane w CDN dopiero gdy po raz pierwsze pojawia się o nie zapytanie, co oznacza że za pierwszym razem czas dostępu do takich danych przez użytkownika końcowego jest większy, ponieważ dane muszą zostać pobrane z serwera, z którego pochodzą, nie mogą być odczytane z keszu. CDN Verizon umożliwia pre-ładowanie danych do keszu dzięki czemu możliwe jest uniiknięcie opóźnienia w dostępie do danych.

 

Configuring custom domains.

Konta Azure Storage oraz Azure CDN dają możliwość dostępu do danych przy pomocy specjalnych nazw domenowych zamiast używania URLi Azure (np. mystorageaccount.core.windows.net). Są na to dwie metody.

  1. Tworzymy odpowiedni rekord CNAME u dostawcy, który utrzymuje naszą domenę.
    Rekord CNAME Cel
    www.nazwa.com
    mystorageaccount.blob.core.windows.net

    Ta metoda jest prostsza ale może spowodować krótki przestój podczas weryfikacji przez Azure czy domena jest zarejestrowana u dostawcy. W portalu Azure klikamy: All resources -> mystorageaccount -> Custom domain-> wpisujemy naszą nazwę domenową (www.nazwa.com).

  2. U rejestratora domen rejestrujemy domenę pośrednią, dając przedrostek asverify przed nazwą domenową. Dodając ten przedrostek do swojej nazwy domenowej pozwalasz Azure na rozpoznawanie Twojej nazwy domenowej bez modyfikowania rekordu DNS dla tej domeny.
Rekord CNAME Cel
asverify.www.nazwa.com asverify.mystorageaccount.blob.core.windows.net

W portalu Azure klikamy: All resources -> mystorageaccount -> Custom domain-> wpisujemy naszą nazwę domenową (bez asverifytj. www.nazwa.com). Zahaczamy Use indirect CNAME validation i  klikamy SAVE.

Po tym jak rekordy asverify zostaną zweryfikowane przez Azure dodajemy właściwą nazwę domenową do naszego DNS. Rekordy asverify można skasować ponieważ nie są po weryfikacji już używane.

Rekord CNAME Cel
www.nazwa.com
mystorageaccount.blob.core.windows.net

Aby usunąć z portalu Azure naszą nazwę domenową wystarczy wejść do  All resources -> mystorageaccount -> Custom domain i usunąć naszą nazwę domenową.

Można to także zrobić w PowerShellu:

Więcej informacji o własnych nazwach domenowych: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-custom-domain-name#register-a-custom-domain

Dla zakończeń Azure CDN (endpoint) procedura jest prawie identyczna ale zamiast przedrostka verify korzystamy z przedrostka cdnverify.

Więcej informacji o własnych nazwach domenowych dla zakończeń CDN:  https://docs.microsoft.com/en-us/azure/cdn/cdn-map-content-to-custom-domain

 

Dokumentacja Microsoftu do CDN:

http://Więcej o CDN: https://docs.microsoft.com/en-us/azure/cdn/cdn-overview