Web Map: Trials & Tribulations for Small-Shops Provisioning - Presented by: Rob Grant, GIS Supervisor and Mike Buller, GIS Developer/Analyst April ...
←
→
Page content transcription
If your browser does not render page correctly, please read the page content below
Web Map: Trials & Tribulations for Small-Shops Provisioning Presented by: Rob Grant, GIS Supervisor and Mike Buller, GIS Developer/Analyst April 17, 2018
Web Map: Install-Configure-Play Presented by: Rob Grant, GIS Supervisor Mike Buller, GIS Developer/Analyst April 17, 2018
Agenda The CVRD and its web map history. Organizational structure. Challenges and how we solved them. What does the future hold? April 17, 2018
Board of Directors Brian Carruthers Chief Administrative Officer Allison Nelson Executive Assistant Mark Kueber Hamid Hatami Ross Blackwell John Elzinga General Manager General Manager General Manager General Manager Corporate Services Engineering Services Land Use Services Community Services Department Department Department Department • Finance • Asset Management • Community & Regional • Public Safety • Human Resources • Capital Projects Planning • Facilities & Transit • Information Technology Management • Development Services • Arts & Culture • Legislative Services • Environmental Services • Economic Development • Cowichan Lake Recreation • Procurement • Recycling & Waste • Building Inspection & Bylaw • Island Savings Centre Management Enforcement • South Cowichan • Water Management • Parks & Trails Recreation April 17, 2018
2007 2008 2009 10 years in the making 2010 2011 Silverlight and HTML5 2012 Latitude Geographics Hosted 2013 2014 Latitude Geographics Hosted 2015 Planning for in-house Brief History ELA for Geocortex Essentials 2016 Migrate web map from Latitude Geocortex Essentials - 3 sites 2017 ArcGIS Online – 1 site Geocortex Essentials - 3 sites ArcGIS Online – 2 sites 2018 D e v e l o p i n g Ta r g e t e d W e b M a p s
Problems to be Overcome • Historical CVRD GIS person skill set: lots of GIS analyst experience; some IT experience; little to no programming/development experience. • Messy architecture somewhat a result of “let’s throw it against the wall and see what sticks”. April 17, 2018
Learning Outcomes • Be creative but methodical when troubleshooting. April 17, 2018
Learning Outcomes • Be creative but methodical when troubleshooting. • Keep your environments organized and “clean”. April 17, 2018
Learning Outcomes • Be creative but methodical when troubleshooting. • Keep your environments organized and “clean”. • IT support and knowledge required…whether from co- workers or yourselves. April 17, 2018
Starting Environment The world-at-large (the internet). maps.cvrd.bc.ca (port 6443) ISP geocortex.cvrd.bc.ca (port 5050) April 17, 2018
Starting Environment The world-at-large (the internet). maps.cvrd.bc.ca (port 6443) ISP geocortex.cvrd.bc.ca (port 5050) • CVRDWEB • Hosts multiple websites on multiple ports (not GIS-specific). IIS. • Hosts Geocortex Core/Essentials. • Hosts multiple instances of Geocortex HTML5 Viewer. • Production & development sites. April 17, 2018
Starting Environment The world-at-large (the internet). maps.cvrd.bc.ca (port 6443) ISP geocortex.cvrd.bc.ca (port 5050) • CVRDMAP • CVRDWEB • ArcGIS Server. • Hosts multiple websites • IIS. on multiple ports (not • No SDE connections. GIS-specific). IIS. • Some FGDB copied to • Hosts Geocortex server. Core/Essentials. • Some FGDB on • Hosts multiple network share. instances of Geocortex • Also hosted a HTML5 Viewer. development SQL • Production & Server instance. development sites. April 17, 2018
Starting Environment The world-at-large (the internet). maps.cvrd.bc.ca (port 6443) ISP geocortex.cvrd.bc.ca (port 5050) • CVRDMAP • CVRDWEB • ArcGIS Server. • Hosts multiple websites • IIS. on multiple ports (not • No SDE connections. GIS-specific). IIS. • Some FGDB copied to • Hosts Geocortex server. Core/Essentials. • Some FGDB on • Hosts multiple network share. • CVRDSQL instances of Geocortex • Also hosted a HTML5 Viewer. development SQL • SQL Server. • Production & Server instance. • ArcGIS concurrent development sites. license server. • IIS. April 17, 2018
Starting Environment The world-at-large (the internet). maps.cvrd.bc.ca (port 6443) ISP geocortex.cvrd.bc.ca (port 5050) • CVRDMAP • CVRDWEB • CVRDFILE • ArcGIS Server. • Hosts multiple websites • File server. • IIS. on multiple ports (not • File geodatabases • No SDE connections. GIS-specific). IIS. served by AGS. • Some FGDB copied to • Hosts Geocortex • IIS. server. Core/Essentials. • Also hosted • Some FGDB on • Hosts multiple development network share. • CVRDSQL instances of Geocortex Geocortex instance. • Also hosted a HTML5 Viewer. development SQL • SQL Server. • Production & Server instance. • ArcGIS concurrent development sites. license server. • IIS. April 17, 2018
Starting Environment The world-at-large (the internet). maps.cvrd.bc.ca (port 6443) ISP geocortex.cvrd.bc.ca (port 5050) • RANDOM DESKTOPS • CVRDMAP • CVRDWEB • CVRDFILE • Automated/manual • ArcGIS Server. processes (e.g. • Hosts multiple websites • File server. • IIS. publishing). on multiple ports (not • File geodatabases • No SDE connections. GIS-specific). IIS. served by AGS. • Some FGDB copied to • Hosts Geocortex • IIS. server. Core/Essentials. • Also hosted • Some FGDB on • Hosts multiple development network share. • CVRDSQL instances of Geocortex Geocortex instance. • Also hosted a HTML5 Viewer. development SQL • SQL Server. • Production & Server instance. • ArcGIS concurrent development sites. license server. • IIS. April 17, 2018
Messy mix! Starting Environment The world-at-large (the internet). maps.cvrd.bc.ca (port 6443) ISP geocortex.cvrd.bc.ca (port 5050) • RANDOM DESKTOPS • CVRDMAP • CVRDWEB • CVRDFILE • Automated/manual • ArcGIS Server. processes (e.g. • Hosts multiple websites • File server. • IIS. publishing). on multiple ports (not • File geodatabases • No SDE connections. GIS-specific). IIS. served by AGS. • Some FGDB copied to • Hosts Geocortex • IIS. server. Core/Essentials. • Also hosted • Some FGDB on • Hosts multiple development network share. • CVRDSQL instances of Geocortex Geocortex instance. • Also hosted a HTML5 Viewer. development SQL • SQL Server. • Production & Server instance. • ArcGIS concurrent development sites. license server. • IIS. April 17, 2018
Problem #1: public web map PORTS! • External access to public web maps…maps.cvrd.bc.ca on 6443, geocortex.cvrd.bc.ca on 5050 (unencrypted, so replacement for 80). • Why 5050? Historical…lack of machines, 80 already occupied by another non-GIS enterprise web app, lack of support from ISP, lack of knowledge, random selection, and so on… April 17, 2018
Problem #1 symptoms. • Non-standard ports have to be entered in web browser address bar as part of URLs. • IT departments from external organizations would often block CVRD maps site due to non-standard ports (5050 is actually a port used by an older messaging service). April 17, 2018
Solution #1: certificates and Web Adaptor. • CVRD obtained CA certificates for maps.cvrd.bc.ca and geocortex.cvrd.bc.ca. • Geocortex Essentials moved off 5050 to 443 (expected web browser port). • Web Adaptor installed on CVRDMAP as reverse proxy to map services on 6443. April 17, 2018
Port/Encryption Changes The world-at-large (the internet). maps.cvrd.bc.ca (port 443, SSL) ISP geocortex.cvrd.bc.ca (port 443, SSL) • CVRDMAP • CVRDWEB • ArcGIS Server. • Hosts multiple websites • Added Web Adaptor on multiple ports (not on 443. GIS-specific). IIS. • IIS. • Hosts Geocortex • No SDE connections. Core/Essentials. • Some FGDB copied to • Hosts multiple server. instances of Geocortex • Some FGDB on HTML5 Viewer. network share. • Production & • Also hosted a development sites. development SQL Server instance. April 17, 2018
Problem #2: messy environments. • Production machines for some software doubled as development/test machines for other software. • Often undocumented, and knowledge often resided with people no longer available. • Little to no automation of repeatable periodic processes. April 17, 2018
Problem #2 symptoms. • Any process/installation/database found always had same questions…Dev? Test? Prod? Used at all? • Non-production processes running on production machines adversely affect production processes. • Scripts, toolboxes, other artifacts scattered all over. Things getting missed… • Long/inconsistent lag time from production data updates to web map updates. • People working outside of regular business hours. April 17, 2018
Solution #2: mass environment cleanup & automation. • ALL non-production software, data, and processes removed from production machines. • Identifying/creating appropriate dev/test environments. Leveraging Hyper-V where possible. • Prod machines tweaked for suitability to now-defined roles. April 17, 2018
Solution #2: mass environment cleanup & automation continued. • File server was given 2nd role as automation server. • Developed Python toolkit leveraging arcpy and existing Model Builder toolkits for common tasks that can run unattended. • Web map publication; analyze; compress; index rebuilds; audits; schema maintenance; backups; exports. April 17, 2018
Automation changes The world-at-large (the internet). maps.cvrd.bc.ca (port 443, SSL) ISP geocortex.cvrd.bc.ca (port 443, SSL) • RANDOM DESKTOPS • CVRDMAP • CVRDWEB • CVRDFILE • Automated/manual • ArcGIS Server. processes (e.g. • Hosts multiple websites • Jenkins & ArcGIS • Added Web Adaptor publishing). on multiple ports (not Desktop…automation. on 443. GIS-specific). IIS. • File server. • IIS. • Hosts Geocortex • File geodatabases • No SDE connections. Core/Essentials. served by AGS. • Some FGDB copied to • Hosts multiple • IIS. server. instances of Geocortex • Also hosted • Some FGDB on HTML5 Viewer. development network share. • Production & Geocortex instance. • Also hosted a development sites. development SQL Server instance. April 17, 2018
Environment clean-up The world-at-large (the internet). maps.cvrd.bc.ca (port 443, SSL) ISP geocortex.cvrd.bc.ca (port 443, SSL) • CVRD DESKTOPS • CVRDMAP • CVRDWEB • CVRDFILE • ArcGIS Desktop. • ArcGIS Server. • Web maps. • Hosts multiple websites • Jenkins & ArcGIS • Added Web Adaptor on multiple ports (not Desktop…automation. on 443. GIS-specific). IIS. • File server. • IIS. • Hosts Geocortex • File geodatabases • No SDE connections. Core/Essentials. served by AGS. • Some FGDB copied to • Hosts multiple • IIS. server. • CVRDSQL instances of Geocortex • Also hosted • Some FGDB on HTML5 Viewer. development network share. • SQL Server. • Production & Geocortex instance. • Also hosted a • ArcGIS concurrent development sites. development SQL license server. Server instance. • IIS. April 17, 2018
Problem #3: the BIG one. • CVRD web maps had a problem with Geocortex Workflows. • The workflows would randomly start throwing errors. April 17, 2018
Problem #3 symptoms. • The maps (i.e. map services) in the public web maps continue working, yet… • None of the Geocortex workflows work. • Problem would occur seemingly randomly and would last for varying lengths of time…5 minutes to 40 minutes. • Despite assistance from both Esri and Latitude, the root cause had not yet been discovered after 4 months of this. April 17, 2018
Troubleshooting: where to begin? • My starting point…new to CVRD environment; new to Geocortex software; experienced with Esri software; know enough IT to be dangerous. • Initial observation…when error was occurring, it only affected Geocortex workflows, not map services. • First theory…workflows are configured incorrectly in terms of map service URLs. Cleanup required? April 17, 2018
Map service clean-up The world-at-large (the internet). maps.cvrd.bc.ca (port 443, SSL) ISP geocortex.cvrd.bc.ca (port 443, SSL) • CVRD DESKTOPS • CVRDMAP • CVRDWEB • CVRDFILE • ArcGIS Desktop. • ArcGIS Server. • Web maps. • Hosts multiple websites • Jenkins & ArcGIS • Added Web Adaptor on multiple ports (not Desktop…automation. on 443. GIS-specific). IIS. • File server. • Some FGDB copied to • Hosts Geocortex server. Core/Essentials. • Web Adaptor to • CVRDSQL CVRDMAP on internal name. • SQL Server. April 17, 2018
Troubleshooting: next steps. • The workflow errors were still periodically happening after the map service clean-up. • Since environment clean-up had eliminated the configuration as the source of the error, next step was to take a close look at Geocortex…time to learn. • What is the difference between a map in a Geocortex HTML Viewer versus a Workflow in a Geocortex HTML viewer? April 17, 2018
Learning Geocortex • Starting point…experienced application developer (desktop/mobile/web/.NET). Lots of ESRI development experience. • Recognized that Geocortex has 2 main components… • Web client. HTML/CSS/Javascript, uses ArcGIS Javascript API. • IIS .NET server process. Uses ArcGIS .NET Runtime. • Implication…ArcGIS Server map services are accessed from 2 different paths in a Geocortex implementation. April 17, 2018
Geocortex Architecture: Basic Geocortex ArcGIS Server web browser client (HTML Geocortex .NET IIS application Viewer). Static client content Active server content. (HTML, CSS, Javascript) April 17, 2018
What Was Working Client map service requests. Geocortex ArcGIS Server web browser client (HTML Geocortex .NET IIS application Viewer). Static client content Active server content. (HTML, CSS, Javascript) April 17, 2018
What Wasn’t Working (Sometimes) Geocortex ArcGIS Server web browser client (HTML Geocortex .NET IIS application Viewer). Static client content Active server content. (HTML, CSS, Javascript) Geocortex Workflows April 17, 2018
Learning Geocortex Workflows • Next step…how to debug Geocortex Workflows? • Reviewed workflows in question and Geocortex Workflow Designer and realized…it is UX meant to emulate .NET (C# or Visual Basic) programming…without programming. • However, many programming constructs are included as workflow components, and one can even add C# code snippets into workflow configuration. April 17, 2018
Debugging Geocortex Workflows • Identified 1 workflow for debugging purposes, to keep things simple. • Added a try/catch workflow component around the part we knew was failing, which was invocation of ArcGIS Server REST endpoint. • Added logging to explicitly lay out REST call, exception message, and stack trace. • Now we play the waiting game… April 17, 2018
Debugging Geocortex Workflows April 17, 2018
Results of Error Capture • The next time the workflow errors were happening, we reviewed our Geocortex logs for the workflow information, and found this interesting statement: The server at geocortex.cvrd.bc.ca is not accepting connection requests. April 17, 2018
Let’s review our clues… • We know map services continue working, so requests from web clients to geocortex.cvrd.bc.ca are fine. • Requests from the IIS application to geocortex.cvrd.bc.ca are sometimes not working. • Same endpoint name, so…how is this possible? April 17, 2018
Let’s review our architecture… The world-at-large (the internet). ISP geocortex.cvrd.bc.ca (port 443, SSL) • CVRDMAP • CVRDWEB • ArcGIS Server. • Hosts multiple websites • Some FGDB copied to on multiple ports (not server. GIS-specific). IIS. • Hosts Geocortex Core/Essentials. • Web Adaptor to CVRDMAP on internal name. April 17, 2018
Keyed in on server name in error… The world-at-large (the internet). ISP geocortex.cvrd.bc.ca (port 443, SSL) • CVRDMAP geocortex.cvrd.bc.ca • CVRDWEB • ArcGIS Server. • Hosts multiple websites • Some FGDB copied to on multiple ports (not server. GIS-specific). IIS. • Hosts Geocortex Core/Essentials. • Web Adaptor to CVRDMAP on internal name. April 17, 2018
Let’s add our IT knowledge to the clues… • Outside the CVRD intranet, geocortex.cvrd.bc.ca DNS resolves to the ISP-hosted IP address. • Inside the CVRD intranet, geocortex.cvrd.bc.ca SHOULD resolve to the internal machine to which the ISP port- forwards requests to geocortex.cvrd.bc.ca. April 17, 2018
Formulated a theory… • Is it possible that when the error is occurring the IIS application running the Geocortex Workflow, which is hosted on an internal machine, is actually resolving geocortex.cvrd.bc.ca to the external IP address instead of the external one? • This could create a request loop… April 17, 2018
Test the Theory • Wrote a .NET console application that tested the ArcGIS Server endpoint that was reporting as being unreachable, but with multiple different host names… • Internal IP address, in octets. • Internal machine name. • geocortex.cvrd.bc.ca name • If correct, when running this on the server hosting the Geocortex IIS process during period when error is occurring, first 2 should work, last should not. • Once again, we play the waiting game… April 17, 2018
Theory proving correct… • The next time the error was occurring, ran the console application on the machine hosting Geocortex Essentials IIS application…and results were as predicted. • DNS name resolution not always returning expected internal IP address on IIS hosting machine. April 17, 2018
Expounding upon theory. • Discovered that web host had multiple DNS servers configured. First was our normal internal one, then about 10 others, some external. • Therefore, during these error periods, either our internal DNS server stopped responding altogether, or was not responding in a timely manner…so web host switched to a non-internal DNS server that resolved to external IP address, causing request loop. (MY) ROOT CAUSE April 17, 2018
Fixing the problem. • Need to make geocortex.cvrd.bc.ca ALWAYS resolve to internal IP address when resolved on Geocortex hosting machine. • DNS configuration problems handed off to IT, but in the meantime, didn’t want to wait, so… • %WINDIR%\system32\drivers\etc\hosts April 17, 2018
Solution • HOSTS file overrides all DNS configuration with simple machine name / IP address lines. • Added the internal address of geocortex.cvrd.bc.ca during a period when the error was occurring. • Result: error stopped happening immediately, and has never occurred since. April 17, 2018
Current Environment The world-at-large (the internet). ISP geocortex.cvrd.bc.ca (port 443, SSL) • CVRD DESKTOPS • CVRDMAP • CVRDWEB • ArcGIS Desktop. • ArcGIS Server. • Web maps. • Hosts multiple websites • Some FGDB copied to • CVRDFILE on multiple ports (not server. GIS-specific). IIS. • Jenkins & ArcGIS • Hosts Geocortex Desktop…automation. Core/Essentials. • File server. • Web Adaptor to • CVRDSQL CVRDMAP on internal name. • SQL Server. April 17, 2018
Lessons Learned (Learning Outcomes, Revisited) • Be creative but methodical when troubleshooting. April 17, 2018
Lessons Learned (Learning Outcomes, Revisited) • Be creative but methodical when troubleshooting. • Keep your environments organized and “clean”. April 17, 2018
Lessons Learned (Learning Outcomes, Revisited) • Be creative but methodical when troubleshooting. • Keep your environments organized and “clean”. • IT support and knowledge required…whether from co- workers or yourselves. April 17, 2018
Future for CVRD GIS • We’ve now got a stable base for expansion. • Virtual machines; OS/DB upgrades. • Full ArcGIS Enterprise build-out. Geocortex Analytics. • Desktop web as much as possible. • Enabling workflows for internal departments (e.g. parks; utilities)…web and/or native apps, online & offline. • ArcGIS Pro: geometric networks utility networks. • Keep being creative…how can GIS be useful, ubiquitous, and seamless organization-wide? April 17, 2018
Thank you for your time. • Questions? April 17, 2018
© 2018 Esri Canada Limited. All rights reserved. Trademarks provided under license from Environmental Systems Research Institute, Inc. Other product and company names mentioned herein may be trademarks or registered trademarks of their respective owners. Errors and omissions excepted.
You can also read