Zdalne połączenie z ANSYS gRPC

Jak skonfigurować połączenie z ANSYS gRPC na zdalnym komputerze?

Założenia

ANSYS, ze swoją biblioteką gRPC i Python, jest potężnym narzędziem do automatyzacji analizy mechanicznej. Jednak prawidłowa konfiguracja w pełni zdalnego środowiska może być trudna, zwłaszcza gdy serwer ANSYS i maszyny wywołujące są wystarczająco blisko siebie.

Niniejsza instrukcja pokaże, jak radzić sobie z większością problemów i powinna być kompleksowym przewodnikiem dla osób mniej doświadczonych w konfigurowaniu komunikacji internetowej/sieciowej.

Zakładamy, że zapoznałeś się już z naszym artykułem na temat nawiązywania połączenia gRPC. Tutaj omówimy tylko typowe problemy, które można napotkać podczas nawiązywania połączenia.

Artykuł: Łączenie się z ANSYSem

Różne scenariusze

Sprawdź, jaki jest Twój przypadek i w zależności od niego przeczytaj i zastosuj odpowiednie instrukcje.

Wykonywanie skryptów i serwer gRPC na tym samym komputerze

Serwer ANSYS gRPC i kod Pythona są uruchomione na tym samym komputerze pod tym samym adresem (localhost). Nic nie trzeba robić - powinno działać od razu. Przeczytanie tego artykułu powinno wystarczyć.

Jeśli zastanawiasz się, czy robisz to dobrze, odpowiedź brzmi: tak. Uruchamianie Pythona apdl kontrolowanego przez skrypt jest automatyzacją. Nie ma szczególnej potrzeby robienia tego na zdalnej maszynie, chyba że nie chcesz współdzielić zasobów (CPU, RAM, dysk itp.).

Wykonywanie skryptu i serwer gRPC w tej samej sieci

Oznacza to, że jesteś połączony za pomocą tego samego urządzenia, załóżmy, że jest to router. Każde urządzenie ma przypisany numer/identyfikator sieci lokalnej.

Taka konfiguracja jest korzystna w miejscach pracy, gdy maszyna jest współdzielona przez kilka osób. Innym ciekawym przypadkiem jest niekompatybilny system operacyjny. Serwer gRPC wymaga zainstalowanego ANSYSa, który jest powiązany z określonymi systemami operacyjnymi, ale kod wykonawczy można uruchomić na dowolnym innym systemie, który obsługuje Python.

Przeczytaj Konfiguracja zapory sieciowej, a następnie Konfiguracja sieci lokalnej.

Serwer gRPC znajduje się w innej osiągalnej sieci

Zakładamy, że chcesz mieć dostęp do serwera gRPC z dowolnego miejsca po podłączeniu do Internetu.

To rozwiązanie jest uniwersalne. Działa również w pozostałych dwóch przypadkach, ale wymaga dodatkowej konfiguracji.

Przeczytaj Konfiguracja zapory sieciowej, a następnie Konfiguracja Internetowa.

Konfiguracja zapory sieciowej

W 99% przypadków na maszynie gRPC ruch będzie zablokowany dla portów używanych przez ANSYSa. W poprzednim artykule można było skonfigurować port połączenia. Domyślnie był to port 50052.

Aby umożliwić innym komputerom/maszynom łączenie się z serwerem, należy otworzyć te porty dla ruchu przychodzącego i wychodzącego. Konfiguracja zależy od systemu, ponieważ ANSYS można uruchomić w systemie Windows lub Unix/Ubuntu/CentOS. Zobacz te dwie instrukcje: Windows, unix. Konfiguracja: TCP / określony port 50052 (lub inny, jeśli port został zmieniony podczas uruchamiania serwera gRPC).

Na Ubuntu wystarczy uruchomić następujące polecenie w konsoli (poprosi o hasło administratora).

sudo ufw allow 50052/tcp
Konfiguracja sieci lokalnej

W tym przypadku maszyna gRPC i maszyna wykonująca kod znajdują się w tej samej sieci. Innymi słowy, są one podłączone do tego samego urządzenia routującego i mają podobne adresy lokalne.

Każde urządzenie w sieci lokalnej posiada adres identyfikujący. Najpopularniejszym typem adresu jest IPv4 (Internet Protocol version 4), który składa się z 4 liczb (zakres 0-255) oddzielonych przecinkami. Jeśli znamy ten adres, możemy połączyć się z odpowiednią maszyną.

Jak uzyskać adres IP?

Użyj wiersza poleceń (konsoli) swojego komputera. W systemie Windows wpisz:

ipconfig

Powinieneś otrzymać listę interfejsów. Znalezienie właściwego zależy od typu połączenia, tj. adapter bezprzewodowy jest przeznaczony do Wi-Fi, a adapter LAN do połączenia kablowego. Najczęstsza jest sytuacja, w której adres zaczyna się od 192.168....

W systemach Unix/Mac OS należy użyć polecenia:

ifconfig

Inną opcją jest zalogowanie się do routera (jeśli masz dostęp) i sprawdzenie podłączonych urządzeń: zobacz, jaki adres IP jest przypisany do maszyny serwera gRPC.

Połączenie z gRPC

Po uzyskaniu adresu IP serwera gRPC (musisz znać adres maszyny z uruchomionym programem ANSYS, a nie swój), możesz zaktualizować kod połączenia Pythona, tj. jeśli adres IP to 192.168.1.11, edytuj tę linię:

mapdl = Mapdl("192.168.1.11", port=50052)

W ramach tego kodu powinieneś uzyskać dostęp do serwera gRPC (pamiętaj o dodaniu reguł zapory sieciowej).

Uwaga: IP maszyny może się zmienić po ponownym uruchomieniu.

Taka sytuacja może wystąpić, jeśli zmieni się adres IP urządzenia. Dzieje się tak z powodu powszechnie używanego mechanizmu o nazwie DHCP, który dynamicznie przypisuje adresy IP, więc przy ponownym połączeniu router może zmienić adres.

Rozwiązanie: Routery posiadają funkcję przypisywania statycznych adresów IP. Nie pokażemy, jak to zrobić, ponieważ różni się to w zależności od routera i marki, ale skorzystaj z instrukcji (wyszukaj: "statyczne przypisanie IP").

Konfiguracja internetowa

W tym przypadku urządzenie i kod nie znajdują się w tej samej sieci. Tylko dostępne połączenia mogą być nawiązywane za pośrednictwem sieci internetowej.

Każde urządzenie w Internecie ma również adres IPv4 (patrz poprzednia sekcja). Problem polega na tym, że Internet rozrósł się tak szybko, że adresy nie wskazują już na pojedyncze maszyny, ale na całe podsieci. Takie podejście jest rozwiązaniem problemu niewystarczającej liczby adresów IP w stosunku do liczby podłączonych urządzeń.

Aby wykonać takie połączenie, router (podsieć) musi mieć adres IP o nazwie "publiczny". Adres ten będzie rozpoznawalny na wszystkich stronach internetowych wskazujących na sieć. Aby uzyskać publiczny adres IP, należy skontaktować się z dostawcą usług internetowych (ISP). Jest to funkcja dodatkowo płatna (w wielu przypadkach).

Przekierowanie portów

Uzyskanie publicznego adresu IP jest jednym z wielu wymaganych kroków. Router, który ma rozpoznawalny adres IP w Internecie, musi przekierowywać ruch przychodzący do komputera. W tym celu konieczne jest skonfigurowanie przekierowania portów. 99% wszystkich routerów obsługuje przekierowanie portów. Podobnie jak w przypadku statycznego adresu IP, konfiguracja różni się w zależności od modelu i marki urządzenia. Wyszukaj w instrukcji "przekierowanie portów".

Należy skonfigurować przekierowanie portu źródłowego 50052 na port docelowy 50052 na komputerze lokalnym przy użyciu protokołu TCP (należy podać lokalny adres IP komputera; w poprzedniej sekcji wyjaśniono, jak go pobrać). Należy pamiętać, że może być konieczne ustawienie statycznego adresu IP dla maszyny w sieci lokalnej (patrz poprzednia sekcja), aby zawsze wskazywał na to samo urządzenie - niektóre routery pozwalają na określenie adresu MAC - jest to inny rodzaj adresu, można go również uzyskać za pomocą poleceń ipconfig/ifconfig, adres ten nigdy nie powinien się zmieniać w sieci lokalnej.

Przeanalizujmy, jak to będzie działać. Zaktualizowany kod do tej wersji:

mapdl = Mapdl("A.B.C.D", port=50052)

Gdzie A.B.C.D jest publicznym adresem IP. Podczas wykonywania kodu ruch przez sieć internetową dotrze do routera, prosząc o wysłanie ruchu na port 50052. Ustawiliśmy regułę mówiącą, że ruch przychodzący na port 50052 zostanie przekierowany na lokalną maszynę o adresie X.Y.W.Z. W ten sposób żądanie zostanie dostarczone do serwera gRPC.

Ta część stanowiłaby całą konfigurację połączenia internetowego, ale istnieje wspólna przeszkoda do pokonania. Większość dostawców usług internetowych oferuje publiczne IP, ale w formie dynamicznej. Innymi słowy, adresy są rozpoznawalne przez Internet, ale często mogą się zmieniać. Aby temu zaradzić, należy skonfigurować usługę DDNS (Dynamic Domain Name Server).

DDNS

DNS to usługa, która umożliwia tłumaczenie adresów czytelnych dla człowieka na adresy IP w Internecie. Na przykład, gdy używasz nazwy totalsym.com, usługa ta tłumaczy ją na serwer, który obsługuje wyświetlanie tej strony. DDNS to usługa, która robi to samo, ale może być aktualizowana dość szybko przy każdej zmianie adresu IP. Jeśli masz dynamiczne publiczne IP, zamiast aktualizować swoje IP w kodzie przy każdej zmianie, możesz użyć formy czytelnej dla człowieka. Większość routerów obsługuje DDNS (wyszukaj DDNS w instrukcji). Jak zawsze, konfiguracja zależy od modelu i marki. Aby skonfigurować DDNS, będziesz musiał otworzyć konto u jednego z dostawców, takich jak No-IP lub DyDNS.

Po uzyskaniu nazwy DDNS takiej jak totalsym.ddnstotalsym.com, można użyć tego adresu w kodzie w następujący sposób:

mapdl = Mapdl("totalsym.ddnstotalsym.com", port=50052)

Bezpieczeństwo

Należy pamiętać, że ostatnia wersja nie jest w 100% bezpieczna. Każdy może uzyskać dostęp do serwera gRPC. Konieczne będzie skonfigurowanie specjalnych środków w celu lepszego zabezpieczenia serwerów. Zostanie to wyjaśnione w innych artykułach.

W razie problemów lub pytań prosimy o kontakt pod adresem e-mail: [email protected].