Řešení potíží s připojením – Azure Event Hubs
Existují různé důvody, proč se klientské aplikace nemůžou připojit k centru událostí. Problémy s připojením můžou být trvalé nebo přechodné.
Pokud k problému dochází neustále (trvale), zkontrolujte tato nastavení a další možnosti uvedené v části Řešení trvalých problémů s připojením v tomto článku.
- Connection string
- Nastavení brány firewall vaší organizace
- Nastavení IP adres v bráně firewall
- Nastavení zabezpečení sítě (koncové body služby, privátní koncové body atd.) a další
V případě přechodných problémů vyzkoušejte následující možnosti, které vám můžou pomoct s řešením těchto problémů. Další informace najdete v tématu Řešení přechodných problémů s připojením.
- Upgrade na nejnovější verzi sady SDK
- Spuštění příkazů pro kontrolu vynechaných paketů
- Získejte trasování sítě.
Řešení trvalých problémů s připojením
Pokud se aplikace vůbec nemůže připojit k centru událostí, vyřešte problém podle kroků v této části.
Zkontrolujte, jestli nedošlo k výpadku služby.
Zkontrolujte výpadek služby Azure Event Hubs na webu stavu služby Azure.
Ověření připojovací řetězec
Ověřte správnost připojovací řetězec, kterou používáte. Informace o získání připojovací řetězec pomocí webu Azure Portal, rozhraní příkazového řádku nebo PowerShellu najdete v tématu Získání připojovací řetězec.
V případě klientů Kafka ověřte, že jsou správně nakonfigurované soubory producer.config nebo consumer.config. Další informace najdete v tématu Odesílání a příjem zpráv pomocí kafka ve službě Event Hubs.
Jaké protokoly můžu použít k odesílání a příjmu událostí?
Producenti nebo odesílatelé můžou k odesílání událostí do centra událostí použít protokolY AMQP (Advanced Messaging Queuing Protocol), Kafka nebo HTTPS.
Příjemci nebo příjemci k příjmu událostí z centra událostí používají AMQP nebo Kafka. Služba Event Hubs podporuje pouze model vyžádané replikace pro příjemce, kteří z něj mohou přijímat události. I když k zpracování událostí z centra událostí používáte obslužné rutiny událostí, procesor událostí interně používá model vyžádané replikace k příjmu událostí z centra událostí.
AMQP
Protokol AMQP 1.0 můžete použít k odesílání událostí a přijímání událostí ze služby Azure Event Hubs. AMQP poskytuje spolehlivou, výkonnou a zabezpečenou komunikaci pro odesílání i příjem událostí. Můžete ho použít pro vysoce výkonné streamování a streamování v reálném čase a podporuje ho většina sad SDK služby Azure Event Hubs.
HTTPS/REST API
Události můžete odesílat pouze do služby Event Hubs pomocí požadavků HTTP POST. Event Hubs nepodporuje příjem událostí přes HTTPS. Je vhodný pro odlehčené klienty, u kterých není možné přímé připojení TCP.
Apache Kafka
Azure Event Hubs má integrovaný koncový bod Kafka, který podporuje producenty a uživatele Kafka. Aplikace vytvořené pomocí kafka můžou k odesílání a přijímání událostí ze služby Event Hubs používat protokol Kafka (verze 1.0 nebo novější).
Sady Azure SDK abstrahují základní komunikační protokoly a poskytují zjednodušený způsob odesílání a přijímání událostí ze služby Event Hubs pomocí jazyků, jako jsou C#, Java, Python, JavaScript atd.
Jaké porty je potřeba otevřít v bráně firewall?
K odesílání a přijímání událostí můžete použít následující protokoly se službou Azure Event Hubs:
- Rozšířený protokol řízení front zpráv 1.0 (AMQP)
- Protokol HTTPS (Hypertext Transfer Protocol 1.1) s protokolem HTTPS (Transport Layer Security)
- Apache Kafka
Informace o odchozích portech, které je potřeba otevřít, najdete v následující tabulce, abyste mohli tyto protokoly používat ke komunikaci se službou Azure Event Hubs.
Protokol | Porty | Detaily |
---|---|---|
AMQP | 5671 a 5672 | Viz průvodce protokolem AMQP |
HTTPS | 443 | Tento port se používá pro rozhraní HTTP/REST API a pro AMQP-over-WebSockets. |
Kafka | 9093 | Viz Použití služby Event Hubs z aplikací Kafka |
Port HTTPS se vyžaduje také pro odchozí komunikaci, pokud se protokol AMQP používá přes port 5671, protože několik operací správy provedených klientskými sadami SDK a získání tokenů z Microsoft Entra ID (při použití) běží přes HTTPS.
Oficiální sady Azure SDK obecně používají protokol AMQP k odesílání a přijímání událostí ze služby Event Hubs. Možnost protokolu AMQP over-WebSockets běží přes port TCP 443 stejně jako rozhraní HTTP API, ale jinak je funkčně identická s prostým protokolem AMQP. Tato možnost má vyšší počáteční latenci připojení kvůli dodatečným odezvě handshake a mírně větší režii, protože se jedná o kompromis pro sdílení portu HTTPS. Pokud je tento režim vybraný, je pro komunikaci dostatečný port TCP 443. Následující možnosti umožňují vybrat prostý režim AMQP nebo AMQP WebSockets:
Jazyk | Možnost |
---|---|
.NET | EventHubConnectionOptions.TransportType – vlastnost EventHubsTransportType.AmqpTcp nebo EventHubsTransportType.AmqpWebSockets |
Java | com.microsoft.azure.eventhubs.EventProcessorClientBuilder.transporttype s AmqpTransportType.AMQP nebo AmqpTransportType.AMQP_WEB_SOCKETS |
Uzel |
EventHubConsumerClientOptions má webSocketOptions vlastnost. |
Python | EventHubConsumerClient.transport_type s TransportType.Amqp nebo TransportType.AmqpOverWebSocket |
Jaké IP adresy je potřeba povolit?
Když pracujete s Azure, někdy musíte povolit konkrétní rozsahy IP adres nebo adresy URL ve vaší podnikové bráně firewall nebo proxy serveru pro přístup ke všem službám Azure, které používáte nebo se pokoušíte použít. Ověřte, že je provoz povolený na IP adresách používaných službou Event Hubs. Ip adresy používané službou Azure Event Hubs: Viz Rozsahy IP adres Azure a značky služeb – Veřejný cloud.
Ověřte také, že je povolená IP adresa vašeho oboru názvů. Pokud chcete najít správné IP adresy, které vám umožní připojení, postupujte takto:
Z příkazového řádku spusťte následující příkaz:
nslookup <YourNamespaceName>.servicebus.windows.net
Poznamenejte si IP adresu vrácenou v
Non-authoritative answer
.
Pokud používáte obor názvů hostovaný ve starším clusteru (na základě cloudových služeb – CNAME končící na *.cloudapp.net) a obor názvů je zónově redundantní, musíte postupovat podle několika dalších kroků. Pokud je váš obor názvů v novějším clusteru (na základě škálovací sady virtuálních počítačů – CNAME končící na *.cloudapp.azure.com) a zónově redundantní, můžete přeskočit následující kroky.
Nejprve spustíte nslookup v oboru názvů.
nslookup <yournamespace>.servicebus.windows.net
Poznamenejte si název v oddílu neautoritativní odpovědi , který je v jednom z následujících formátů:
<name>-s1.cloudapp.net <name>-s2.cloudapp.net <name>-s3.cloudapp.net
Spuštěním příkazu nslookup pro každou z nich s příponami s1, s2 a s3 získejte IP adresy všech tří instancí spuštěných ve třech zónách dostupnosti.
Poznámka:
IP adresa vrácená příkazem
nslookup
není statickou IP adresou. Zůstane však konstantní, dokud se základní nasazení neodstraní nebo nepřesune do jiného clusteru.
Jaké IP adresy klientů odesílají události do mého oboru názvů nebo přijímají události?
Nejprve povolte filtrování IP adres v oboru názvů.
Potom povolte diagnostické protokoly pro události připojení virtuální sítě Event Hubs podle pokynů v diagnostických protokolech Povolit. Zobrazí se IP adresa, pro kterou se připojení odepře.
{
"SubscriptionId": "0000000-0000-0000-0000-000000000000",
"NamespaceName": "namespace-name",
"IPAddress": "1.2.3.4",
"Action": "Deny Connection",
"Reason": "IPAddress doesn't belong to a subnet with Service Endpoint enabled.",
"Count": "65",
"ResourceId": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/testrg/providers/microsoft.eventhub/namespaces/namespace-name",
"Category": "EventHubVNetConnectionEvent"
}
Důležité
Protokoly virtuální sítě se generují jenom v případě, že obor názvů povoluje přístup z konkrétních IP adres (pravidla filtru IP adres). Pokud nechcete omezit přístup k oboru názvů pomocí těchto funkcí a přesto chcete získat protokoly virtuální sítě pro sledování IP adres klientů připojujících se k oboru názvů služby Event Hubs, můžete použít následující alternativní řešení: Povolení filtrování IP adres a přidání celkového adresovatelného rozsahu IPv4 (128.0.0.0/1
- 0.0.0.0/1
) a rozsahu IPv6 (::/1
- 8000::/1
).
Poznámka:
V současné době není možné určit zdrojovou IP adresu jednotlivých zpráv nebo událostí.
Ověřte, že je ve skupinách zabezpečení sítě povolená značka služby Event Hubs.
Pokud je vaše aplikace spuštěná v podsíti a existuje přidružená skupina zabezpečení sítě, ověřte, jestli je povolený internetový odchozí provoz nebo jestli je povolená značka služby Event Hubs (EventHub
). Viz značky služeb virtuální sítě a vyhledejte EventHub
.
Zkontrolujte, jestli aplikace musí být spuštěná v konkrétní podsíti virtuální sítě.
Ověřte, že vaše aplikace běží v podsíti virtuální sítě, která má přístup k oboru názvů. Pokud ne, spusťte aplikaci v podsíti, která má přístup k oboru názvů, nebo přidejte IP adresu počítače, na kterém je aplikace spuštěná, do brány firewall protokolu IP.
Když vytvoříte koncový bod služby virtuální sítě pro obor názvů centra událostí, obor názvů přijímá provoz pouze z podsítě, která je svázaná s koncovým bodem služby. Toto chování má výjimku. Do brány firewall protokolu IP můžete přidat konkrétní IP adresy, abyste povolili přístup k veřejnému koncovému bodu centra událostí. Další informace najdete v tématu Koncové body síťové služby.
Zkontrolujte nastavení brány firewall protokolu IP pro váš obor názvů.
Zkontrolujte, jestli brána firewall protokolu IP neblokuje veřejnou IP adresu počítače, na kterém je aplikace spuštěná.
Ve výchozím nastavení jsou obory názvů služby Event Hubs přístupné z internetu, pokud je požadavek dodáván s platným ověřováním a autorizací. S bránou firewall protokolu IP ji můžete dál omezit jenom na sadu IPv4 nebo IPv6 adres nebo rozsahů adres v zápisu CIDR (classless Inter-Domain Routing).
Pravidla brány firewall protokolu IP se použijí na úrovni oboru názvů služby Event Hubs. Pravidla se proto vztahují na všechna připojení z klientů pomocí libovolného podporovaného protokolu. Jakýkoli pokus o připojení z IP adresy, která neodpovídá povolenému pravidlu IP adresy v oboru názvů služby Event Hubs, se odmítne jako neautorizováno. Odpověď nezmíní pravidlo IP adresy. Pravidla filtru IP adres se použijí v pořadí a první pravidlo, které odpovídá IP adrese, určuje akci přijetí nebo odmítnutí.
Další informace najdete v tématu Konfigurace pravidel brány firewall protokolu IP pro obor názvů služby Azure Event Hubs. Pokud chcete zkontrolovat, jestli máte problémy s filtrováním IP adres, virtuální sítí nebo řetězem certifikátů, přečtěte si téma Řešení potíží souvisejících se sítí.
Zkontrolujte, jestli se k oboru názvů dá přistupovat jenom pomocí privátního koncového bodu.
Pokud je obor názvů služby Event Hubs nakonfigurovaný tak, aby byl přístupný pouze prostřednictvím privátního koncového bodu, ověřte, že klientská aplikace přistupuje k oboru názvů přes privátní koncový bod.
Služba Azure Private Link umožňuje přístup ke službě Azure Event Hubs přes privátní koncový bod ve vaší virtuální síti. Privátní koncový bod je síťové rozhraní, které vás privátně a zabezpečeně připojí ke službám využívajícím službu Azure Private Link. Privátní koncový bod využívá privátní IP adresu z vaší virtuální sítě, a tím skutečně přináší danou službu do vaší virtuální sítě. Veškeré přenosy do služby je možné směrovat přes privátní koncový bod, takže nejsou potřeba žádné brány, zařízení NAT, připojení ExpressRoute nebo VPN ani veřejné IP adresy. Provoz mezi vaší virtuální sítí a službou prochází přes páteřní síť Microsoftu a eliminuje rizika vystavení na veřejném internetu. Můžete se připojit k instanci prostředku Azure a získat tak nejvyšší úroveň členitosti řízení přístupu.
Další informace najdete v tématu Konfigurace privátních koncových bodů. Informace o použití privátního koncového bodu najdete v části Ověření, že připojení privátního koncového bodu funguje .
Řešení potíží souvisejících se sítí
Při řešení problémů souvisejících se sítí ve službě Event Hubs postupujte takto:
Přejděte na nebo wgethttps://<yournamespacename>.servicebus.windows.net/
. Pomáhá s kontrolou, jestli máte problémy s filtrováním IP adres nebo virtuální sítí nebo řetězem certifikátů (nejběžnější při použití sady Java SDK).
Příklad úspěšné zprávy:
<feed xmlns="http://www.w3.org/2005/Atom"><title type="text">Publicly Listed Services</title><subtitle type="text">This is the list of publicly-listed services currently available.</subtitle><id>uuid:27fcd1e2-3a99-44b1-8f1e-3e92b52f0171;id=30</id><updated>2019-12-27T13:11:47Z</updated><generator>Service Bus 1.1</generator></feed>
Příklad chybové zprávy o selhání:
<Error>
<Code>400</Code>
<Detail>
Bad Request. To know more visit https://aka.ms/sbResourceMgrExceptions. . TrackingId:b786d4d1-cbaf-47a8-a3d1-be689cda2a98_G22, SystemTracker:NoSystemTracker, Timestamp:2019-12-27T13:12:40
</Detail>
</Error>
Řešení přechodných potíží s připojením
Pokud dochází k přerušovaným problémům s připojením, projděte si následující části s tipy pro řešení potíží.
Použití nejnovější verze klientské sady SDK
Některé přechodné problémy s připojením můžou být opravené v novějších verzích sady SDK, než jaké používáte. Ujistěte se, že ve svých aplikacích používáte nejnovější verzi klientských sad SDK. Sady SDK se průběžně vylepšují pomocí nových nebo aktualizovaných funkcí a oprav chyb, takže vždy testujte s nejnovějším balíčkem. V poznámkách k verzi najdete problémy, které jsou opravené a přidané nebo aktualizované funkce.
Informace o klientských sadách SDK najdete v článku služby Azure Event Hubs – Klientské sady SDK .
Spuštěním příkazu zkontrolujte vynechané pakety.
Pokud dojde k přerušovaným problémům s připojením, spusťte následující příkaz a zkontrolujte, jestli nedošlo k zahozeným paketům. Tento příkaz se pokusí vytvořit 25 různých připojení TCP každých 1 sekundu se službou. Pak se můžete podívat, kolik jich bylo úspěšných/neúspěšných a můžete se také podívat na latenci připojení TCP. Nástroj si můžete stáhnout odsud psping
.
.\psping.exe -n 25 -i 1 -q <yournamespacename>.servicebus.windows.net:5671 -nobanner
Ekvivalentní příkazy můžete použít, pokud používáte jiné nástroje, například tnc
, ping
atd.
Získejte trasování sítě, pokud předchozí kroky nepomáhají a analyzují ho pomocí nástrojů, jako je Wireshark. V případě potřeby kontaktujte podpora Microsoftu.
Upgrady nebo restartování služeb
K přechodným problémům s připojením může dojít kvůli upgradům a restartováním back-endových služeb. Když k nim dojde, může se zobrazit následující příznaky:
- Může dojít k poklesu příchozích zpráv nebo požadavků.
- Soubor protokolu může obsahovat chybové zprávy.
- Aplikace se můžou po dobu několika sekund odpojit od služby.
- Žádosti můžou být momentálně omezené.
Pokud kód aplikace využívá sadu SDK, zásada opakování je už integrovaná a aktivní. Aplikace se znovu připojí bez významného dopadu na aplikaci nebo pracovní postup. Zachytávání těchto přechodných chyb, zálohování a následné opakování volání zajišťuje odolnost vašeho kódu vůči těmto přechodným problémům.
Další kroky
Podívejte se na následující články: