Konfiguration des Multiplexing Proxys
Der Proxy kann entsprechend der Projektanforderungen konfiguriert werden. Hierbei kann der Proxy entweder als normaler Manager innerhalb des Projektes oder als abgesetzter Manager verwendet werden. Ein abgesetzter Proxy erlaubt es, die Verbindungen mehrerer Projekte mit nur einem Proxy zu verwalten. Der Proxy kann ebenfalls für redundante oder verteilte Projekte konfiguriert werden. Das nachfolgende Kapitel beschreibt, wie der Multiplexing Proxy in verschiedenen Anwendungsfällen konfiguriert werden muss.
Folgende Anwendungsfälle werden innerhalb dieses Kapitels beschrieben:
- Verbindung mit einem kundenspezifischen WinCC OA - Server Manager über Multiplexing Proxy
- Multiplexing Proxy unter Linux
- Multiplexing Proxy und IPV6-Adressen
Lokaler Client und Proxy
Wenn sich der WCCILproxy auf dem gleichen Host wie WCCILdata (Data Manager) und WCCILevent (Event Manager) befindet, sind keine weiteren Anpassungen erforderlich, da die Einstellungen automatisch durch die Config-Einträge [general} data und [general] event generiert werden.
Single System-Konfiguration
Der Proxy und der Server befinden sich auf dem selben Host. Der Client (auf einem anderen Host) kommuniziert mit dem Server über den Proxy.
- Der Client öffnet eine Verbindung zu dem Proxy und signalisiert diesem, eine Verbindung zu dem Data-Manager des Servers zu öffnen.
- Der Proxy öffnet eine Verbindung zu dem Data-Manager und verknüpft diese mit der Verbindung zum Client.
- Der Proxy sendet nun alle Nachrichten des Clients an den Data Manager und alle Nachrichten des Data-Managers zurück an den Client.
Der Verbindungsaufbau für den Event-Manager erfolgt identisch zum Verbindungsaufbau des Data-Managers.
2 Daten und 2 Alive-Verbindungen für den Data-Manager und
2 Daten und 2 Alive-Verbindungen für den Event-Manager.
Config-Datei Einträge
Serverkonfiguration
Keine weiteren Einstellungen erforderlich
Client-Konfiguration
[general]
data="Server[:<dataPort>]"
event="Server[:<eventPort>]"
mxProxy="Server Server[:<proxyPort>] cert"
Wenn der mxProxy-Config-Eintrag nicht angegeben wurde, wird ein automatischer Standardeintrag verwendet.
Wenn Sie den mxProxy-Config-Eintrag manuell angegeben haben, wird dieser verwendet. Beachten Sie, dass auch die Data- und Event-Einträge automatisch gesetzt werden. Prüfen Sie daher, ob der Server Ihrer Data und Event-Einträge mit dem Server Ihres manuell angegebenen mxProxy-Eintrags übereinstimmt.
ACHTUNG! Beachten Sie, dass auch wenn der mxProxy-Config-Eintrag auf "none" gesetzt wäre, Sie den Multiplexing Proxy in Ihrem Projekt trotzdem starten müssen!
Abgesetzter Multiplexing Proxy
In vielen Fällen wird das Intranet eines Unternehmens als sichere Zone angesehen und es ist keine Verschlüsselung erforderlich. Trotzdem soll es möglich sein, einen verschlüsselten Zugang über das Internet zu haben. Es gibt mehrere Ansätze für eine Organisation um ihre extern verfügbaren Services in größeren, unsicheren Netzwerken, meist das Internet, anzubieten. Ein grundlegender Ansatz für dieses Szenario ist das Konfigurieren des Multiplexing Proxys innerhalb einer DMZ hinter einer Firewall.
Abgesetzer Multiplexing Proxy - Einzelner Server
Die Verschlüsselung wird auf allen Host innerhalb des Intranets deaktiviert ([general] mxProxy = "none"), nur die Clients innerhalb des Internets sowie der Proxy verwenden eine SSL Verschlüsselung.
Config-Datei Einträge
Konfiguration Server
[general]
mxProxy="none"
Konfiguration Abgesetzter Multiplexing Proxy
[proxy]
server="Server:<dataPort>"
server="Server:<eventPort>"
Konfiguration Client
[general]
data="Server[:<dataPort>]"
event="Server[:<eventPort>]"
mxProxy="Server Proxy[:<proxyPort>] cert"
Abgesetzter Multiplexing Proxy - Redundanter Server
Konfiguration - Redundantes Server Paar
[general]
data="Server1-1[:<dataPort>],Server1-2[:<dataPort>]$Server2-1[:<dataPort>],Server2-2[:<dataPort>]"
event="Server1-1[:<eventPort>],Server1-2[:<eventPort>]$Server2-1[:<eventPort>],Server2-2[:<eventPort>]"
mxProxy="none"
Konfiguration Abgesetzter Multiplexing Proxy
[proxy]
server = "Server1-1:<dataPort>"
server = "Server1-1:<eventPort>"
server = "Server1-2:<dataPort>"
server = "Server1-2:<eventPort>"
server="Server2-1:<dataPort>"
server="Server2-1:<eventPort>"
server="Server2-2:<dataPort>"
server="Server2-2:<eventPort>"
Client Konfiguration
[general]
data="Server1-1[:<dataPort>],Server1-2[:<dataPort>]$Server2-1[:<dataPort>],Server2-2[:<dataPort>]"
event="Server1-1[:<eventPort>],Server1-2[:<eventPort>]$Server2-1[:<eventPort>],Server2-2[:<eventPort>]"
mxProxy = "Server1-1 Proxy[:<proxyPort>] cert"
mxProxy = "Server1-2 Proxy[:<proxyPort>] cert"
mxProxy = "Server2-1 Proxy[:<proxyPort>] cert"
mxProxy = "Server2-2 Proxy[:<proxyPort>] cert"
Abgesetzter Redundanter Multiplexing Proxy - Redundanter Server
Konfiguration - Redundantes Server Paar
[general]
data="Server1-1[:<dataPort>],Server1-2[:<dataPort>]$Server2-1[:<dataPort>],Server2-2[:<dataPort>]"
event="Server1-1[:<eventPort>],Server1-2[:<eventPort>]$Server2-1[:<eventPort>],Server2-2[:<eventPort>]"
mxProxy="none"
Konfiguration Abgesetzter Multiplexing Proxy 1
[proxy]
server = "Server1-1:<dataPort>"
#server = "Server1-2:<dataPort>"
server = "Server2-1:<dataPort>"
#server = "Server2-2:<dataPort>"
server = "Server1-1:<eventPort>"
#server = "Server1-2:<eventPort>"
server = "Server2-1:<eventPort>"
#server = "Server2-2:<eventPort>"
Konfiguration Abgesetzter Multiplexing Proxy 2
[proxy]
#server = "Server1-1:<dataPort>"
server = "Server1-2:<dataPort>"
#server = "Server2-1:<dataPort>"
server = "Server2-2:<dataPort>"
#server = "Server1-1:<eventPort>"
server = "Server1-2:<eventPort>"
#server = "Server2-1:<eventPort>"
server = "Server2-2:<eventPort>"
Client Konfiguration
Beachten Sie, dass, wenn Sie ein mobiles Gerät oder das Desktop UI verwenden, Sie die notwendigen "Client Konfiguration"-Config-Einträge zu der config.webclient-Datei hinzufügen.
[general]
data="Server1-1[:<dataPort>],Server1-2[:<dataPort>]$Server2-1[:<dataPort>],Server2-2[:<dataPort>]"
event="Server1-1[:<eventPort>],Server1-2[:<eventPort>]$Server2-1[:<eventPort>],Server2-2[:<eventPort>]"
mxProxy="Server1-1 Proxy-1[:<proxyPort>] cert"
mxProxy="Server1-2 Proxy-2[:<proxyPort>] cert"
mxProxy="Server2-1 Proxy-1[:<proxyPort>] cert"
mxProxy="Server2-2 Proxy-2[:<proxyPort>] cert"
Multiplexing Proxy in einem verteilten System
Für die Konfiguration des Multiplexing Proxys innerhalb eines verteilten Systems müssen für die unterschiedlichen Systeme verschiedene Config-Einträge angegeben werden. Für ein Beispiel siehe Kapitel Beispiel für ein verteiltes System mit unterschiedlichen WinCC OA -Versionen.
Verbindung mit einem kundenspezifischen WinCC OA - Server Manager über Multiplexing Proxy
Der WinCC OA Multiplexing Proxy baut eine Verbindung zu freigegebenen WinCC OA-Server Manager auf. Einige WinCC OA-Server Manager (Data-Manager, Event-Manager, Redu-Manager, Split-Manager) sind standardmäßig freigegeben.
Der WCCILproxy kann die Verbindung aufbauen, weil er die Default-Ports der Server kennt oder die geänderte Parametrierung der Ports aus der Config-Datei liest. Weil der WCCILproxy nicht weiß, wie ein Client die Server anspricht (per Hostname oder per IP-Adresse), generiert er nicht nur einen [proxy]server= Eintrag pro Server, sondern einen Eintrag für jeden Hostnamen und jede IP-Addresse des Hosts.
Für einen Host mit 2 Netzwerkkarten generiert der WCCILproxy, für den Fall dass ein redundantes Netzwerk konfiguriert ist, für jeden Server mindestens 5 [proxy]server= Einträge.
- einen Eintrag für die IP-Adresse jeder Netzwerkkarte
server = "192.168.1.1:<dataPort>"
server = "192.168.2.1:<dataPort>"
- einen Eintrag für jeden Hostnamen jeder IP-Adresse
server = "speedy:<dataPort>"
server = "speedy_1:<dataPort>"
server = "speedy_2:<dataPort>"
Kundenspezifische WinCC OA-Server Manager müssen manuell für den Multiplexing Proxy freigegeben werden, weil der Proxy nicht den Defaultport oder die Severport-Konfiguration kennt. Damit die kundenspezifischen WinCC OA-Server Manager über den Multiplexing Proxy erreicht werden können, muss manuell [proxy]server= Einträge erstellt werden. Bei großen Anlagen wo die Projektkonfiguration mit Config-Datei-Templates erfolgt, oder für System-Integratoren, die Branchenpakete erstellen, ist dieses Verfahren fehlerträchtig, weil die Config-Datei für jeden Host angepasst werden muss.
Um diesen Prozess bei der Projektierung zu erleichtern und zu beschleunigen, bietet WinCC OA das Schlüsselwort $host. Dieses Schlüsselwort generiert die notwendigen Einträge für den spezifischen Server ( WinCC OA-System). Mit dem Eintrag wird dem WCCILproxy mitgeteilt, dass es einen Kundenspezifischen Server gibt und er für diesen Server die gleichen Defaults, wie für die standardmäßig freigegebenen Manager, erzeugen soll.
Im folgenden Beispiel für einen Server am Host "Speedy" mit dem Serverport 1234, generiert der WCCILproxy
[proxy]
server = "$host:1234"
- einen Eintrag für die IP-Adresse jeder Netzwerkkarte
[proxy]
server = "192.168.1.1:1234"
server = "192.168.2.1:1234"
- einen Eintrag für jeden Hostnamen jeder IP-Adresse
[proxy]
server = "speedy:1234"
server = "speedy_1:1234"
server = "speedy_2:1234“
Multiplexing Proxy unter Linux
Wenn der Multiplexing Proxy unter Linux verwendet wird, ist die Anzahl der Clients, die gleichzeitig über Multiplexing Proxy eine Verbindung aufbauen, eingeschränkt.
Die maximale Anzahl der File-Deskriptoren pro Prozess ist 1024. Die Anzahl der verfügbaren File-Descriptoren pro Prozess kann mit dem Shell-Befehl ulimit –n <Nummer der Deskriptoren> gesetzt werden. Diese Einschränkungen werden für den Multiplexing Proxy berücksichtigt.
Die Anzahl der File-Deskriptoren, die für den Multiplexing Proxy - Single Client-Verbindung, vorausgesetzt werden:
-
Wenn die Clients Single-Netzwerkverbindungen verwenden, ist die Anzahl8(1 Verbindung benötigt 8 File-Deskriptoren).
-
Wenn die Clients redundante Netzwerkverbindungen verwenden, ist diese Anzahl16(1 Verbindung benötigt 16 File-Deskriptoren).
Wenn die Alive-Überwachung verwendet wird, kann diese einen Einfluss auf die Anzahl haben.
Es gibt eine bestimmte Reserve von verfügbaren File-Deskriptoren im Multiplexing Proxy für andere Zwecke wie Log-Dateien, Standard-Eingabe/Ausgabe usw.
Typische Client-Szenarien:
Beispiel 1 |
Die Clients verwenden Single-Netzwerkverbindung |
Alive-Überwachung wird verwendet |
Die Anzahl der verfügbaren File-Descriptoren pro Prozess wurde mit ulimit -n auf 4096 gesetzt |
Die maximale Anzahl von Clients, die sich gleichzeitig über den Multiplexing Proxy verbinden, ist 126 |
Beispiel 2 |
Die Clients verwenden redundante Netzwerkverbindungen |
Alive-Überwachung wird verwendet |
Die Anzahl der verfügbaren File-Descriptoren pro Prozess wurde mit ulimit -n auf 4096 gesetzt |
Die maximale Anzahl von Clients, die sich gleichzeitig über den Multiplexing Proxy verbinden, ist 63 |
Beispiel 3 |
Die Clients verwenden Single Netzwerkverbindungen |
Alive-Überwachung wird verwendet |
Die Anzahl der verfügbaren File-Descriptoren pro Prozess wurde mit ulimit -n auf 256 gesetzt |
Die maximale Anzahl von Clients, die sich gleichzeitig über den Multiplexing Proxy verbinden, ist 30 |
Multiplexing Proxy und IPV6-Adressen
Wenn eine IPV6-Adresse für den "server" und "mxProxy"-Einträge verwendet wird, müssen [ ] (Eckige Klammern) verwendet werden.
[general]
mxProxy = "[::1] [::1]:5678 cert"
[proxy]
server = "[fe80::2c5c:5415:98f1:82f3]:1234"