Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

王林
王林nach vorne
2023-05-17 08:31:131232Durchsuche

Übliche Möglichkeiten zum Teilen von Sitzungen mit mehreren Websites sind:
•Verwenden Sie den automatischen .net-Statusdienst (asp.net-Statusdienst);
•Verwenden Sie die .net-Sitzungsdatenbank.
•Verwenden Sie Memcached.
•Verwenden Sie Cookies, um die gemeinsame Nutzung zwischen mehreren Websites zu erreichen (diese Methode ist nur auf den Fall beschränkt, dass mehrere Websites denselben Domänennamen haben).
Hier üben wir das Speichern von Sitzungen in Form einer Datenbank, um Sitzungen zur gemeinsamen Nutzung mehrerer Websites zu erreichen . .

Zuerst erstellen wir die Site, wie unten gezeigt:

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

default.aspx

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Es gibt zwei Schaltflächen, setsession wird hauptsächlich verwendet, um einer Sitzung einen Wert zuzuweisen (z. B.: session["sharevalue "] = "abcd"),

getsession dient hauptsächlich dazu, einen Sitzungswert abzurufen.

Der spezifische Code lautet wie folgt:

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Das ist der gesamte Codeteil ...

Der nächste Schritt besteht darin, die web.config zu konfigurieren. Tatsächlich besteht die Hauptsache darin, machinekey und sessionstate zum < hinzuzufügen ;system.web>
Knoten. Die Hauptfunktion des Hinzufügens von Maschinenschlüsseln ist:
„Gemäß der Standardanweisung von msdn: „Konfigurieren Sie den Schlüssel so, dass er zum Verschlüsseln und Entschlüsseln von Formularauthentifizierungs-Cookie-Daten und zum Anzeigen verwendet werden kann.“ Statusdaten und werden zur Überprüfung der Statusidentifizierung außerhalb des Prozesses verwendet. „Das heißt, viele Verschlüsselungen von asp.net hängen von den Werten im Maschinenschlüssel ab, z. B. die Verschlüsselung von Formularauthentifizierungscookies und Ansichtsstatus. Standardmäßig wird die Konfiguration von asp.net dynamisch von selbst generiert. Wenn Ein einzelner Server stellt kein Problem dar, aber wenn mehrere Server einen Lastausgleich durchführen, ist der Maschinenschlüsselwert auf jedem Server ebenfalls inkonsistent, was zu inkonsistenten Verschlüsselungsergebnissen führt, sodass der Lastausgleich für mehrere Server nicht möglich ist In diesem Fall muss auf jeder Site derselbe Maschinenschlüssel konfiguriert werden. Weitere Informationen finden Sie hier.
2. Das Hinzufügen eines Sitzungsstatus dient hauptsächlich dazu, die Sitzung in der Datenbank zu speichern.
Die spezifische Konfiguration ist wie folgt:


Code kopieren Der Code lautet wie folgt:

decryptionkey="9. 421e53e196bb56db11b9c25197a2ad470638efbc604ac74cd29dbbcf79 d6046"
valid ation="sha1" decryption="aes "/>



Dies ist der Website-Teil. . . Der nächste Schritt besteht darin, die Datenbank zu konfigurieren ...

Datenbankkonfiguration:
Verwenden Sie das Tool aspnet_regsql.exe.
Nach asp.net Version 2.0 stellt Microsoft das Tool aspnet_regsql.exe zur einfachen Konfiguration der Sitzungsdatenbank bereit Der Webserver. Systemstammverzeichnis „microsoft.netframework Versionsnummer“-Ordner.

Verwendungsbeispiel:

aspnet_regsql.exe -s . -u sa -p 123456 -ssadd -sstype p
-s Parameter:
stellt den Namen der Datenbankinstanz dar . Sie können die Parameter
-u und -p verwenden:
-e bedeutet Um den aktuellen Systembenutzer über die Windows-Authentifizierungs-Anmeldedatenbank zu verwenden, verwendet -u -p den SQLServer-Benutzer, um sich bei der Datenbank anzumelden.
-ssadd / –ssremove-Parameter:
-ssadd bedeutet, die Sitzungsdatenbank hinzuzufügen, -ssremove bedeutet, sie zu entfernen Sitzungsdatenbank.
sstype-Parameterbeschreibung:
t
Sitzungsdaten in der SQL Server-Tempdb-Datenbank speichern. Dies ist die Standardeinstellung. Wenn Sitzungsdaten in einer tempdb-Datenbank gespeichert werden, gehen die Sitzungsdaten verloren, wenn der SQL Server neu gestartet wird.

Speichern Sie Sitzungsdaten in der Aspstate-Datenbank statt in der Tempdb-Datenbank.
c
Speichern Sie Sitzungsdaten in einer benutzerdefinierten Datenbank. Wenn Sie die Option c angeben, müssen Sie mit der Option -d auch den Namen der benutzerdefinierten Datenbank angeben.
Meine Einstellungen sind: aspnet_regsql.exe -s . -e -d awbuisession -ssadd -sstype c

Okay. Wir haben die Grundlagen abgedeckt. .
Jetzt stellen wir die Website, die wir gerade erstellt haben, für iis bereit. Aber da wollen wir laden. Es sollten mindestens zwei Kopien bereitgestellt werden.




Wir haben „Server 1“ in defaut.aspx in einem der Server in „Server 2“ geändert. Der Hauptzweck dieser Maßnahme besteht darin, einen Unterschied zu machen!

Die Details lauten wie folgt:

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Die URLs der beiden Websites sind:

Server 1: 127.0.0.1:8081;

Server 2: 127.0.0.1:8080;

ok. Als nächstes konfigurieren wir Nignx.

Suchen Sie zuerst die Datei nginx.conf in der nginxconf-Konfigurationsdatei, öffnen Sie sie mit Notepad,

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Nehmen Sie die obigen Einstellungen vor:

ok. Wenn Nginx so konfiguriert ist, ist es in Ordnung. Beginnen wir mit Nginx..

Geben Sie die URL, die wir in Nginx konfiguriert haben, in den Browser ein, z. B.: 127.0.0.1:8090

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Wir werden sehen, dass Server 1 mit der Bedienung begonnen hat. Klicken Sie erneut auf „setsession“, um sie festzulegen ein Sitzungswert,

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Wir werden sehen, wie Server 2 zu arbeiten beginnt. Zu diesem Zeitpunkt klicken wir erneut auf „getsesion“, um den gerade auf Server 1 festgelegten Sitzungswert anzuzeigen. Das Ergebnis ist wie folgt:

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Diese Situation tritt hauptsächlich auf, weil Server 1 und Dienst 2 beim Speichern nicht in der Datenbank gespeichert werden Eine Sitzung. Bei der Sitzungsfreigabe handelt es sich hauptsächlich um eine Sitzungs-ID in der

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

aspstatetempsessions-Tabelle.

Die Sitzungs-ID besteht aus zwei Teilen: der 24-Bit-Sitzungs-ID und dem 8-Bit-App-Namen, der von der Website generiert wird Wenn die 24-Bit-Sitzungs-ID auf verschiedenen Websites gleich gemacht werden kann, können Sie die gespeicherte Prozedur tempgetappid so ändern, dass die erhaltene Sitzungs-ID nichts mit dem App-Namen zu tun hat, um sicherzustellen, dass die Sitzungs-ID nach der Kombination identisch ist. Ändern Sie tempgetappid wie folgt:

Code kopieren Der Code lautet wie folgt:


alter procedure [dbo].[tempgetappid]
@appname tappname,
@appid int output
as
set @appname = 'test' --lower (@appname) Ändern Sie dies, um mehrere Websites zu aktivieren. appname ist ein fester Wert.
set @appid = null
select @appid = appid
from [awbuisession].dbo.aspstatetempapplications
where appname = @appname
if @appid is null begin
begin tran
select @appid = appid
from [awbuisession].dbo .aspstatetempapplications mit (tablockx)
wobei appname = @appname
wenn @appid null ist
begin
exec gethashcode @appname, @appid-Ausgabe
insert [awbuisession].dbo.aspstatetempapplications
values
(@appid, @appname)
if @@error = 2627
begin
declare @dupapp tappname
select @dupapp = rtrim(appname)
from [awbuisession].dbo.aspstatetempapplications
where appid = @appid
raiserror('sql session state fatal error: Hash-Code-Kollision zwischen den Anwendungen „%s“ und „%s“. Bitte benennen Sie die erste Anwendung um, um das Problem zu beheben.',
18, 1, @appname, @dupapp)
end
end
commit
end
return 0


Nach den oben genannten Änderungen muss man sich darüber im Klaren sein, dass mehrere Sites dieselbe Sitzungs-ID verwenden.

Starten Sie jede Site neu. Durchsuchen Sie die Website erneut

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Klicken Sie auf „setsession“,

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Klicken Sie erneut: „getsession“

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Damit wir sehen können, dass Server 2 die Sitzung bereitstellt, die wir gerade auf Server 1 eingerichtet haben. Es lohnt sich.

Klicken wir erneut auf „Sitzung abrufen“.

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Sie können sehen, dass Server 1 und Server 2 die gleichen Ergebnisse zurückgeben und „gemeinsame Sitzung für mehrere Standorte“ erreichen.

Ein zusätzlicher Punkt: Der Sitzungsablauf wird gelöscht, hauptsächlich im Job im SQL Server Agent abgeschlossen.

Wie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert

Das obige ist der detaillierte Inhalt vonWie Nginx Lastausgleich und Multi-Site-Sharing-Sitzung implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen