Orleans Remote Deployment

Table of Contents

Overview: 1

Prerequisites. 2

Deployment Steps. 2

Orleans Deployment Manifest 3

Orleans Silo Configuration. 4

Gateway Load Shedding. 5

Orleans Powershell Scripts. 6

Deploying Orleans using Powershell Script 6

Confirming Orleans Status. 7

Monitoring Orleans. 7

Gathering Orleans Log Files. 8

Removing Orleans. 8

 

Overview:

Orleans based services are xcopy deployable. All you need to do to deploy an Orleans based service to a set of machines is copy the following set of file to the target machines and start the OrleansHost.exe host process:

  • ·       Content of [SDK-Root]\Binaries\OrleansServer folder
  • ·       OrleansConfiguration.xml file with configuration for the deployment to replace the default placeholder from [SDK-Root]\Binaries\OrleansServer
  • ·       Binaries with grain interfaces and grain implementation classes of the service along with any external dependencies to Application\<service name> subdirectory of the folder on the target with binaries from [SDK-Root]\Binaries\OrleansServer

This simple task may be accomplished in many different ways and with different tools, such as Autopilot. The SDK includes a set of PowerShell scripts that provide a way to deploy an Orleans based service to a cluster of machines and remote start the hosting processes on them. There are also scripts for un-deploying a service, monitoring its performance, start and stop it, and collect logs. These are the scripts we found useful for ourselves while building and testing Orleans.

Prerequisites

The following table lists the prerequisites for deploying and running Orleans on a remote machine:

Prerequisite

Details

.Net Framework 4.0

Orleans runs under the .Net Framework 4.0, which can be installed from this link: http://www.microsoft.com/downloads/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992&displaylang=en

Powershell 2.0 with WinRM

Windows 7 and Windows Server 2008 R2 should have these installed by default. 

For other versions of windows, select the appropriate download from this
article: http://support.microsoft.com/kb/968929

To confirm you are running the required version of
PowerShell, start a PowerShell window and type Get-Host –  the resulting output needs to say “Version: 2.0”

WinRM Configuration

Both the source and target machines must be configured
for remote operations: Open a PowerShell window as an Administrator and run
the command below on the target machine (enter ‘y’ at the prompts):

winrm quickconfig

Increase PowerShell job memory

Set the memory limit
on remotely invoked jobs to 4Gb:

Set-Item
wsman:localhost\Shell\MaxMemoryPerShellMB 4096

To change it on a
remote machine, use the following steps:

  • ·      
    Connect-WSMan
    -ComputerName <string>
  • ·      
    Set-Item wsman:<computerName>\Shell\MaxMemoryPerShellMB
  • ·      
    Disconnect-WSMan
    –ComputerName <string>

PowerShell Execution Policy set to run remote scripts

Open a PowerShell window as an Administrator and run the command
below on the target machine(enter ‘y’ at the prompt):

Set-ExecutionPolicy RemoteSigned

This will set the machine to require signing for remote scripts
only.

Deployment Steps

Note that the user running the scripts
must be a member of the Administrators Group on the remote machines.

The basic steps are as follows:

1.      
Setup a deployment manifest
(Deployment.xml).

2.      
Adjust the Orleans
Configuration (OrleansConfiguration.xml) to suit the environment.

3.      
Run the PowerShell deployment
scripts to deploy Orleans into your remote environment.

Orleans Deployment Manifest

The Orleans Deployment scripts use a
manifest (XML) file to specify details of the deployment, including source and
destination locations and local or remote machines to be deployed to.

By making small changes to an existing
deployment manifest xml file (typically by listing the different host
machines), the same PowerShell scripts can deploy and run that Orleans system
on a set of remote machines with equal ease as deploying and running that
system on the local machine.

The default file name for the manifest
is Deployment.xml, and if you just modify this file, it will not be necessary
to specify a different name.  There are
times, such as during testing, it may be advantageous to maintain multiple
deployment files that specify a different set of silos.  These other files may be specified explicitly
to the deployment tools as specified in the respective sections below.

A Deployment manifest contains many
different items, which collectively allow deployment of the Orleans runtime and
applications onto a variety of local and remote configurations:

  • ·      
    Source location for the Orleans system runtime

o   Located in the “Path” attribute of the <Deployment><Packages><Package>
element where the “Type” attribute is set to “System”.

o   Typically: [ORLEANS-SDK]\Binaries\OrleansServer.

o  
Example: <Package Name="Orleans Runtime"
Type="System" Path="." />

  • ·      
    Source location for any
    additional Orleans applications / grains
    to be included in this Orleans system

o  
Also located in the
<Deployment><Packages><Package> nodes.

o  
The “Type” attribute must be set to “Application”.

o  
Use the “Filter” attribute to
constrain the files deployed

o  
<Package
Name="Chirper" Type="Application"
Path="..\Binaries\Applications\Chirper" />

  • ·      
    Source location for the server configuration file to be used by
    the Orleans host process

o  
Located in the “Path” attribute
<Deployment><RuntimeConfiguration> element.

o  
The file name must be OrleansConfiguration.xml – if necessary,
just change the path.

o  
Example: <RuntimeConfiguration
Path=".\OrleansConfiguration.xml" />

  • ·      
    Target location to install the Orleans
    server-side binaries on each machine.

    Typically: C:\Orleans (for test or production nodes) or [ORLEANS-SDK]\LocalSilo (for the local development silo).

o  
Located in the <Deployment><TargetLocation>
element.

o  
Must be an absolute path (i.e. no “..”
locations).

o  
Example: <TargetLocation
Path="C:\Orleans" />

  • ·      
    The set of silos (host machines and optional silo names) this Orleans system
    should to be deployed to.

o   Located in the <Deployment><Nodes><Node> elements.

o   Typically: Primary on localhost, or multiple machines with one silo each.

o   The “HostName” attribute specifies the machine name.

o   The “NodeName” attribute specifies the name of the silo.  Generally, this is arbitrary, with the
exception that if multiple silos will run
on any one machine, then silo names must be unique
.

o   Example:

<Nodes>

    <Node
HostName="MACHINE1" NodeName="Primary" />

    <Node
HostName="MACHINE2" NodeName="Node2" />

    <Node
HostName="MACHINE3" NodeName="Node3" />

<Nodes />

  • ·      
    Deployment Group ID – this is a GUID
    which distinguishes one Orleans runtime system from another, even if both
    Orleans systems are running on the same machines.

o  
Located in the
<Deployment> element.

o  
Example:

<Deployment


    Name="Deployment1"

    DeploymentGroup="F219832A-1EE1-45DA-B35D-0BB3060C9FDA"


    xmlns="urn:xcg-deployment">

Orleans Silo Configuration

Refer to the configuration guide - Orleans-Configuration.docx
- for information on how to configure silos.

Orleans Powershell Scripts

The following sections detail the
PowerShell scripts provided with Orleans to aid with deployment and monitoring.
(Use the /? option to get the latest usage info directly from the scripts.)

Script Name

Parameters

Description

DeployOrleansSilos.ps1

[$deploymentConfigFile]

Copies the Orleans files to machines specified in the
deploymentConfigFile (default is Deployment.xml).

UndeployOrleansSilos.ps1

[$deploymentConfigFile]

Stops and removes Orleans from the
deployment servers deploymentConfigFile (default is Deployment.xml).

MonitorOrleansSilos.ps1

[$deploymentConfigFile]

[$networkInstance]
[$samplesToLog] [$headerInterval]

[$repeatHeaderInFile

Monitors CPU, Memory, Network Send, and
Network Receive performance counters, and logs the data to files both as an
aggregate of all data, and in separate files for each server.  See usage text for details about the
parameters.

ShowOrleansSilos.ps1

[$deploymentConfigFile]

Does a quick survey of the deployment
silos and reports if Orleans is running on them.

GatherOrleansSiloLogs.ps1

[$deploymentConfigFile]

[$outputPath]

Retrieve all log files from deployment
silos and stores them in the specified output folder.

UtilityFunctions.ps1

none

Provides ancillary functionality to the
other scripts.

Deploying Orleans using Powershell
Script

Start a separate
PowerShell command window as an administrator.

Execute the DeployOrleansSilos.ps1script, providing the location of the deployment configuration file
(deployment.xml is the default and will be used if you don’t supply a value).

Examples:   .\DeployOrleansSilos.ps1

        .\DeployOrleansSilos.ps1
C:\Orleans\MyDeploy.xml

The deployment
will execute the following steps:

1.   
Stop any running instances of Orleans that are running on the
deployment machines.

2.   
Copy the Orleans files and any application files that are listed in
the deployment manifest.

3.   
When the copy is completed, start the silos.  This will pause after starting the first silo
so that it is available for the other silos to register with.

4.   
Pause to allow the start-up to complete.

5.   
Report the progress of the deployment.

When the deployment is complete, Orleans
is ready for clients to connect to it.

Confirming Orleans Status

To determine if Orleans is running on
the servers in the deployment manifest, run the ShowOrleansSilos.ps1 script.

If you have used a deployment manifest
file named something other than the default, specify it on the command line.

Examples:  
.\ShowOrleansSilos.ps1


        .\ShowOrleansSilos.ps1
C:\Orleans\MyDeploy.xml

Monitoring Orleans

Once Orleans is
deployed, you can start an optional script that will monitor the Orleans
deployment using standard performance counters. 
Run a dedicated PowerShell command prompt as an administrator, and
execute the .\MonitorOrleans.ps1
script to start monitor performance counters for an Orleans Deployment.

The following
parameters configure the monitoring to suit individual circumstances:

Parameter

Description

Default

DeploymentConfigFile

The deployment manifest used to install
Orleans.

Deployment.xml

NetworkInstance

The name of the network for the network performance counters.

corp

SamplesToLog

The number of samples to record in the
current run.   Use Ctrl-C to stop the
script sooner.

480 which taken in one minute intervals
should continue for eight hours

HeaderInterval

The number of samples to write before repeating the header.

10

RepeatHeaderInFile

If this switch is present, the header will
be repeated in the log file at the interval specified by the previous
parameter.

Only include the header at the top of the
file.

The script will
store the data in the following types listed below.  The files will be written to a folder called PerformanceData
under the directory where the monitoring script is run from.

File
Type

Description

FileNameBase

Machine Specific

Contains only the data for a single
machine.  If there are four machines in
the deployment, then there will be four of these files.

“PerfData-“ + the machine name  and the Date/Time stamp.

Combined

Contains all of the data for all machines consolidated into a
single file.

“ConsolidatedPerfData-“
+ the Date/Time stamp.

       

Gathering Orleans Log Files

To retrieve all log files from
deployment silos and store them in the specified output folder, run the GatherOrleansSiloLogs.ps1 script.

If you have used a deployment manifest
file named something other than the default, specify it on the command line.
You may also specify an output folder where the collected log files will be
stored otherwise a .\logs subdirectory will
be used by default.

Examples:  
.\GatherOrleansSiloLogs.ps1


        .\GatherOrleansSiloLogs.ps1
C:\Orleans\MyDeploy.xml

        .\GatherOrleansSiloLogs.ps1
C:\Orleans\MyDeploy.xml C:\MyLogs

Removing Orleans

When it is time to remove an Orleans
deployment, use the UndeployOrleansSilos.ps1 script.

If you have used a deployment manifest
file named something other than the default, specify it on the command line.

Examples:  
.\UnDeployOrleansSilos.ps1


        .\UnDeployOrleansSilos.ps1 C:\Orleans\MyDeploy.xml

ORLEANS REMOTE DEPLOYMENT的更多相关文章

  1. Spark如何使用Akka实现进程、节点通信的简明介绍

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  2. jboss-as 目录结构(转)

    jboss-as 目录结构(Directory Structure) Directory Description bin Contains startup, shutdown and other sy ...

  3. 升级、备份红帽PaaS openshift 上的 wordpress

    红帽提供了一个很稳定的PAAS服务平台:openshift!此博客即作为wordpress建在里面. 这里记录怎样升级与备份wordpress. 预备: 安装 openshift command li ...

  4. Jenkins 七: 部署到Tomcat

    在build.xml定义了打包target之后,我们可以将打包生成的war文件直接部署到tomcat. 1. 建立Tomcat用户. 打开Tomcat安装路径下的 conf/tomcat-users. ...

  5. Java RMI 入门案例

    Java Remote Method Invocation(Java RMI) 是一个 Java API, 执行远程方法的调用,相当于 Remote Procedure Calls(RPC).Java ...

  6. jboss-AS目录结构了解(资料摘取)

    Directory Description bin Contains startup, shutdown and other system-specific scripts. Basically al ...

  7. SPARK如何使用AKKA实现进程、节点通信

    SPARK如何使用AKKA实现进程.节点通信 <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 < ...

  8. Akka(9): 分布式运算:Remoting-远程构建式

    上篇我们讨论了Akka-Remoting.我们说Akka-Remoting是一种点对点的通讯方式,能使两个不同JVM上Akka-ActorSystem上的两个Actor之间可以相互沟通.Akka-Re ...

  9. 使用 dotnet core 和 Azure PaaS服务进行devOps开发(Web API 实例)

    作者:陈希章 发表于 2017年12月19日 引子 这一篇文章将用一个完整的实例,给大家介绍如何基于dotnet core(微软.NET的最新版本,支持跨平台,跨设备的应用开发,详情请参考 https ...

随机推荐

  1. 【吉光片羽】js横向滚动与浮动导航

    1.横向滚动,这个方法是见过最简洁的了. #demo { background: #FFF; overflow: hidden; border: 1px dashed #CCC; width: 117 ...

  2. .NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy

    当我们要接到一个新的项目的时候,我们第一时间想到的是用微软的MVC框架,但是你是否想过微软的MVC是不是有点笨重?我们这个项目用MVC是不是有点大材小用?有没有可以替代MVC的东西呢?看到这里也许你会 ...

  3. Java多线程系列--“JUC锁”07之 LockSupport

    概述 本章介绍JUC(java.util.concurrent)包中的LockSupport.内容包括:LockSupport介绍LockSupport函数列表LockSupport参考代码(基于JD ...

  4. 如何将Icon转成Bitmap

    最近工作中有个需求是将Icon转成带Alpha通道的Bitmap, 虽然网上有不少这方面的文章,但很多都是错的, 这里记录下,或许对后来人有用. 要实现这个功能,我们首先需要理解Icon的格式,我们可 ...

  5. 在github上写个人简历——最简单却又不容易的内容罗列

    前篇博客分享了一下自己初入github的过程,傻瓜式一步步搭建好主页后,终于该做正事儿了——写简历.在脑袋中构思了很多版本,最后终于决定,先写一个最传统的版本,于是我在箱子中翻出我word版本的简历, ...

  6. 基于Vue封装分页组件

    使用Vue做双向绑定的时候,可能经常会用到分页功能 接下来我们来封装一个分页组件 先定义样式文件 pagination.css ul, li { margin: 0px; padding: 0px;} ...

  7. DDD~领域事件应用篇(订单处理变得更清晰)

    回到目录 上一讲主要说了领域事件和领域总线,这并不是一个很容易理解的文章,所以本讲实例篇主要是为了补充上一讲的理论知识,本讲实例关注的是实际中的订单处理模块,我们知道,订单处理是电子商务的核心,往往在 ...

  8. Atitit  数据存储的分组聚合 groupby的实现attilax总结

    Atitit  数据存储的分组聚合 groupby的实现attilax总结 1. 聚合操作1 1.1. a.标量聚合 流聚合1 1.2. b.哈希聚合2 1.3. 所有的最优计划的选择都是基于现有统计 ...

  9. jQuery对 动态添加 的元素 绑定事件(on()的用法)

    从jQuery 版本 1.7 起,on() 方法是向被选元素添加事件处理程序的(官方推荐)首选方法. 当浏览器下载完一个页面的时候就开始渲染(翻译)HTML标签,然后执行css.js代码,在执行js代 ...

  10. js设置自动刷新

    如何实现刷新当前页面呢?借助js你将无所不能. 1,reload 方法,该方法强迫浏览器刷新当前页面.语法:location.reload([bForceGet])   参数: bForceGet, ...