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:
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 ident 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
Server Konfiguration
Keine weiteren Einstellungen erforderlich
Client Konfiguration
[general]
data="Server[:<dataPort>]"
event="Server[:<eventPort>]"
mxProxy="Server Server[:<proxyPort>] cert"
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
z.B.
server = "192.168.1.1:<dataPort>"
server = "192.168.2.1:<dataPort>"
- einen Eintrag für jeden Hostnamen jeder IP-Adresse
z.B.
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
für den Eintrag
[proxy]
server = "$host:1234"
- einen Eintrag für die IP-Adresse jeder Netzwerkkarte
z.B.
[proxy]
server = "192.168.1.1:1234"
server = "192.168.2.1:1234"
- einen Eintrag für jeden Hostnamen jeder IP-Adresse
z.B.
[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"