Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A DNS-szolgáltatás egy opcionális rendszerszolgáltatás, amelyet a saját fürtjében engedélyezhet, hogy a DNS protokoll használatával más szolgáltatásokat fedezhessen fel.
Számos szolgáltatás, különösen a tárolóalapú szolgáltatások, egy már meglévő URL-címen keresztül kezelhetők. Kívánatos, hogy ezeket a szolgáltatásokat a Standard DNS protokoll használatával oldja fel a Service Fabric elnevezési szolgáltatás protokollja helyett. A DNS-szolgáltatás lehetővé teszi a DNS-nevek szolgáltatásnévre való leképezését, és ezáltal a végponti IP-címek feloldását. Az ilyen funkciók fenntartják a tárolóalapú szolgáltatások hordozhatóságát a különböző platformokon, és egyszerűbbé tehetik a "felemelést és váltást" azáltal, hogy lehetővé teszik a meglévő szolgáltatás URL-címeinek használatát a kód átírása helyett az elnevezési szolgáltatás használatához.
A DNS-szolgáltatás leképezi a DNS-neveket a szolgáltatásnevekre, amelyet az elnevezési szolgáltatás felold a szolgáltatásvégpont visszaadásához. A szolgáltatás DNS-neve a létrehozáskor lesz megadva. Az alábbi ábra bemutatja, hogyan működik a DNS-szolgáltatás az állapot nélküli szolgáltatások esetében. A rövidség kedvéért a diagramok csak egy végpontot mutatnak a szolgáltatásokhoz, bár mindegyik szolgáltatás több végponttal is rendelkezhet.
A Service Fabric 6.3-ás verziójától kezdve a Service Fabric DNS-protokollja ki lett terjesztve a particionált állapotalapú szolgáltatások kezelésére szolgáló sémára. Ezek a bővítmények lehetővé teszik adott partíció IP-címek feloldását az állapotalapú szolgáltatás DNS-nevének és a partíciónévnek a kombinációjával. Mindhárom particionálási séma támogatott:
- Elnevezett particionálás
- Tartományos particionálás
- Egyedüli elem particionálás
Az alábbi ábra bemutatja, hogyan működik a DNS-szolgáltatás a particionált állapotalapú szolgáltatásokhoz.
A particionált lekérdezésekkel kapcsolatos további információkért tekintse meg az alábbi szakaszt.
Operációs rendszer támogatása
A DNS-szolgáltatás windowsos és linuxos fürtökön is támogatott, bár a Linux támogatása jelenleg tárolóalapú szolgáltatásokra korlátozódik, és nem engedélyezhető az Azure Portalon keresztül. A Windows azonban támogatja az összes szolgáltatástípust és üzembe helyezési modellt.
A DNS-szolgáltatás engedélyezése
Megjegyzés
A DNS-szolgáltatás engedélyezése felülbírál bizonyos DNS-beállításokat a csomópontokon. Ha problémákat tapasztal az internethez való csatlakozás során, ellenőrizze a DNS-beállításokat.
Új klaszterek
ARM-sablonokat használó fürtök
Ha ARM-sablonokkal szeretne üzembe helyezni egy új fürtöt, használhatja a mintasablonokat, vagy sajátot írhat. Ha még nem tette meg, a DNS-szolgáltatás a minimálisan támogatott API-verziók használatával és a megfelelő beállítások hozzáadásával engedélyezhető a sablonokban. Ennek módjáról az alábbiakban a számozott lista 1. és 2. pontjából tájékozódhat.
Az Azure portálon keresztüli fürtök kezelése
Ha standard fürtöt hoz létre a portálon, a DNS-szolgáltatás alapértelmezés szerint engedélyezve van a DNS-szolgáltatás belefoglalása opcióban, a További funkciók szakasz alatt.
Ha felügyelt fürtöt hoz létre a portálon, a DNS-szolgáltatás alapértelmezés szerint engedélyezve van a DNS-szolgáltatás beállításában, a Szolgáltatások hozzáadása szakaszban.
Meglévő klaszterek
Ha egy meglévő felügyelt fürtön frissítést végez a DNS-szolgáltatás engedélyezéséhez, ezt megteheti a portálon a fürt erőforráslapjáról a Bővítményszolgáltatások lapján. Ellenkező esetben engedélyezheti a DNS-szolgáltatást az alábbi alternatív módszerek használatával:
- Ha szükséges, használja a fürt üzembe helyezéséhez használt ARM-sablont.
- Lépjen a fürtre az Azure Resource Explorerben , és frissítse a fürterőforrást az alábbi lépésekben leírtak szerint (a 2. lépéstől kezdve).
- Lépjen a klaszterre a portálon, és kattintson a Sablon exportálása gombra. További információ: A sablon exportálása erőforráscsoportból.
Miután létrehozott egy sablont, az alábbi lépésekkel engedélyezheti a DNS-szolgáltatást:
Standard fürtök esetén ellenőrizze, hogy az
apiVersion
erőforrás beállítása2017-07-01-preview
vagy újabb értékre van-e állítva, és ha nem, frissítse azt az alábbi példában látható módon.{ "apiVersion": "2017-07-01-preview", "type": "Microsoft.ServiceFabric/clusters", "name": "[parameters('clusterName')]", "location": "[parameters('clusterLocation')]", ... }
Felügyelt fürtök esetén ellenőrizze, hogy a
apiVersion
erőforrás2020-01-01-preview
értékeMicrosoft.ServiceFabric/managedClusters
vagy újabb-e, és ha nem, frissítse azt az alábbi példában látható módon:{ "apiVersion": "2020-01-01-preview", "type": "Microsoft.ServiceFabric/managedClusters", "name": "[parameters('clusterName')]", "location": "[parameters('clusterLocation')]", ... }
Most engedélyezze a DNS-szolgáltatást az alábbi módok egyikével:
Ha alapértelmezett beállításokkal szeretné engedélyezni a DNS-szolgáltatást, adja hozzá a
addonFeatures
szakaszon belüli szakaszhoz azproperties
alábbi példában látható módon:"properties": { ... "addonFeatures": [ "DnsService" ], ... }
Ha nem az alapértelmezett beállításokkal szeretné engedélyezni a szolgáltatást, adjon hozzá egy
DnsService
szakaszt afabricSettings
szakaszhoz aproperties
szakaszon belül. Ebben az esetben nem kell hozzáadnia a DnsService-t a fájlhozaddonFeatures
. A DNS-szolgáltatáshoz beállítható tulajdonságokról további információt a DNS-szolgáltatás beállításai között talál."properties": { ... "fabricSettings": [ ... { "name": "DnsService", "parameters": [ { "name": "IsEnabled", "value": "true" }, { "name": "<key>", "value": "<value>" } ] }, ... ] }
Miután frissítette a fürtsablont a módosításokkal, alkalmazza őket, és hagyja, hogy a frissítés befejeződjön. A frissítés befejezése után a DNS-rendszerszolgáltatás elindul a fürtben. A szolgáltatás neve
fabric:/System/DnsService
a Service Fabric Explorer Rendszerszolgáltatás szakaszában található.
Megjegyzés
Ha a DNS-t letiltottról engedélyezettre frissíti, előfordulhat, hogy a Service Fabric Explorer nem tükrözi az új állapotot. A megoldáshoz indítsa újra a csomópontokat a sablon frissítési szabályzatának módosításával.
A szolgáltatás DNS-nevének beállítása
A szolgáltatások DNS-neveit ARM-sablonokkal, az alapértelmezett szolgáltatásokkal a ApplicationManifest.xml fájlban vagy PowerShell-parancsokkal állíthatja be.
A szolgáltatás DNS-neve a teljes fürtben feloldható, ezért fontos biztosítani a DNS-név egyediségét a fürtben.
Erősen ajánlott, hogy a <ServiceName>.<AppName>
elnevezési sémát használja; például service1.application1
. Ha egy alkalmazás a Docker compose használatával van üzembe helyezve, a szolgáltatások automatikusan DNS-neveket kapnak ezzel az elnevezési sémával.
A DNS-név beállítása ARM-sablonnal
Ha ARM-sablonokat használ a szolgáltatások üzembe helyezéséhez, hozzáadhatja a serviceDnsName
tulajdonságot a megfelelő szakaszhoz, és hozzárendelhet hozzá egy értéket. Példák az alábbiakban láthatók:
Standard csoportok
Standard fürtök esetén ellenőrizze, hogy az apiVersion
erőforrás beállítása 2019-11-01-preview
vagy újabb értékre van-e állítva, és ha nem, frissítse azt az alábbi példában látható módon.
{
"apiVersion": "2019-11-01-preview",
"type": "Microsoft.ServiceFabric/clusters/applications/services",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
"location": "[variables('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/clusters/', parameters('clusterName'), '/applications/', parameters('applicationName'))]"
],
"properties": {
"provisioningState": "Default",
"serviceKind": "Stateless",
"serviceTypeName": "[parameters('serviceTypeName')]",
"instanceCount": "-1",
"partitionDescription": {
"partitionScheme": "Singleton"
},
"correlationScheme": [],
"serviceLoadMetrics": [],
"servicePlacementPolicies": [],
"serviceDnsName": "[parameters('serviceDnsName')]"
}
}
Felügyelt fürtök
Felügyelt fürtök esetén ellenőrizze, hogy a apiVersion
erőforrás 2022-10-01-preview
értéke Microsoft.ServiceFabric/managedclusters/applications/services
vagy újabb-e, és ha nem, frissítse azt az alábbi példában látható módon:
{
"apiVersion": "2022-10-01-preview",
"type": "Microsoft.ServiceFabric/managedclusters/applications/services",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
"location": "[variables('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'), '/applications/', parameters('applicationName'))]"
],
"properties": {
"serviceKind": "Stateless",
"serviceTypeName": "[parameters('serviceTypeName')]",
"instanceCount": "-1",
"partitionDescription": {
"partitionScheme": "Singleton"
},
"correlationScheme": [],
"serviceLoadMetrics": [],
"servicePlacementPolicies": [],
"serviceDnsName": "[parameters('serviceDnsName')]"
}
}
Alapértelmezett szolgáltatás DNS-nevének beállítása a ApplicationManifest.xml
Nyissa meg a projektet a Visual Studióban vagy a kedvenc szerkesztőjében, és nyissa meg a ApplicationManifest.xml fájlt. Lépjen az alapértelmezett szolgáltatások szakaszra, és minden szolgáltatáshoz adja hozzá az ServiceDnsName
attribútumot. Az alábbi példa bemutatja, hogyan állíthatja be a szolgáltatás DNS-nevét a következőre: stateless1.application1
<Service Name="Stateless1" ServiceDnsName="stateless1.application1">
<StatelessService ServiceTypeName="Stateless1Type" InstanceCount="[Stateless1_InstanceCount]">
<SingletonPartition />
</StatelessService>
</Service>
Az alábbi példa egy állapotalapú szolgáltatás DNS-nevét állítja be a következőre stateful1.application1
: . A szolgáltatás nevesített particionálási sémát használ. Figyelje meg, hogy a partíciónevek kisbetűsek. Ez a DNS-lekérdezésekben megcélzott partíciókra vonatkozó követelmény; További információ: DNS-lekérdezések készítése állapotalapú szolgáltatáspartíción.
<Service Name="Stateful1" ServiceDnsName="stateful1.application1" />
<StatefulService ServiceTypeName="Stateful1Type" TargetReplicaSetSize="2" MinReplicaSetSize="2">
<NamedPartition>
<Partition Name="partition1" />
<Partition Name="partition2" />
</NamedPartition>
</StatefulService>
</Service>
Szolgáltatás DNS-nevének beállítása a PowerShell-lel
A szolgáltatás DNS-nevét beállíthatja a létrehozásakor a New-ServiceFabricService
PowerShell-parancs használatával. Az alábbi példa egy új állapot nélküli szolgáltatást hoz létre DNS-névvel stateless1.application1
:
New-ServiceFabricService `
-Stateless `
-PartitionSchemeSingleton `
-ApplicationName fabric:/application1 `
-ServiceName fabric:/application1/stateless1 `
-ServiceTypeName Stateless1Type `
-InstanceCount 1 `
-ServiceDnsName stateless1.application1
Meglévő szolgáltatást Update-ServiceFabricService
a PowerShell-paranccsal is frissíthet. Az alábbi példa egy meglévő állapot nélküli szolgáltatást frissít a DNS-név stateless1.application1
hozzáadásához:
Update-ServiceFabricService `
-Stateless `
-ServiceName fabric:/application1/stateless1 `
-ServiceDnsName stateless1.application1
Ellenőrizze, hogy a DNS-név be van-e állítva a Service Fabric Explorerben
Miután üzembe helyezte a szolgáltatást a DNS-névvel, a Service Fabric Explorer megjeleníti a szolgáltatás DNS-nevét az alábbi ábrán látható módon:
Megjegyzés
Ez a nézet a Service Fabric Explorer használt verziójától függően eltérő lehet, a DNS-név mezőnek azonban valamilyen formában láthatónak kell lennie a szolgáltatásoldalon.
DNS-lekérdezések készítése állapotalapú szolgáltatáspartíción
A Service Fabric 6.3-ás verziójától kezdve a DNS-szolgáltatás támogatja a szolgáltatáspartíciók lekérdezéseit. A particionált szolgáltatás lekérdezéseinek támogatásának engedélyezéséhez a DNS-szolgáltatás beállításait frissíteni kell a beállítás EnablePartitionedQuery
true
beállításához.
A DNS-lekérdezésekben használt partíciókra az alábbi elnevezési korlátozások vonatkoznak:
- A partícióneveknek DNS-kompatibilisnek kell lenniük.
- A többcímkés partíciónevek, beleértve a pont vagy a "." nevet, nem használhatók.
- A partícióneveknek kisbetűsnek kell lenniük.
A partíciót megcélzott DNS-lekérdezések a következőképpen vannak formázva:
<First-Label-Of-Partitioned-Service-DNSName><PartitionPrefix><Target-Partition-Name><PartitionSuffix>.<Remaining-Partitioned-Service-DNSName>
Helyszín:
- A First-Label-Of-Partitioned-Service-DNSName a szolgáltatás DNS-nevének első része.
- A PartitionPrefix egy olyan érték, amely a fürtleíró DnsService szakaszában vagy a fürt ARM-sablonján keresztül állítható be. Az alapértelmezett érték a "--". További információ: DNS-szolgáltatás beállításai.
- Target-Partition-Name a partíció neve.
- A PartitionSuffix egy olyan érték, amely a fürtjegyzék DnsService szakaszában vagy a fürt ARM-sablonján keresztül állítható be. Az alapértelmezett érték egy üres karakterlánc. További információ: DNS-szolgáltatás beállításai.
- A fennmaradó particionált szolgáltatás DNS-neve a szolgáltatás DNS-nevének hátralevő része.
Az alábbi példák olyan particionált szolgáltatások DNS-lekérdezéseit mutatják be, amelyek alapértelmezett beállításokkal futnak egy fürtön: PartitionPrefix
és PartitionSuffix
.
- Egy tartományos particionálási sémát használó DNS-névvel
backendrangedschemesvc.application
rendelkező szolgáltatás "0" partíciójának feloldásához használjabackendrangedschemesvc--0.application
a következőt: . - A névvel ellátott particionálási sémát használó DNS-névvel
backendnamedschemesvc.application
rendelkező szolgáltatás "első" partíciójának feloldásához használjabackendnamedschemesvc--first.application
a következőt: .
A DNS-szolgáltatás a partíció elsődleges replikájához társított végpont IP-címét adja vissza. Ha nincs megadva partíció, a DNS-szolgáltatás véletlenszerűen kiválaszt egy partíciót.
DNS-nevek használata a szolgáltatásokban
Ha DNS-névvel telepít szolgáltatásokat, a DNS-névre hivatkozva megtalálhatja a közzétett végpontok IP-címét. A DNS-szolgáltatás állapot nélküli szolgáltatásokhoz, a Service Fabric 6.3-es és újabb verziójában pedig állapotalapú szolgáltatásokhoz használható. A Service Fabric 6.3 előtti verzióin futó állapotalapú szolgáltatások esetén a HTTP-hívásokhoz használt beépített fordított proxyszolgáltatással meghívhat egy adott szolgáltatáspartíciót.
A DNS-szolgáltatás nem támogatja a dinamikus portokat. A fordított proxyszolgáltatással feloldhatja a dinamikus portokat használó szolgáltatásokat.
Az alábbi kód bemutatja, hogyan hívhat meg állapot nélküli szolgáltatást DNS-sel. Ez egyszerűen egy rendszeres HTTP-hívás, ahol az URL-cím részeként megadja a DNS nevét, a portot és a választható elérési utakat.
public class ValuesController : Controller
{
// GET api
[HttpGet]
public async Task<string> Get()
{
string result = "";
try
{
Uri uri = new Uri("http://stateless1.application1:8080/api/values");
HttpClient client = new HttpClient();
var response = await client.GetAsync(uri);
result = await response.Content.ReadAsStringAsync();
}
catch (Exception e)
{
Console.Write(e.Message);
}
return result;
}
}
Az alábbi kód egy állapotalapú szolgáltatás adott partíciójára irányuló hívást mutat be. Ebben az esetben a DNS-név tartalmazza a partíció nevét (partíció1). A hívás feltételezi, hogy a fürt alapértelmezett értékei a PartitionPrefix
és a PartitionSuffix
.
public class ValuesController : Controller
{
// GET api
[HttpGet]
public async Task<string> Get()
{
string result = "";
try
{
Uri uri = new Uri("http://stateful1--partition1.application1:8080/api/values");
HttpClient client = new HttpClient();
var response = await client.GetAsync(uri);
result = await response.Content.ReadAsStringAsync();
}
catch (Exception e)
{
Console.Write(e.Message);
}
return result;
}
}
Rekurzív lekérdezések
Azon DNS-nevek esetében, amelyeket a DNS-szolgáltatás önállóan nem tud feloldani (például nyilvános DNS-nevet), a lekérdezést továbbítja a csomópontok meglévő rekurzív DNS-kiszolgálóinak.
A Service Fabric 9.0 előtt ezeket a kiszolgálókat a rendszer sorozatosan lekérdezte, amíg nem érkezett válasz, és a kettő között rögzített időtúllépési időszak 5 másodperc volt. Ha egy kiszolgáló nem válaszolt az időtúllépési időszakon belül, a rendszer lekérdezi a következő kiszolgálót (ha elérhető). Abban az esetben, ha ezek a DNS-kiszolgálók bármilyen problémát tapasztalnának, a DNS-lekérdezések végrehajtása 5 másodpercnél tovább tartana, ami nem ideális.
A Service Fabric 9.0-tól kezdve a párhuzamos rekurzív lekérdezések támogatása lett hozzáadva. Párhuzamos lekérdezések esetén az összes rekurzív DNS-kiszolgáló egyszerre érhető el, ahol az első válasz nyer. Ez gyorsabb válaszokat eredményez a korábban említett forgatókönyvben. Ez a beállítás alapértelmezés szerint nincs engedélyezve.
A Service Fabric 9.0-ban részletes beállításokat is bevezetnek a rekurzív lekérdezések viselkedésének szabályozásához, beleértve az időtúllépési időszakokat és a lekérdezési kísérleteket. Ezek a beállítások a DNS-szolgáltatás beállításaiban állíthatók be:
- RecursiveQuerySerialMaxAttempts – Legfeljebb a megkísérlendő soros lekérdezések száma. Ha ez a szám nagyobb, mint a továbbító DNS-kiszolgálók száma, a lekérdezés leáll, ha az összes kiszolgálót pontosan egyszer kísérelték meg.
- RecursiveQuerySerialTimeout – Az időtúllépési érték másodpercben az egyes megkísérelt soros lekérdezésekhez.
- RecursiveQueryParallelMaxAttempts – A párhuzamos lekérdezések hányszor lesznek megkísérelve. A párhuzamos lekérdezések a soros lekérdezések maximális kísérleteinek kimerítése után lesznek végrehajtva.
- RecursiveQueryParallelTimeout – Az időtúllépési érték másodpercben az egyes párhuzamos lekérdezésekhez.
Korlátozások és ismert problémák
- A DNS-szolgáltatás nem támogatja a dinamikus portokat. A dinamikus portokon közzétett szolgáltatások feloldásához használja a fordított proxyszolgáltatást.
- A Linux támogatása jelenleg tárolóalapú szolgáltatásokra korlátozódik. A Linuxon futó folyamatalapú szolgáltatások jelenleg nem tudják használni a DNS-szolgáltatást.
- A Linux-fürtök DNS-szolgáltatása nem engedélyezhető az Azure Portalon keresztül.
- Ha egy szolgáltatás DNS-neve módosul, előfordulhat, hogy egyes esetekben a névfrissítések nem jelennek meg azonnal. A probléma megoldásához a DNS-szolgáltatás példányokat újra kell indítani a klaszterben.
Következő lépések
További információ a fürtön belüli szolgáltatások közötti kommunikációról kapcsolódás és a szolgáltatásokkal való kommunikáció segítségével