lunes, 27 de julio de 2015

Interminable error Could not load file or assembly en una solución de granja de SharePoint 2013

Este error nunca terminaba y se alternaba de dlls referenciados indicando diferentes versiones que no eran las referenciadas, por más que lo reinstale, borre el cache de asp.net, reinicie el IIS no terminaba, hasta que encontré el único consejo que en mi caso si me sirvió, el cual es el siguiente:

Copia el DLL del problema o bien todos los que hace referencia tu solución, en mi caso eran dos al directorio bin de la carpeta debug del proyecto de SharePoint y con ello el problema si desaparece.

En mi caso los DLL´s que tenia referenciados eran:

Aspose.words.dll y AjaxControlToolKit.dll.

Y esto es porque el directorio bin tiene precedencia del GAC en la aplicación Web siempre y cuando no se especifique la versión. 

Una de las ventajas de copiar el DLL en el directorio bin de la aplicación Web que se va utilizar es que no tiene que reiniciar el servidor y el riesgo se reduce porque solo afecta la aplicación Web que le interesa.  Esto también puede ser una desventaja si existen varias Aplicaciones Web que utilizan el mismo DLL.

Más información en: http://www.hanselman.com/blog/BINDeployingASPNETMVC3WithRazorToAWindowsServerWithoutMVCInstalled.aspx

Así que amigos mi recomendación es copien los DLL en el directorio Bin de la Aplicación Web que necesitan y afecten el servidor lo menos posible, tomen en cuenta que si el dll es utilizado en otras aplicaciones Web deberán actualizarlas también allí, pero esto es mejor a mi parecer que utilizar el GAC ya que este debe de actualizarse el cache reiniciando el IIS y algunas veces hasta el servidor mismo.

Code4Fun!,

Juan Manuel Herrera Ocheita

jueves, 9 de julio de 2015

Creando un sitio de recuperación para SharePoint Foundation en Azure

El siguiente escenario es ficticio pero posible, donde oficinas de representación cuentan con un único servidor físico para: validar usuarios, administrar impresoras, compartir archivos, portal colaborativo e inclusive respaldar su información.

La necesidad:

Resguardar su información y asegurar que el plan de recuperación funcione en caso de desastre.

La solución:

nos permite crear escenarios confiables para garantizar la continuidad del negocio.  No solo se trata de mover o copiar lo que tenemos localmente sino aplicar buenas prácticas que garanticen la continuidad del negocio.

En el siguiente diagrama mostramos el siguiente escenario que iré explicando por etapas.

image

Etapa 1: Crear ambiente híbrido

image

Primero lo primero y es crear un ambiente hibrido entre la red local y Azure.  Para ello hacemos lo siguiente:

    1. Creamos una suscripción en Azure
    2. Definimos una red virtual en Azure
    3. Creación un enlace VPN Sitio a Sitio entre el dispositivo VPN del cliente y Azure

 

Resultado:   Desde Azure podemos ver la red local y desde la red local podemos ver la red virtual de Azure

Etapa 2: Garantizar la autenticación Usuarios ambos ambientes

Esto es lo primordial luego de crear el ambiente hibrido especialmente que en esta caso tienen un único servidor que si les sucede algo la red es inaccesible.  Para este caso no utilizaremos Azure Active Directory ya que este solo cubre la autenticación de los usuarios de las aplicaciones en la nube y no la redundancia que deseamos lograr en caso de falla del servidor local.  

image

Los pasos son los siguientes:

    1. Crear un Sitio en el Active Directory local para Azure
    2. Crear una subnet para Azure
    3. Crear un grupo de Afinidad en el portal de Azure
    4. Crear un Maquina Virtual en Azure con Windows Server 2012 TIPO A1 con disco 10 GB.  Tenga el cuidado cuando crear la maquina virtual en azure seleccionar Create an avialability set en la casilla AVAILABILITY SET para asegurar la alta disponibilidad en
    5. Instalar Servicios de dominio de Active Directory y promover este servidor a un controlador de dominio de réplica en un dominio de Active Directory existente e incluya el servicio del DNS.
    6. Repetir pasos 4 y 5 para el Controlador de Dominio no. 2.

https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-install-replica-active-directory-domain-controller/

image

Resultado: Con este etapa 2 garantizamos la alta disponibilidad para la autenticación de usuarios locales en ambos amientes y la resolución de nombres para mantener la red corriendo.

Etapa 3: Crear las copias de Respaldo en la nube

Ahora  lo que sigue es almacenar las copias de respaldo en Azure para garantizar su restauración, esto es mucho más seguro ya que geográficamente esta a miles de millas de distancia, tiene 3 copias de forma predeterminada en Azure y si seleccionamos la Georeplicación estarán 3 copias más replicadas a 4 mil millas de distancia del centro de datos primario.

image

Los pasos a realizar son:

  1. Crear un backup Vault en el portal de Azure  (Seleccione GeoRepliación)
  2. Descargar la credencia de Vault
  3. Descargar e instalar el agente Backup
  4. Calendarice el Backup
  5. Pruebe el Backup

https://azure.microsoft.com/en-us/documentation/articles/backup-configure-vault/

image

Resultado:   Tiene la copia de respaldo encriptado  a miles de millas de distancia con 3 copias encriptado y 3 copias mas a 4 mil millas de distancia del centro de datos primario.  Con eso se garantiza que tendrá disponible el respaldo cuando lo necesite.

Etapa 4:  Crear las maquinas virtuales que desea recuperar en caso de desastre

Ahora vamos a crear las máquinas virtuales para los servicios Impresión y colaboración con SharePoint Foundation.  A diferencia del ambiente local donde en un solo servidor tienen todos los servicios creados aquí separaremos los servicios en 3 servidores, esto reducirá el riesgo y nos permitirá fácilmente habilitar alta disponibilidad cuando así lo deseemos.

Servidor de Impresora

Aunque es cuestionable tener el servidor de impresora en la nube por el tiempo de atraso que esta sufre, mejor es tenerla lejos que no tenerla.

image

Procedemos a realizar los siguientes pasos:

  1. Cree un Servidor Virtual con Windows Server 2012 en el portal de Azure
  2. Importe en el Servidor en Azure las Impresoras
  3. Pruebe el nuevo servidor con una estación de trabajo de la red y vea que funcione

Servidor de base de datos

Este servidor es para almacenar las bases de datos de SharePoint Foundation.  Con la versión SQL Server 2012 Standard es suficiente para esta versión ya que no tiene servicios sofisticados que requieran de inteligencia de negocios.  Aquí podemos decidir de utilizar una licencia disponible para SQL Server o bien que nos incluya el licenciamiento.  Si poseemos MSDN podemos utilizar una de estas licencias ya que es un centro de datos para desastres y no para producción. SharePoint no soporta SQL Azure o Azure Database por lo que necesitamos una virtual con Windows Server y SQL Server.

image

Por ser un servidor de base de datos para SharePoint por la naturaleza de SharePoint que es un workload, sugerimos un servidor A6.

Los requisitos de SQL Server para SharePoint Foundation puede consultarlos en los siguientes enlaces:

https://technet.microsoft.com/es-gt/library/cc262485.aspx

http://blogs.msmvps.com/shane/2012/09/17/a-simple-install-of-sql-server-2012-for-sharepoint-server-2013-or-2010/

Luego de instalado SQL Server será adecuado restaurar los respaldos de las bases de datos almacenadas en Azure y así validar que los respaldos funcionan.

Servidor Web (Front-End SharePoint)

Para este servidor sugerimos un A5, una configuración aceptable para un servidor Web con SharePoint instalado.

A continuación el enlace oficial para descargar SharePoint Foundation 2013:http://www.microsoft.com/es-es/download/details.aspx?id=35488

image

Los pasos son lo siguientes:

  1. Cree la virtual en el portal de Azure con Windows server 2012 con una máquina A5 y dos discos uno de 250 GB y el otro con el espacio necesario para almacenar el índice, logs y otros archivos (100 GB).
  2. Reutilice las cuentas que uso para instalar el SharePoint local o bien cree nuevas.
  3. Ejecute la media, instale los prerrequisitos de SharePoint 2013.
  4. Instale los bits de SharePoint 2013 y conéctese al nuevo servidor de base de datos en Azure.
  5. Configure todos los servicios, cree la aplicación Web para hospedar las bases de datos recuperadas.

image

Servidor de Archivos

Este servidor no es necesario crearlo ya que podemos utilizar el servicio de File Storage en Azure o bien utilizar SharePoint como repositorio de Archivos.  En este caso vamos a crear el servicio de File Storage de Azure para disponer el servicio cuando se necesite.  

files-concepts

Los pasos son los siguientes:

  1. Crear una cuenta de Almacenamiento en Azure.
  2. Crear un File Share en Azure para ello es necesario powershell.
  3. Mapee un drive al File Share.

https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-files/

Bueno el ultima etapa será automatizar el proceso de recuperación con Site Recovery Services pero esto lo dejaremos para otro artículo, suficiente información para digerir y evaluar cada una de las opciones disponibles para migrar nuestro centro de datos incluyendo SharePoint 2013 a la nube de Microsoft: Azure.

Espero sea de su utilidad Azure4Fun & SharePoint4Fun!,

Juan Manuel Herrera Ocheita