Skalowanie wystąpienia usługi Azure Cache for Redis
Usługa Azure Cache for Redis oferuje różne oferty warstw, które zapewniają elastyczność wyboru rozmiaru i funkcji pamięci podręcznej. Skalowanie umożliwia zmianę rozmiaru, warstwy i liczby węzłów po utworzeniu wystąpienia pamięci podręcznej w celu dopasowania ich do potrzeb aplikacji. W tym artykule przedstawiono sposób skalowania pamięci podręcznej przy użyciu witryny Azure Portal oraz narzędzi, takich jak program Azure PowerShell i interfejs wiersza polecenia platformy Azure.
Typy skalowania
Istnieją zasadniczo dwa sposoby skalowania wystąpienia usługi Azure Cache for Redis:
Skalowanie w górę zwiększa rozmiar maszyny wirtualnej z uruchomionym serwerem Redis, dodając więcej pamięci, procesorów wirtualnych (vCPU) i przepustowości sieci. Skalowanie w górę jest również nazywane skalowaniem w pionie. Przeciwieństwem skalowania w górę jest skalowanie w dół.
Skalowanie na wejściu dzieli wystąpienie pamięci podręcznej na więcej węzłów o tym samym rozmiarze, zwiększając ilość pamięci, procesorów wirtualnych i przepustowość sieci poprzez równoległość. Skalowanie w poziomie jest również określane jako skalowanie w poziomie lub fragmentowanie. Przeciwieństwem skalowania w górę jest skalowanie w. W społeczności usługi Redis skalowanie w górę jest często nazywane klastrowaniem.
Zakres dostępności
Warstwa | Podstawowa i Standardowa | Premium | Enterprise and Enterprise Flash |
---|---|---|---|
Skalowanie w górę | Tak | Tak | Tak |
Skalowanie w dół | Tak | Tak | Nie. |
Skalowanie w poziomie | Nie. | Tak | Tak |
Skalowanie w | Nie. | Tak | Nie. |
Kiedy skalować
Funkcje monitorowania usługi Azure Cache for Redis umożliwiają monitorowanie kondycji i wydajności pamięci podręcznej. Użyj tych informacji, aby określić, kiedy skalować pamięć podręczną.
Możesz monitorować następujące metryki, aby określić, czy chcesz przeprowadzić skalowanie.
- Ładowanie serwera Redis
- Wysokie obciążenie serwera Redis oznacza, że serwer nie może nadążyć za żądaniami ze wszystkich klientów. Ponieważ serwer Redis jest pojedynczym procesem wątkowym, zwykle bardziej przydatne jest skalowanie w poziomie, a nie skalowanie w górę. Skalowanie w górę przez włączenie klastrowania pomaga dystrybuować funkcje narzutowe w wielu procesach usługi Redis. Skalowanie w górę pomaga również dystrybuować szyfrowanie/odszyfrowywanie protokołu TLS i połączenie/rozłączanie, przyspieszając wystąpienia pamięci podręcznej przy użyciu protokołu TLS.
- Skalowanie w górę może być nadal przydatne w zmniejszaniu obciążenia serwera, ponieważ zadania w tle mogą korzystać z większej liczby procesorów wirtualnych i zwolnić wątek dla głównego procesu serwera Redis.
- Warstwy Enterprise i Enterprise Flash używają usługi Redis Enterprise, a nie usługi Redis typu open source. Jedną z zalet tych warstw jest proces serwera Redis, który może korzystać z wielu procesorów wirtualnych. W przypadku wielu procesorów wirtualnych skalowanie w górę i skalowanie w poziomie w tych warstwach może być pomocne w zmniejszeniu obciążenia serwera. Aby uzyskać więcej informacji, zobacz Best Practices for the Enterprise and Enterprise Flash tiers of Azure Cache for Redis (Najlepsze rozwiązania dotyczące warstw Enterprise i Enterprise Flash w usłudze Azure Cache for Redis).
- Użycie pamięci
- Wysokie użycie pamięci wskazuje, że rozmiar danych jest zbyt duży dla bieżącego rozmiaru pamięci podręcznej. Rozważ skalowanie do rozmiaru pamięci podręcznej z większą ilością pamięci. Skalowanie w górę lub skalowanie w górę jest skuteczne w tym miejscu.
- Połączenia klienta
- Każdy rozmiar pamięci podręcznej ma limit liczby połączeń klienta, które może obsługiwać. Jeśli połączenia klienta są zbliżone do limitu rozmiaru pamięci podręcznej, rozważ skalowanie w górę do większej warstwy. Skalowanie w górę nie zwiększa liczby obsługiwanych połączeń klienckich.
- Aby uzyskać więcej informacji na temat limitów połączeń według rozmiaru pamięci podręcznej, zobacz Cennik usługi Azure Cache for Redis.
- Przepustowość sieci
- Jeśli serwer Redis przekracza dostępną przepustowość, żądania klientów mogą przekroczyć limit czasu, ponieważ serwer nie może wypychać danych do klienta wystarczająco szybko. Aby sprawdzić, ile przepustowości po stronie serwera jest używana, sprawdź metryki "Odczyt pamięci podręcznej" i "Zapis w pamięci podręcznej". Jeśli serwer Redis przekracza dostępną przepustowość sieci, rozważ skalowanie w poziomie lub skalowanie w górę do większego rozmiaru pamięci podręcznej o większej przepustowości sieci.
- W przypadku pamięci podręcznych w warstwie Enterprise przy użyciu zasad klastra przedsiębiorstwa skalowanie w poziomie nie zwiększa przepustowości sieci.
- Aby uzyskać więcej informacji na temat dostępnej przepustowości sieci według rozmiaru pamięci podręcznej, zobacz Planowanie usługi Azure Cache for Redis — często zadawane pytania.
- Wewnętrzne skanowania w usłudze Defender
- W pamięciach podręcznych C0 i C1 Standard, podczas gdy wewnętrzne skanowanie usługi Defender jest uruchomione na maszynach wirtualnych, mogą wystąpić krótkie skoki obciążenia serwera nie spowodowane wzrostem liczby żądań pamięci podręcznej. Zobaczysz większe opóźnienie żądań, podczas gdy wewnętrzne skanowania w usłudze Defender są uruchamiane w tych warstwach kilka razy dziennie. Pamięci podręczne w warstwach C0 i C1 mają tylko jeden rdzeń do multitask, dzieląc pracę obsługi wewnętrznych żądań skanowania usługi Defender i usługi Redis. Efekt można zmniejszyć, skalując do wyższej warstwy z wieloma rdzeniami procesora CPU, takimi jak C2.
- Zwiększony rozmiar pamięci podręcznej w wyższych warstwach pomaga rozwiązać wszelkie problemy z opóźnieniami. Ponadto na poziomie C2 masz obsługę aż 2000 połączeń klienckich.
Aby uzyskać więcej informacji na temat określania warstwy cenowej pamięci podręcznej do użycia, zobacz Wybieranie odpowiedniej warstwy i Planowanie usługi Azure Cache for Redis — często zadawane pytania.
Uwaga
Aby uzyskać więcej informacji na temat optymalizowania procesu skalowania, zobacz najlepsze rozwiązania dotyczące skalowania— przewodnik
Wymagania wstępne/ograniczenia skalowania usługi Azure Cache for Redis
Możesz skalować w górę/w dół do innej warstwy cenowej z następującymi ograniczeniami:
- Nie można skalować z wyższej warstwy cenowej do niższej warstwy cenowej.
- Nie można skalować z pamięci podręcznej Enterprise lub Enterprise Flash w dół do żadnej innej warstwy.
- Nie można skalować z pamięci podręcznej Premium w dół do pamięci podręcznej w warstwie Standardowa lub Podstawowa.
- Nie można skalować z pamięci podręcznej w warstwie Standardowa do pamięci podręcznej w warstwie Podstawowa.
- Można skalować z pamięci podręcznej w warstwie Podstawowa do pamięci podręcznej w warstwie Standardowa, ale nie można jednocześnie zmieniać rozmiaru. Jeśli potrzebujesz innego rozmiaru, możesz później wykonać operację skalowania do żądanego rozmiaru.
- Nie można skalować z pamięci podręcznej w warstwie Podstawowa bezpośrednio do pamięci podręcznej Premium. Najpierw przeprowadź skalowanie z warstwy Podstawowa do Standardowa w ramach jednej operacji skalowania, a następnie z warstwy Standardowa do Warstwy Premium w następnej operacji skalowania.
- Nie można skalować z większego rozmiaru do rozmiaru C0 (250 MB). Można jednak skalować w poziomie do dowolnego innego rozmiaru w tej samej warstwie cenowej. Na przykład można skalować w poziomie od C5 Standard do C1 Standard.
- Nie można skalować z pamięci podręcznej w warstwie Premium, Standardowa ani Podstawowa do pamięci podręcznej Flash Enterprise lub Enterprise.
- Nie można skalować między rozwiązaniem Enterprise i Enterprise Flash.
Możesz skalować w poziomie/w z następującymi ograniczeniami:
- Skalowanie w poziomie jest obsługiwane tylko w warstwach Premium, Enterprise i Flash Enterprise.
- Skalowanie w poziomie jest obsługiwane tylko w warstwie Premium .
- W warstwie Premium należy najpierw włączyć klastrowanie przed skalowaniem w poziomie lub w poziomie.
- W warstwie Premium obsługa skalowania w poziomie do 10 fragmentów jest ogólnie dostępna. Obsługa maksymalnie 30 fragmentów jest dostępna w wersji zapoznawczej. (W przypadku pamięci podręcznych z dwiema replikami limit fragmentu wynosi 20. W przypadku trzech replik limit fragmentów wynosi 15).
- Tylko warstwy Enterprise i Enterprise Flash można skalować w górę i skalować w poziomie jednocześnie.
Jak skalować — warstwy Podstawowa, Standardowa i Premium
Jak skalować w górę i w poziomie — warstwy Flash dla przedsiębiorstw i przedsiębiorstw
Warstwy Enterprise i Enterprise Flash umożliwiają skalowanie w górę i skalowanie w poziomie w ramach jednej operacji. Inne warstwy wymagają oddzielnych operacji dla każdej akcji.
Uwaga
Warstwy Flash Enterprise i Enterprise nie obsługują jeszcze skalowania w dół ani skalowania w operacjach.
Skalowanie przy użyciu witryny Azure Portal
Aby skalować pamięć podręczną, przejdź do pamięci podręcznej w witrynie Azure Portal i wybierz pozycję Skaluj z menu Zasób.
Aby skalować w górę, wybierz inny typ pamięci podręcznej, a następnie wybierz pozycję Zapisz.
Ważne
W tej chwili można skalować tylko w górę. Nie można skalować w dół.
Aby skalować w poziomie, zwiększ suwak Pojemność . Zwiększenie pojemności zwiększa się o dwa. Ta liczba odzwierciedla liczbę dodawanych węzłów przedsiębiorstwa redis. Ta liczba jest zawsze wielokrotną liczbą dwóch, aby odzwierciedlić dodawane węzły zarówno dla fragmentów podstawowych, jak i replik.
Ważne
Obecnie można skalować tylko w poziomie, zwiększając pojemność. Nie można skalować w poziomie.
Gdy pamięć podręczna jest skalowana do nowej warstwy, zostanie wyświetlone powiadomienie skalowania pamięci podręcznej Redis Cache .
Po zakończeniu skalowania stan zmienia się z Skalowanie na Uruchomione.
Skalowanie przy użyciu programu PowerShell
Wystąpienia usługi Azure Cache for Redis można skalować za pomocą programu PowerShell przy użyciu polecenia cmdlet Update-AzRedisEnterpriseCache . Możesz zmodyfikować właściwość w Sku
celu skalowania wystąpienia w górę. Możesz zmodyfikować właściwość w Capacity
celu skalowania wystąpienia w poziomie. W poniższym przykładzie pokazano, jak skalować pamięć podręczną o nazwie myCache
do wystąpienia Enterprise E20 (25 GB) o pojemności 4.
Update-AzRedisEnterpriseCache -ResourceGroupName myGroup -Name myCache -Sku Enterprise_E20 -Capacity 4
Skalowanie przy użyciu interfejsu wiersza polecenia platformy Azure
Aby skalować wystąpienia usługi Azure Cache for Redis przy użyciu interfejsu wiersza polecenia platformy Azure, wywołaj polecenie az redisenterprise update . Możesz zmodyfikować właściwość w sku
celu skalowania wystąpienia w górę. Możesz zmodyfikować właściwość w capacity
celu skalowania wystąpienia w poziomie. W poniższym przykładzie pokazano, jak skalować pamięć podręczną o nazwie myCache
do wystąpienia Enterprise E20 (25 GB) o pojemności 4.
az redisenterprise update --cluster-name "myCache" --resource-group "myGroup" --sku "Enterprise_E20" --capacity 4
Skalowanie — często zadawane pytania
Poniższa lista zawiera odpowiedzi na często zadawane pytania dotyczące skalowania usługi Azure Cache for Redis.
- Czy mogę skalować do, z lub w pamięci podręcznej Premium?
- Czy po skalowaniu muszę zmienić nazwę pamięci podręcznej lub klucze dostępu?
- Jak działa skalowanie?
- Czy utracię dane z pamięci podręcznej podczas skalowania?
- Czy mogę używać wszystkich funkcji warstwy Premium po skalowaniu?
- Czy moje niestandardowe ustawienie baz danych ma wpływ na skalowanie?
- Czy moja pamięć podręczna będzie dostępna podczas skalowania?
- Czy istnieją ograniczenia skalowania w przypadku replikacji geograficznej?
- Operacje, które nie są obsługiwane
- Jak długo trwa skalowanie?
- Jak sprawdzić, kiedy skalowanie zostało ukończone?
- Czy muszę wprowadzić jakiekolwiek zmiany w mojej aplikacji klienckiej w celu korzystania z klastrowania?
- Jak klucze są dystrybuowane w klastrze?
- Jaki jest największy rozmiar pamięci podręcznej, który mogę utworzyć?
- Czy wszyscy klienci usługi Redis obsługują klastrowanie?
- Jak mogę nawiązać połączenie z moją pamięcią podręczną po włączeniu klastrowania?
- Czy mogę połączyć się bezpośrednio z poszczególnymi fragmentami mojej pamięci podręcznej?
- Czy mogę skonfigurować klastrowanie dla wcześniej utworzonej pamięci podręcznej?
- Czy mogę skonfigurować klastrowanie dla podstawowej lub standardowej pamięci podręcznej?
- Czy mogę używać klastrowania z dostawcami usługi Redis ASP.NET stan sesji i buforowanie danych wyjściowych?
- Otrzymuję wyjątki MOVE w przypadku korzystania z usługi StackExchange.Redis i klastrowania, co należy zrobić?
- Jaka jest różnica między klastrowaniem systemu operacyjnego i klastrowaniem przedsiębiorstwa w pamięciach podręcznych warstwy przedsiębiorstwa?
- Ile fragmentów używa pamięci podręcznych w warstwie Enterprise?
Czy mogę skalować do, z lub w pamięci podręcznej Premium?
- Nie można skalować z pamięci podręcznej Premium w dół do warstwy cenowej Podstawowa lub Standardowa.
- Możesz skalować z jednej warstwy cenowej pamięci podręcznej Premium do innej.
- Nie można skalować z pamięci podręcznej w warstwie Podstawowa bezpośrednio do pamięci podręcznej Premium. Najpierw przeprowadź skalowanie z warstwy Podstawowa do Standardowa w ramach jednej operacji skalowania, a następnie z warstwy Standardowa do Warstwy Premium w ramach późniejszej operacji skalowania.
- Nie można skalować z pamięci podręcznej Premium do pamięci podręcznej Enterprise lub Enterprise Flash.
- Jeśli podczas tworzenia pamięci podręcznej Premium włączono klastrowanie, możesz zmienić rozmiar klastra. Jeśli pamięć podręczna została utworzona bez włączonego klastrowania, możesz skonfigurować klastrowanie w późniejszym czasie.
Czy po skalowaniu muszę zmienić nazwę pamięci podręcznej lub klucze dostępu?
Nie, nazwa pamięci podręcznej i klucze są niezmienione podczas operacji skalowania.
Jak działa skalowanie?
- Podczas skalowania podstawowej pamięci podręcznej do innego rozmiaru pamięć podręczna jest zamykana, a nowa pamięć podręczna jest aprowizowana przy użyciu nowego rozmiaru. W tym czasie pamięć podręczna jest niedostępna i wszystkie dane w pamięci podręcznej zostaną utracone.
- Podczas skalowania podstawowej pamięci podręcznej do pamięci podręcznej w warstwie Standardowa aprowizowana jest pamięć podręczna repliki, a dane są kopiowane z podstawowej pamięci podręcznej do pamięci podręcznej repliki. Pamięć podręczna pozostaje dostępna podczas procesu skalowania.
- W przypadku skalowania pamięci podręcznej Flash w warstwie Standardowa, Premium, Enterprise lub Enterprise do innego rozmiaru jedna z replik jest zamykana i ponownie aprowizowana do nowego rozmiaru i przesyłanych danych, a następnie druga replika przechodzi w tryb failover, zanim zostanie ponownie zaaprowizowana, podobnie jak proces, który występuje podczas awarii jednego z węzłów pamięci podręcznej.
- Podczas skalowania klastrowanej pamięci podręcznej nowe fragmenty są aprowidowane i dodawane do klastra serwera Redis. Dane są następnie ponownie podzielone na fragmenty.
- Podczas skalowania w klastrowanej pamięci podręcznej dane są najpierw podzielone na fragmenty, a następnie rozmiar klastra jest zmniejszany do wymaganych fragmentów.
- W niektórych przypadkach, takich jak skalowanie lub migrowanie pamięci podręcznej do innego klastra, podstawowy adres IP pamięci podręcznej może ulec zmianie. Rekord DNS dla pamięci podręcznej zmienia się i jest niewidoczny dla większości aplikacji. Jeśli jednak używasz adresu IP do skonfigurowania połączenia z pamięcią podręczną lub skonfigurowania sieciowych grup zabezpieczeń lub zapór zezwalających na ruch do pamięci podręcznej, aplikacja może mieć problemy z nawiązaniem połączenia czasami po aktualizacji rekordów DNS.
Czy utracię dane z pamięci podręcznej podczas skalowania?
- Podczas skalowania pamięci podręcznej w warstwie Podstawowa do nowego rozmiaru wszystkie dane zostaną utracone, a pamięć podręczna będzie niedostępna podczas operacji skalowania.
- Podczas skalowania podstawowej pamięci podręcznej do pamięci podręcznej w warstwie Standardowa dane w pamięci podręcznej są zwykle zachowywane.
- W przypadku skalowania pamięci podręcznej Flash w warstwie Standardowa, Premium, Enterprise lub Enterprise wszystkie dane są zwykle zachowywane. W przypadku skalowania pamięci podręcznej w warstwie Standardowa lub Premium do mniejszego rozmiaru dane mogą zostać utracone, jeśli rozmiar danych przekroczy nowy mniejszy rozmiar, gdy pamięć podręczna jest skalowana w dół. Jeśli dane zostaną utracone podczas skalowania w dół, klucze są eksmitowane przy użyciu zasad eksmisji allkeys-lru .
Czy mogę używać wszystkich funkcji warstwy Premium po skalowaniu?
Nie, niektóre funkcje można ustawić tylko podczas tworzenia pamięci podręcznej w warstwie Premium i nie są dostępne po skalowaniu.
Nie można dodać tych funkcji po utworzeniu pamięci podręcznej Premium:
- Wstrzykiwanie sieci wirtualnej
- Dodawanie nadmiarowości strefy
- Używanie wielu replik na podstawowy
Aby użyć dowolnej z tych funkcji, należy utworzyć nowe wystąpienie pamięci podręcznej w warstwie Premium.
Czy moje niestandardowe ustawienie baz danych ma wpływ na skalowanie?
Jeśli podczas tworzenia pamięci podręcznej skonfigurowano wartość niestandardową dla databases
tego ustawienia, pamiętaj, że niektóre warstwy cenowe mają różne limity baz danych. Poniżej przedstawiono niektóre zagadnienia dotyczące skalowania w tym scenariuszu:
- W przypadku skalowania do warstwy cenowej z niższym
databases
limitem niż bieżąca warstwa:- Jeśli używasz domyślnej
databases
liczby , która jest 16 dla wszystkich warstw cenowych, żadne dane nie zostaną utracone. - Jeśli używasz niestandardowej
databases
liczby, która mieści się w granicach dla warstwy, do której jest skalowana, todatabases
ustawienie jest zachowywane i żadne dane nie zostaną utracone. - Jeśli używasz niestandardowej
databases
liczby, która przekracza limity nowej warstwy,databases
ustawienie zostanie obniżone do limitów nowej warstwy, a wszystkie dane w usuniętych bazach danych zostaną utracone.
- Jeśli używasz domyślnej
- W przypadku skalowania do warstwy cenowej z tym samym lub wyższym
databases
limitem niż bieżąca warstwadatabases
ustawienie jest zachowywane i żadne dane nie zostaną utracone.
Chociaż pamięci podręczne Flash w warstwie Standardowa, Premium, Enterprise i Enterprise mają umowę SLA dotyczącą dostępności, nie ma umowy SLA dotyczącej utraty danych.
Czy moja pamięć podręczna będzie dostępna podczas skalowania?
- Pamięci podręczne Flash w warstwie Standardowa, Premium, Enterprise i Enterprise pozostają dostępne podczas operacji skalowania. Jednak podczas skalowania tych pamięci podręcznych mogą wystąpić blipy połączeń, a także skalowanie z pamięci podręcznych w warstwie Podstawowa do Standardowa . Oczekuje się, że te blipy połączeń będą małe, a klienci redis mogą ponownie nawiązać połączenie natychmiast.
- W przypadku pamięci podręcznych Flash przedsiębiorstwa i przedsiębiorstwa korzystających z aktywnej replikacji geograficznej skalowanie tylko podzestawu połączonych pamięci podręcznych może powodować problemy w niektórych przypadkach. Zalecamy skalowanie wszystkich pamięci podręcznych w grupie replikacji geograficznej tam, gdzie to możliwe.
- Podstawowe pamięci podręczne są w trybie offline podczas operacji skalowania do innego rozmiaru. Pamięci podręczne w warstwie Podstawowa pozostają dostępne podczas skalowania z warstwy Podstawowa do Standardowa , ale mogą wystąpić małe blip połączenia. Jeśli wystąpi blip połączenia, klienci redis mogą zwykle ponownie nawiązać połączenie natychmiast.
Czy istnieją ograniczenia skalowania w przypadku replikacji geograficznej?
W przypadku skonfigurowania pasywnej replikacji geograficznej można zauważyć, że nie można skalować pamięci podręcznej ani zmieniać fragmentów w klastrze. Połączenie replikacji geograficznej między dwiema pamięciami podręcznymi uniemożliwia skalowanie operacji lub zmianę liczby fragmentów w klastrze. Należy odłączyć pamięć podręczną, aby wydać te polecenia. Aby uzyskać więcej informacji, zobacz Konfigurowanie replikacji geograficznej.
Po skonfigurowaniu aktywnej replikacji geograficznej nie można skalować pamięci podręcznej. Wszystkie pamięci podręczne w grupie replikacji geograficznej muszą mieć ten sam rozmiar i pojemność.
Operacje, które nie są obsługiwane
- Nie można skalować z wyższej warstwy cenowej do niższej warstwy cenowej.
- Nie można skalować z pamięci podręcznej Premium w dół do pamięci podręcznej w warstwie Standardowa lub Podstawowa.
- Nie można skalować z pamięci podręcznej w warstwie Standardowa do pamięci podręcznej w warstwie Podstawowa.
- Można skalować z pamięci podręcznej w warstwie Podstawowa do pamięci podręcznej w warstwie Standardowa, ale nie można jednocześnie zmieniać rozmiaru. Jeśli potrzebujesz innego rozmiaru, możesz wykonać operację skalowania do żądanego rozmiaru w późniejszym czasie.
- Nie można skalować z pamięci podręcznej w warstwie Podstawowa bezpośrednio do pamięci podręcznej Premium. Najpierw przeprowadź skalowanie z warstwy Podstawowa do Standardowa w ramach jednej operacji skalowania, a następnie przeprowadź skalowanie z warstwy Standardowa do Warstwy Premium w ramach późniejszej operacji.
- Nie można skalować z pamięci podręcznej Premium do pamięci podręcznej Enterprise lub Enterprise Flash.
- Nie można skalować z większego rozmiaru do rozmiaru C0 (250 MB).
Jeśli operacja skalowania zakończy się niepowodzeniem, usługa spróbuje przywrócić operację, a pamięć podręczna powróci do oryginalnego rozmiaru.
Jak długo trwa skalowanie?
Czas skalowania zależy od kilku czynników. Poniżej przedstawiono niektóre czynniki, które mogą mieć wpływ na czas skalowania.
- Ilość danych: replikowanie większych ilości danych trwa dłużej
- Duże żądania zapisu: większa liczba zapisów oznacza więcej replik danych między węzłami lub fragmentami
- Duże obciążenie serwera: wyższe obciążenie serwera oznacza, że serwer Redis jest zajęty, a ograniczone cykle procesora CPU są dostępne do ukończenia redystrybucji danych
Skalowanie pamięci podręcznej jest działaniem nietrywialnym i może zająć dużo czasu.
Na podstawie rzeczywistych przykładów czas skalowania pamięci podręcznej z jednym do dwóch fragmentów może wynosić od 1 do 2 godzin, gdy pamięć podręczna nie jest obciążona dużym obciążeniem. Jeśli masz więcej fragmentów, czas skalowania nie zwiększa się w sposób liniowy.
Jak sprawdzić, kiedy skalowanie zostało ukończone?
W witrynie Azure Portal możesz zobaczyć, jak trwa operacja skalowania. Po zakończeniu skalowania stan pamięci podręcznej zmieni się na Uruchomiono.
Czy muszę wprowadzić jakiekolwiek zmiany w mojej aplikacji klienckiej w celu korzystania z klastrowania?
Gdy klastrowanie jest włączone, dostępna jest tylko baza danych 0. Jeśli aplikacja kliencka używa wielu baz danych i próbuje odczytywać lub zapisywać w bazie danych innej niż zero, zgłaszany jest następujący wyjątek:
Unhandled Exception: StackExchange.Redis.RedisConnectionException: ProtocolFailure on GET --->
StackExchange.Redis.RedisCommandException: Multiple databases are not supported on this server; cannot switch to database: 6
Aby uzyskać więcej informacji, zobacz Specyfikacja klastra Redis — zaimplementowany podzestaw.
Jeśli używasz usługi StackExchange.Redis, musisz użyć wersji 1.0.481 lub nowszej. Połączenie z pamięcią podręczną odbywa się przy użyciu tych samych punktów końcowych, portów i kluczy , których używasz podczas nawiązywania połączenia z pamięcią podręczną, w której klastrowanie jest wyłączone. Jedyną różnicą jest to, że wszystkie operacje odczytu i zapisu muszą być wykonywane w bazie danych 0.
Inni klienci mogą mieć różne wymagania. Zobacz Czy wszyscy klienci usługi Redis obsługują klastrowanie?
Jeśli aplikacja używa wielu operacji klucza wsadowych w jednym poleceniu, wszystkie klucze muszą znajdować się w tym samym fragmentze. Aby zlokalizować klucze w tym samym fragmentzie, zobacz Jak klucze są dystrybuowane w klastrze?
Jeśli używasz dostawcy stanu sesji usługi Redis ASP.NET, musisz użyć wersji 2.0.1 lub nowszej. Zobacz Czy mogę używać klastrowania z dostawcami usługi Redis ASP.NET stan sesji i buforowanie danych wyjściowych?
Ważne
W przypadku korzystania z warstw Enterprise lub Enterprise FLash można wybrać tryb klastra systemu operacyjnego lub tryb klastra przedsiębiorstwa. Tryb klastra systemu operacyjnego jest taki sam jak klaster w warstwie Premium i jest zgodny ze specyfikacją klastrowania typu open source. Tryb klastra przedsiębiorstwa może być mniej wydajny, ale korzysta z klastrowania usługi Redis Enterprise, które nie wymaga żadnych zmian w użyciu klienta. Aby uzyskać więcej informacji, zobacz Clustering on Enterprise (Klastrowanie w przedsiębiorstwie).
Jak klucze są dystrybuowane w klastrze?
Zgodnie z dokumentacją usługi Redis w modelu dystrybucji kluczy: Przestrzeń klucza jest podzielona na 16 384 gniazda. Każdy klucz jest skrótem i przypisany do jednego z tych miejsc, które są dystrybuowane między węzłami klastra. Można skonfigurować, która część klucza jest skrótem, aby upewnić się, że wiele kluczy znajduje się w tym samym fragmentze przy użyciu tagów skrótu.
- Klucze z tagiem skrótu — jeśli jakakolwiek część klucza jest ujęta w
{
element i}
, tylko ta część klucza jest skrótem na potrzeby określania gniazda skrótu klucza. Na przykład następujące trzy klucze znajdują się w tym samym fragmentzie:{key}1
,{key}2
i{key}3
ponieważ tylkokey
część nazwy jest skrótem. Aby uzyskać pełną listę specyfikacji tagów skrótów kluczy, zobacz Tagi skrótów kluczy. - Klucze bez tagu skrótu — cała nazwa klucza jest używana do tworzenia skrótów, co powoduje statystycznie równomierny rozkład w obrębie fragmentów pamięci podręcznej.
Aby uzyskać najlepszą wydajność i przepływność, zalecamy równomierne dystrybuowanie kluczy. Jeśli używasz kluczy z tagiem skrótu, aplikacja odpowiada za równomierne dystrybuowanie kluczy.
Aby uzyskać więcej informacji, zobacz Keys distribution model (Model dystrybucji kluczy), Redis Cluster data sharding (Fragmentowanie danych klastra Redis) i Keys hash tags (Tagi skrótu kluczy).
Aby uzyskać przykładowy kod dotyczący pracy z klastrowaniem i lokalizowania kluczy w tym samym fragmentowaniu przy użyciu klienta StackExchange.Redis, zobacz część clustering.cs przykładu Hello World .
Jaki jest największy rozmiar pamięci podręcznej, który mogę utworzyć?
Największy rozmiar pamięci podręcznej, który można mieć, wynosi 4,5 TB. Jest to klastrowana pamięć podręczna F1500 o pojemności 9. Aby uzyskać więcej informacji, zobacz Cennik usługi Azure Cache for Redis.
Czy wszyscy klienci usługi Redis obsługują klastrowanie?
Wiele bibliotek klienckich obsługuje klastrowanie Usługi Redis, ale nie wszystkie. Zapoznaj się z dokumentacją biblioteki, której używasz, aby sprawdzić, czy używasz biblioteki i wersji obsługującej klastrowanie. StackExchange.Redis to jedna biblioteka, która obsługuje klastrowanie w nowszych wersjach. Aby uzyskać więcej informacji na temat innych klientów, zobacz sekcję Odtwarzanie za pomocą klastra w samouczku dotyczącym klastra Redis.
Protokół klastrowania Redis wymaga, aby każdy klient łączył się z poszczególnymi fragmentami bezpośrednio w trybie klastrowania, a także definiuje nowe odpowiedzi o błędach, takie jak MOVED
na CROSSSLOTS
. Podczas próby użycia biblioteki klienta, która nie obsługuje klastrowania z pamięcią podręczną trybu klastra, wynikiem może być wiele wyjątków przekierowania MOVED lub po prostu przerwanie aplikacji, jeśli wykonujesz żądania wielokluszowe obejmujące wiele kluczy.
Uwaga
Jeśli używasz usługi StackExchange.Redis jako klienta, sprawdź, czy używasz najnowszej wersji rozwiązania StackExchange.Redis 1.0.481 lub nowszego, aby klastrowanie działało poprawnie. Aby uzyskać więcej informacji na temat wszelkich problemów z wyjątkami przenoszenia, zobacz Przenoszenie wyjątków.
Jak mogę nawiązać połączenie z moją pamięcią podręczną po włączeniu klastrowania?
Możesz nawiązać połączenie z pamięcią podręczną przy użyciu tych samych punktów końcowych, portów i kluczy, których używasz podczas nawiązywania połączenia z pamięcią podręczną, która nie ma włączonego klastrowania. Usługa Redis zarządza klastrowaniem na zapleczu, aby nie trzeba było zarządzać nim z poziomu klienta.
Czy mogę połączyć się bezpośrednio z poszczególnymi fragmentami mojej pamięci podręcznej?
Protokół klastrowania wymaga, aby klient nawiązał poprawne połączenia fragmentów, dlatego klient powinien wykonywać połączenia udostępnione. Z tego względu każdy fragment składa się z pary podstawowej/repliki pamięci podręcznej, nazywanej zbiorczo wystąpieniem pamięci podręcznej. Możesz nawiązać połączenie z tymi wystąpieniami pamięci podręcznej przy użyciu narzędzia Redis-CLI w niestabilnej gałęzi repozytorium Redis w usłudze GitHub. Ta wersja implementuje podstawową obsługę po uruchomieniu przełącznika -c
. Aby uzyskać więcej informacji, zobacz Odtwarzanie z klastrem w https://redis.io samouczku dotyczącym klastra Redis.
Należy użyć przełącznika -p
, aby określić prawidłowy port do nawiązania połączenia. Użyj polecenia WĘZŁY KLASTRA, aby określić dokładne porty używane dla węzłów podstawowych i replik. Używane są następujące zakresy portów:
- W przypadku pamięci podręcznych w warstwie Premium innych niż TLS porty są dostępne w
130XX
zakresie - W przypadku pamięci podręcznych w warstwie Premium z obsługą
150XX
protokołu TLS porty są dostępne w zakresie - W przypadku pamięci podręcznych Flash przedsiębiorstwa i przedsiębiorstwa korzystających z klastrowania systemu operacyjnego początkowe połączenie odbywa się przez port 10000. Nawiązywanie połączenia z poszczególnymi węzłami można wykonać przy użyciu portów w zakresie 85XX. Porty 85xx zmienią się w czasie i nie powinny być zakodowane w aplikacji.
Czy mogę skonfigurować klastrowanie dla wcześniej utworzonej pamięci podręcznej?
Tak. Najpierw upewnij się, że pamięć podręczna znajduje się w warstwie Premium, skalując ją w górę. Następnie zobaczysz opcje konfiguracji klastra, w tym opcję włączenia klastra. Zmień rozmiar klastra po utworzeniu pamięci podręcznej lub po włączeniu klastrowania po raz pierwszy.
Ważne
Nie można cofnąć włączania klastrowania. Pamięć podręczna z włączonym klastrowaniem i tylko jeden fragment zachowuje się inaczej niż pamięć podręczna o tym samym rozmiarze bez klastrowania.
Wszystkie pamięci podręczne w warstwie Flash Enterprise i Enterprise są zawsze klastrowane.
Czy mogę skonfigurować klastrowanie dla podstawowej lub standardowej pamięci podręcznej?
Klastrowanie jest dostępne tylko dla pamięci podręcznych Flash w warstwie Premium, Enterprise i Enterprise.
Czy mogę używać klastrowania z dostawcami usługi Redis ASP.NET stan sesji i buforowanie danych wyjściowych?
- Dostawca usługi Redis Output Cache — brak wymaganych zmian.
- Dostawca stanu sesji usługi Redis — aby korzystać z klastrowania, należy użyć klasy RedisSessionStateProvider 2.0.1 lub nowszej lub jest zgłaszany wyjątek, co jest zmianą powodującą niezgodność. Aby uzyskać więcej informacji, zobacz Szczegóły zmiany powodującej niezgodność w wersji 2.0.0.
Otrzymuję wyjątki MOVE w przypadku korzystania z usługi StackExchange.Redis i klastrowania, co należy zrobić?
Jeśli używasz usługi StackExchange.Redis i otrzymujesz MOVE
wyjątki podczas korzystania z klastrowania, upewnij się, że używasz rozwiązania StackExchange.Redis 1.1.603 lub nowszego. Aby uzyskać instrukcje dotyczące konfigurowania aplikacji .NET do korzystania z usługi StackExchange.Redis, zobacz Konfigurowanie klientów pamięci podręcznej.
Jaka jest różnica między klastrowaniem systemu operacyjnego i klastrowaniem przedsiębiorstwa w pamięciach podręcznych warstwy przedsiębiorstwa?
Tryb klastra systemu operacyjnego jest taki sam jak klaster w warstwie Premium i jest zgodny ze specyfikacją klastrowania typu open source. Tryb klastra przedsiębiorstwa może być mniej wydajny, ale używa klastrowania usługi Redis Enterprise, który nie wymaga żadnych zmian w użyciu klienta. Aby uzyskać więcej informacji, zobacz Clustering on Enterprise (Klastrowanie w przedsiębiorstwie).
Ile fragmentów używa pamięci podręcznych w warstwie Enterprise?
W przeciwieństwie do pamięci podręcznych w warstwie Podstawowa, Standardowa i Premium, pamięci podręczne Flash Enterprise i Enterprise mogą korzystać z wielu fragmentów w jednym węźle. Aby uzyskać więcej informacji, zobacz Fragmentowanie i wykorzystanie procesora CPU.