Škálování aplikace SignalR službou Redis (SignalR 1.x)
Upozornění
Tato dokumentace není určená pro nejnovější verzi SignalR. Podívejte se na ASP.NET Core SignalR.
V tomto kurzu použijete Redis k distribuci zpráv v aplikaci SignalR, která je nasazená ve dvou samostatných instancích služby IIS.
Redis je úložiště klíč-hodnota v paměti. Podporuje také systém zasílání zpráv s modelem publikování a odběru. Backplane SignalR Redis používá funkci pub/sub k předávání zpráv na jiné servery.
Pro účely tohoto kurzu použijete tři servery:
- Dva servery se systémem Windows, které použijete k nasazení aplikace SignalR.
- Jeden server se systémem Linux, který použijete ke spuštění Redis. Pro snímky obrazovky v tomto kurzu jsem použil Ubuntu 12.04 TLS.
Pokud nemáte k dispozici tři fyzické servery, můžete vytvořit virtuální počítače v Hyper-V. Další možností je vytvořit virtuální počítače v Azure.
I když tento kurz používá oficiální implementaci Redis, existuje také port Redis pro Windows z MSOpenTech. Nastavení a konfigurace se liší, ale jinak jsou kroky stejné.
Poznámka
Škálování služby SignalR pomocí Redis nepodporuje clustery Redis.
Přehled
Než se dostaneme k podrobnému kurzu, tady je stručný přehled toho, co budete dělat.
Nainstalujte Redis a spusťte server Redis.
Přidejte do aplikace tyto balíčky NuGet:
Vytvořte aplikaci SignalR.
Do souboru Global.asax přidejte následující kód pro konfiguraci backplane:
protected void Application_Start() { GlobalHost.DependencyResolver.UseRedis("server", port, "password", "AppName"); RouteTable.Routes.MapHubs(); // ... }
Ubuntu na Hyper-V
Pomocí Windows Hyper-V můžete snadno vytvořit virtuální počítač s Ubuntu na Windows Serveru.
Stáhněte si Ubuntu ISO z http://www.ubuntu.com.
V Hyper-V přidejte nový virtuální počítač. V kroku Připojit virtuální pevný disk vyberte Vytvořit virtuální pevný disk.
V kroku Možnosti instalace vyberte Soubor bitové kopie (.iso), klikněte na Procházet a přejděte na instalační soubor ISO Ubuntu.
Instalace Redis
Podle pokynů v článku http://redis.io/download stáhněte a sestavte Redis.
wget http://redis.googlecode.com/files/redis-2.6.12.tar.gz
tar xzf redis-2.6.12.tar.gz
cd redis-2.6.12
make
Tím se vytvoří binární soubory Redis v adresáři src
.
Ve výchozím nastavení Redis nevyžaduje heslo. Pokud chcete nastavit heslo, upravte redis.conf
soubor, který se nachází v kořenovém adresáři zdrojového kódu. (Než soubor upravíte, vytvořte si záložní kopii.) Přidejte následující direktivu do redis.conf
:
requirepass YourStrongPassword1234
Teď spusťte server Redis:
src/redis-server redis.conf
Otevřete port 6379, což je výchozí port, na kterém Redis naslouchá. (Číslo portu můžete změnit v konfiguračním souboru.)
Vytvoření aplikace SignalR
Vytvořte aplikaci SignalR podle některého z těchto kurzů:
Dále upravíme chatovací aplikaci tak, aby podporovala škálování na více instancí pomocí Redisu. Nejprve do projektu přidejte balíček NuGet SignalR.Redis. V sadě Visual Studio v nabídce Nástroje vyberte Správce balíčků NuGet a pak vyberte Konzola Správce balíčků. V okně konzoly Správce balíčků zadejte následující příkaz:
Install-Package Microsoft.AspNet.SignalR.Redis
Pak otevřete soubor Global.asax. Do metody Application_Start přidejte následující kód:
protected void Application_Start()
{
GlobalHost.DependencyResolver.UseRedis("server", port, "password", "AppName");
RouteTable.Routes.MapHubs();
}
- "server" je název serveru, na kterém běží Redis.
- port je číslo portu.
- "password" je heslo, které jste definovali v souboru redis.conf.
- "AppName" je libovolný řetězec. SignalR vytvoří pub/subkanál Redis s tímto názvem.
Příklad:
GlobalHost.DependencyResolver.UseRedis("redis-server.cloudapp.net", 6379,
"MyStrongPassword1234", "ChatApp");
Nasazení a spuštění aplikace
Připravte instance Windows Serveru na nasazení aplikace SignalR.
Přidejte roli IIS. Zahrnout funkce "Vývoj aplikací", včetně protokolu WebSocket.
Zahrňte také službu pro správu (uvedenou v části Nástroje pro správu).
Nainstalujte Nasazení webu 3.0. Když spustíte Správce služby IIS, zobrazí se výzva k instalaci Webová platforma Microsoft nebo si můžete stáhnout instalační program. V instalačním programu platformy vyhledejte Nasazení webu a nainstalujte Nasazení webu 3.0.
Zkontrolujte, jestli je spuštěná služba webové správy. Pokud ne, službu spusťte. (Pokud v seznamu služeb systému Windows nevidíte Službu pro správu webu, ujistěte se, že jste ji nainstalovali při přidání role IIS.)
Ve výchozím nastavení naslouchá služba webové správy na portu TCP 8172. V bráně Windows Firewall vytvořte nové příchozí pravidlo, které povolí provoz TCP na portu 8172. Další informace najdete v tématu Konfigurace pravidel brány firewall. (Pokud hostujete virtuální počítače v Azure, můžete to udělat přímo v Azure Portal. Viz Postup nastavení koncových bodů pro virtuální počítač.)
Teď jste připraveni nasadit projekt sady Visual Studio z vývojového počítače na server. V Průzkumník řešení klikněte pravým tlačítkem na řešení a klikněte na Publikovat.
Podrobnější dokumentaci k nasazení webu najdete v tématu Mapa obsahu nasazení webu pro Visual Studio a ASP.NET.
Pokud nasadíte aplikaci na dva servery, můžete každou instanci otevřít v samostatném okně prohlížeče a zjistit, že každý z nich přijímá zprávy SignalR od druhého. (V produkčním prostředí by se oba servery samozřejmě nacházely za nástrojem pro vyrovnávání zatížení.)
Pokud vás zajímají zprávy odesílané do Redisu, můžete použít klienta redis-cli , který se instaluje s Redis.
redis-cli -a password
SUBSCRIBE ChatApp