Setting Up Ektron in the Azure Cloud
This document contains step-by-step instructions to set up and run Ektron applications in Windows Azure Cloud.
Before you install or use Ektron in the Windows Azure Cloud, Ektron Administrators and Developers should read this document. First build the system for On Premises use and then follow the instructions in this documentation to get it running in cloud. You also should understand the following:
Windows Azure hosting requires Windows Live-ID sign on using your email address and subscription, which can be purchased from Microsoft at http://www.windowsazure.com. When you have the subscription, go to https://manage.windowsazure.com and log in using your Live-ID and password.
EktronCloud.cer
from the following path:~\Program Files (x86)\Ektron\CMS400v8x\AzureCerts
~\Program Files\Ektron\CMS400v8x\AzureCerts
NOTE: This is an optional step. If you do not create the hosted service, Ektron will create it for you.
mydomain
then your URL will be mydomain.cloudapp.net
, which is used to configure the CNAME rec and location.You need a storage account to store site resources in the cloud storage service, and to store and synchronize assets, private assets, uploaded files, uploaded images and asset library. To create a storage account:
Content Delivery Network (CDN) serves files faster from distributed servers. For better performance, Ektron recommends that you define the endpoint for your storage accounts. To create a CDN endpoint:
To set up a firewall rule in an SQL database, including the IP Address from your pre-production and development machines:
You need to create a service namespace for service bus and caching services. Azure does not support sticky sessions, so you need to use the caching service for your caching for more than one instance or load balancing.
Use the service bus to connect to On Premises services for search or any custom-driven services, because there are no search servers in the cloud. Ektron's hybrid deployment model lets you make changes to and run searches on On Premises servers. You can use eSync to deploy the change data to the cloud.
To create a service namespace:
myappfabricservice
) in the Namespace field.IMPORTANT: You must first install EktronCloudSetup.exe. See Download and Install EktronCloudSetup.exe. You must also upload the certificate to the portal and configure it to the cloud service before following this procedure.
http://
and place a trailing slash (/
) on the end.~\sync\azuredeploy\{subscription-id}\{servicename}\package\{servicename}.cspkg
An advanced user can copy the Web.Cloud.config
file from Ektron Windows service (~\Program Files (x86)\Ektron\CMS400v8x\AzureConfig)
.
In the View Azure Hosted Services screen (Workarea > Settings > Configuration > Cloud Manager), you can modify cloud instances in the following ways:
Ektron uses the unity
section of your cloud web.config
file to configure a storage destination. Follow these steps:
configSections
section:<section name="unity.storage" type="Ektron.Unity.Configuration.UnityConfigurationSection, Ektron.Unity.Configuration, Version=2.0.414.0, Culture=neutral, PublicKeyToken=1e97f90fc2b998db"/>
unity.storage
as follows:<unity.storage> <assembly name="Ektron.Storage"/> <assembly name="Ektron.Cloud"/> <namespace name="Ektron.Cloud.Azure.Storage"/> <namespace name="Ektron.Storage"/> <container name="storageContainer"> <register type="IFileService" mapTo="CloudFileService"/> <register type="IDirectoryService" mapTo="CloudDirectoryService"/> </container> </unity.storage>
NOTE: Caching configuration is required only if you run more than 1 instance (load balancing). You can get the section values from the portal.
In your cloud web.config
file, do the following:
configSections
section:<section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere"/>
dataCacheClients
as follows:<dataCacheClients> <dataCacheClient name="default"> <host><host name="[yournamespace].cache.windows.net" cacheport="22233" /></hosts> <securityProperties mode="Message"> <messageSecurity authorizationInfo="[yoursecretkeyinfo]"/> </securityProperties> </dataCacheClient> <dataCacheClient name="SslEndpoint"> <host> <host name="ektron.cache.windows.net" cacheport="22243"/> </hosts> <securityProperties mode="Message" sslEnbaled="true"> <messageSecurity authorizationInfo="[yoursecretkeyinfo]"/> </securityProperties> </dataCacheClient> </dataCacheClients>
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider"> <providers> <add name="AppFabricCacheSessionStoreProvider" type="Microsoft.Web.DistributedCache. DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" useBlobMode="true" dataCacheClientName="default" /> </providers> </sessionState>
Compile the project with Visual Studio 2010, or use the msbuild
command as follows:
msbuild yourcloudproject.ccproj /p:Configuration=Release /t:Build;Publish
yourprojectname.cspkg
and ServiceConfiguration.Cloud.cscfg
into your newly created hosted service.NOTE: After you create the deployment, the set up on the cloud takes some time before the files are ready to be accessed.
Ektron’s sync technology, built on the Microsoft Sync Framework, synchronizes information between the Azure cloud and On Premises data repositories. eSync makes it easy to manage content changes through a true hybrid cloud deployment.
When you run eSync. SQL data and file system resources (such as ~/assets
, ~/privateassets
, ~/uploadedfiles
, ~/uploadedimages
, assetlibrary
) are synched to SQL Database Cloud BLOB Storage .
To create a search in the Windows Azure Cloud environment, use Ektron’s hybrid deployment model. Search requests are sent to your pre-production server, which is identical to your cloud server. You make changes on the pre-production server, and the Cloud server displays the changes. To set up a search in the Windows Azure Cloud environment:
web.config
file, modify the following settings:<extensions> <behaviorExtensions> <add name="ServiceRegistrySettings" type="Ektron.Cloud.ServiceRegistry. ServiceRegistrySettingsElement, Ektron.Cloud" /> </behaviorExtensions> </extensions>
web.config
file, add the endpoint under Ektron.Cms.Search.SearchManager
:<endpoint address="sb://yourservicebus.servicebus. windows.net/SearchNetTcp/" behaviorConfiguration="sharedSecretClientCredentials" binding="netTcpRelayBinding" bindingConfiguration="NetTcpRelayEndpointConfig" name="RelayEndpoint" contract="Ektron.Cms.Search.ISearchManager" /> <netTcpRelayBinding> <binding name="NetTcpRelayEndpointConfig"> <security relayClientAuthenticationType="RelayAccessToken" /> </binding> </netTcpRelayBinding> <endpointBehaviors> <behavior name="sharedSecretClientCredentials"> <transportClientEndpointBehavior credentialType="SharedSecret"> <clientCredentials> <sharedSecret issuerName="owner" issuerSecret="yourissuersecret" /> </clientCredentials> </transportClientEndpointBehavior> <ServiceRegistrySettings discoveryMode="Public" /> </behavior> </endpointBehaviors>
web.config
file, change the appsettings, extension and binding
section:<add key="ek_servicespath" value ="http://yourserver/workarea/services"/> <add key="serviceBusNamespaceDomain" value="yourdomain"/> <add key="serviceBusIssuerName" value="owner"/> <add key="serviceBusIssuerSecret" value="yoursecret"/> <add key="serviceBusPath" value="SearchNetTcp"/> <extensions> <behaviorExtensions> <add name="ServiceRegistrySettings" type="Ektron.Cloud.ServiceRegistry. ServiceRegistrySettingsElement, Ektron.Cloud" /> </behaviorExtensions> <bindingExtensions> <add name="netTcpRelayBinding" type="Microsoft.ServiceBus.Configuration. NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </bindingExtensions> </extensions> <netTcpRelayBinding> <binding name="RelayEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transferMode="Buffered" connectionMode="Relayed" listenBacklog="10" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" /> <security mode="Transport" relayClientAuthenticationType="RelayAccessToken"> <transport protectionLevel="EncryptAndSign" /> <message clientCredentialType="Windows" /> </security> </binding> </netTcpRelayBinding>