Instalación de las 3 capas de Dynamics NAV 2009/SP1 en 3 máquinas diferentes

Hola Hola,

como lo prometido es deuda vamos a hablar en las siguientes dos entradas de la arquitectura de 3 capas para Dynamics NAV 2009/SP1.

Comenzaremos hablando de la arquitectura de 3 capas en sí y sus diferencias con la arquitectura de 2 capas así como de su instalación en un entorno con 3 máquinas para en la siguiente entrada glosar los errores más comunes a los que nos enfrentamos una vez realizada la instalación y explicar cómo utilizar la herramienta Best Practrices Analyzer (o BPA) para detectar posibles errores en la instalación.

Hablemos por tanto de la arquitectura: el mayor cambio de la versión 5/SP1 a la 2009/SP1 ha sido sin duda el paso de una arquitectura Cliente/Servidor (de 2 capas) a otra arquitectura de 3 capas en las que se ha introducido una nueva capa intermedia llamada NST (o NAV Service Tier) en la que se ejecuta la lógica de negocio, veámoslo gráficamente:

                                        Arquitectura de 2 capas                                                             Arquitectura de 3 capas

                    

Como podemos ver para el Cliente Clásico de NAV 2009/SP1 aún se utiliza la arquitectura de 2 capas.

Analicemos ahora qué elementos tenemos en cada capa:

Capa Cliente, Role Tailored Client (RTC)->   Contiene el Interfaz de Usuario, la carpeta de Datos (Data Binder) y el constructor de Formularios (Form Builder). Se trata de la capa de presentación e interfaz de la aplicación, es por tanto la capa más importante para el usuario final ya que es desde la que se va a trabajar a diario, no obstante la lógica de negocio no se ejecuta en esta capa y esto es algo realmente importante ya que hace que la máquina que aloja el RTC no necesite de una gran capacidad de computación.

Capa Intermedia o Nav Service Tier (NST)->   Contiene los dos servicios necesarios para el funcionamiento de Dynamics NAV 2009/SP1:

  • Microsoft Dynamics NAV Server-> Funciona como un hub que sirve internamente peticiones provenientes de los nuevos clientes

  • Microsoft Dynamics NAV Business Web Services->  Proporciona una plataforma a través de la cual los desarrolladores pueden usar el entorno de NAV ya existente para construir y personalizar Servicios Web que estén basados en definiciones estándar tales como SOAP.

Es conveniente señalar que para el funcionamiento del RTC tan sólo es necesario arrancar el primero de los servicios.

Capa de Datos-> Esta capa almacena y sirve los datos bajo demanda a través de SQL Server

Aquí tenéis una comparación de arquitecturas con las actividades que desarrolla cada capa que me parece muy interesante para entender la diferencia entre ambos entornos:

Arquitectura 2 capas

Arquitectura 3 capas

C/SIDE Client

RoleTailored Client

  Autorización/Autenticación

Validación de Tipos Simples

  Objetos de Aplicación

 Metadatos

  Capa de Presentación

 Nueva capa de Presentación

  Código, Triggers, Validación

 

 

NAV Server (NST)

 

 Autorización/Autenticación

 

 Objetos de Aplicación

 

 Código, Triggers, Validación

 

 Servicios Web

Database Server

Database Server

  C/SIDE Server or SQL 2005/2008

  SQL Server 2005/2008

Observad cómo ahora la mayor carga de proceso se realiza en la capa intermedia (Código, triggers y validación, Objetos de Aplicación y Autorización/Autenticación) liberando de esta manera a la capa cliente de dicha carga.

Por tanto se nos plantea un nuevo escenario en las instalaciones de Dynamics NAV: Un entorno en el que tengamos 3 máquinas diferentes cada una conteniendo una de las 3 capas. El mayor reto a este nivel es el que nos plantea la autenticación del usuario con el que vamos a trabajar a través de la capa cliente ya que las peticiones que este usuario realice han de ser trasladadas a la capa intermedia y de ahí a la capa de Datos desde la que vamos a obtener la información deseada, algo parecido a esto (A pesar de que en el dibujo no esté reflejado recordad que los clientes también pueden utilizar Windows 7 y los servidores WS2008 R2):

Para poder solucionar este problema de autenticación vamos a utilizar tecnología Microsoft (¿Qué esperabais? :) ), Kerberos, un protocolo de autenticación de redes utilizado para comprobar la identidad de un usuario o una máquina será nuestro mejor amigo de ahora en adelante para garantizar que los usuarios pueden acceder a la información en este tipo de escenarios.

Este protocolo proporciona una autenticación mutua en la que se verifica la identidad del otro siempre. (Para aquellos a los que os guste saber el porqué de las cosas comentaros que en la mitología Griega Kerberos (Kérberos) es el perro de tres cabezas guardián del Hades que impide la salida de los muertos y la entrada de los vivos a dicho mundo.)

Vamos a definir tres conceptos imprescindibles para entender cómo Kerberos realiza la autenticación en estos entornos:

  • Impersonación-> Permite al servicio actuar como el cliente para realizar una acción, se produce cuando un proceso asume el contexto de seguridad de un usuario específico para adquirir autorización de acceso a ciertos recursos o realizar una acción en concreto en nombre del usuario

  • Delegación-> Se produce cuando el principio de Impersonación se extiende a recursos remotos desde el servidor, es una propiedad de dominio de Windows (Funcionalidad de Users and Computers del Directorio Activo). Una cuenta de dominio no tendrá la opción de Delegación hasta que no tenga un SPN (Service Principal Name) registrado para ella.

  • SPN (Serice Principal Name)->  Identificador único de un servicio en una máquina (No puede ser duplicado), a través de estos SPN's configuramos la delegación para que el servicio de Dynamics NAV (Capa nº 2) pueda impersonar al usuario del RTC (Capa nº1) en el servidor de SQL Server (Capa nº3).

Algo así:

Bien, ahora que ya sabemos cuáles son los cambios asociados a la arquitectura de 3 capas y cómo funciona para Dynamics NAV 2009/SP1 es el momento de plantearse el siguiente paso: ¿Cómo configuro mi entorno para que todo funcione correctamente?

Afortunadamente esta pregunta ya ha sido contestada por gente que sabe mucho más que yo en este artículo de msdn:

Walkthrough: Installing the Three Tiers on Three Computers 

En él encontraréis un paso a paso que os guiará a través de la instalación impecablemente, sólo habéis de tener una cosa en cuenta: en el paso en el que habla de crear los SPN's tanto para el servicio de SQL Server como para el de Dynamics NAV hay que crear dos SPN's diferentes y no sólo uno (como se explica en el documento):

Además de incluir el SPN con el FQDN será necesario incluir otro exactamente igual que sólo contenga el nombre de la máquina, es decir:

  1. setspn -A DynamicsNAV/NAVSERV.yourDomain.yourCompany.com:Port yourDomain\yourUser

que es el que viene en el documento y además:

  1. setspn -A DynamicsNAV/NAVSERV:Port yourDomain\User

y lo mismo para el servicio de SQL Server:

  1. setspn -A MSSQLSvc/NAVSQL.yourDomain.yourCompany.com:1433 yourDomain\yourUser
  2. setspn -A MSSQLSvc/NAVSQL:1433 yourDomain\yourUser

Aparte de este cambio el resto del documento es perfecto y os servirá de guía para la instalación.

Sólo un par de recomendaciones más: A aquellos a los que nos os guste utilizar la consola de comandos o prefiráis las herramientas gráficas tales como adsiedit para la creación de SPN's o Active Directory Users and Computers para la configuración de la delegación.

También existe un artículo que explica la instalación de 3 capas en un entorno de 2 máquinas (Compartiendo Servidor para Capa de Datos y Capa Intermedia), pero estoy seguro de que lo que realmente os motiva es el escenario de 3 capas para poder probar toda la potencia de Dynamics NAV, ¿verdad? :)

Walkthrough: Installing the Three Tiers on Two Computers

Creo que con esta entrada cubrimos la información refrente a la nueva arquitectura y su instalación pero por favor no dudéis en utilizar los comentarios para plantear cualquier cuestión o sugerencia respecto a dicha arquitectura.

En la siguiente entrada hablaremos de la investigación de errores y su solución (Lo que conocemos como Troubleshooting) en estos entornos y de los errores más comunes que nos encontramos en las incidencias de Soporte en las que hemos trabajado.

Un saludo y gracias a todo por vuestra atención.

¡Nos leemos!

 

Diego García Álvarez

 

Dynamics NAV Support Engineer