我将通过SSL从Windows Azure与另一个公共Web服务进行通信.公共Web服务上的证书是自签名的.因此,我需要信任我的Windows Azure上的公共证书.
如何将证书(.cer)导入Windows Azure?管理门户仅允许导入带有私钥的证书.
我希望能够从正在运行的Web角色中获取名称(在创建托管服务时命名)和部署的位置(North Europe,Asia Anywere等).我不想依赖证书和订阅ID.
就像是:
// Current role name. Ex: WebRole_IN_0
RoleEnvironment.CurrentRoleInstance.Id
// Deployment id of the role. Ex: 44b522f7e8b94412b046bbab08116d87
RoleEnvironment.DeploymentId
Run Code Online (Sandbox Code Playgroud)
但只是返回部署名称和部署位置.
如果不使用订阅ID和证书文件通过REST API,这是否可行?
对于概念证明文件,我收集了有关Windows Azure的事实.剩下2个主题我无法找到明确的答案.
粘滞的会话/粘性负载平衡是不可能的,对吗?也许在Azure流量管理器(WATM)的帮助下有可能?
是否可以解决部署的单个实例,或者它们是否都在Azure的非透明墙后面?或者至少,运行时的实例是否可以确定自己的id或类似的东西,以便将其写入日志?
我正在尝试使用Microsoft网站上的指南,将2012年6月SDK版本中引入的新发布的基于角色的缓存替换为Windows Azure AppFabric缓存.
但是,在我的Web角色中检查"启用缓存(预览)"时,模拟器将无法成功实例化网站(模拟器日志:http://pastebin.com/dwbDvak2).它似乎陷入了某种循环.禁用Web角色缓存使其再次起作用.卸载所有以前的Azure SDK并重新安装1.7版本后,我得到了相同的结果.
Visual Studio告诉我"角色实例开始的时间比预期的要长.你想继续等待吗?" [是] [否].按是保持等待,并反复出现.
是否有人可能知道如何解决上述问题,或者可能尝试过新的Web角色缓存功能并让它在azure模拟器中工作?
谢谢.
更新:
我创建了一个新的解决方案,并添加了一个简单的MVC站点,添加了Web角色并启用了缓存,并且发生了同样的事情.所以,我看了一下事件查看器,发现了3个与该问题相关的条目:
Fault bucket 3034750239, type 5
Event Name: CLR20r3
Response: Not available
Cab Id: 0
Problem signature:
P1: cacheinstaller.exe
P2: 1.0.4655.0
P3: 4fb0f3f9
P4: CacheInstaller
P5: 1.0.4655.0
P6: 4fb0f3f9
P7: 11
P8: 47
P9: System.TypeLoadException
P10:
Attached files:
C:\Users\anan\AppData\Local\Temp\WEREA8F.tmp.WERInternalMetadata.xml
These files may be available here:
C:\Users\anan\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_cacheinstaller.e_1fbc3b72afb6acf93335ca8611850d289906c25_2ddaf529
Analysis symbol:
Rechecking for solution: 0
Report Id: 3138ba06-b344-11e1-a8d6-402cf41c1e07
Report Status: 0
Application: CacheInstaller.exe
Framework …Run Code Online (Sandbox Code Playgroud) 我正试图通过azure门户网站执行VIP交换,我收到错误:
Windows Azure无法在具有不同端点数的部署之间执行VIP交换.
我看得更近了,我看到了端点数的差异(生产中的2个与分期中的3个).
生产:
Input Endpoints
OUR.API:168.62.21.50:80
OUR.API:168.62.21.50:3389
Run Code Online (Sandbox Code Playgroud)
分期:
Input Endpoints
OUR.API:168.62.22.55:80
OUR.API:168.62.22.55:3389
OUR.API:168.62.22.55:8172
Run Code Online (Sandbox Code Playgroud)
端口80是web,3389是远程桌面.到现在为止还挺好.那个额外的港口8172来自哪里?应用程序中的任何内容都不会侦听端口80以外的任何内容.此外,临时和生产区域中的应用程序几乎完全相同 - 因此它必须是框架.缩小范围的任何步骤?
[编辑]另外,我的角色的ServiceDefinition.csdef只定义了一个端点:
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
</Endpoints>
Run Code Online (Sandbox Code Playgroud) 我有一个Azure Web角色.有时它会因异常或操作系统更新而被回收.这将包括或不包括VM重启.我想知道VM是重新启动还是只是WaIISHost.exe重新启动主机进程.
我怎样才能找到最简单的方法?
我需要在发布服务器和订阅服务器之间建立双向通信.这是为了方便前端MVC3应用程序使用关联过滤器定义订阅,然后将消息放到主题上.最后,MVC3控制器调用SubscriptionClient上的BeginReceive(),并等待响应.
问题似乎是创建和删除这些Subscription对象.开销很大,并且会使应用程序变慢.这并不是说要解决的各种限制,例如主题上的订阅数量不超过2000个.
在发布者和订阅者之间建立这种双向通信的最佳实践是什么?我们希望MVC3应用程序发布消息,然后等待对该确切消息的响应(通过CorrelationId属性和CorrelationFilter).我们已经缓存了NamespaceManager和MessagingFactory,因为它们在资源方面也非常昂贵,并且还因为我们被告知Service Bus使用显式配置模型,我们需要在角色启动期间预先创建大部分这些内容.
因此,这给我们带来了将请求与响应相关联的挑战,以及创建和删除订阅的巨大开销.还有什么更好的做法?我们应该保留SubscriptionClient的缓存,并每次交换过滤器吗?其他人都做了什么?我需要通过Web角色群集获得每秒5到10,000个MVC3请求的请求吞吐量.我们已经在使用AsyncController并在SubscriptionClient上使用异步BeginReceive().它似乎是数以千计的订阅的创建和删除,此时系统正在窒息.
UPDATE1: 根据此处提供的好建议,我们更新了此解决方案,以便在每个Web角色实例上保留SubscriptionClient对象的缓存.此外,我们已迁移到面向MessageSession的方法.
但是,这仍然没有缩放.似乎AcceptMessageSession()是一个非常昂贵的操作.MessageSession对象是否也应该被缓存并重新使用?每个打开的MessageSession对象是否都使用与服务总线的连接?如果是这样,这是否与订阅的并发连接配额相对应?
非常感谢.我想我们到了那里.Web上的大多数示例代码显示:在客户端上创建Topic(),然后是CreateSubscription(),然后是CreateSubscriptionClient(),然后是BeginReceive(),然后拆除所有对象.我只能说,如果你在现实生活中这样做,你的服务器就会被粉碎,你最快就能连接起来了.
我们需要通过这个东西每秒发出数千个请求,很明显这些对象必须被高速缓存和重用.那么,MessageSession还有另一个要缓存的项目吗?我将获得有趣的缓存,因为我们必须实现一个引用计数机制,其中一次只能给出一个对MessageSession的引用,因为这是针对http请求特定的请求/响应,我们不能有其他订阅者同时使用MessageSession对象.
UPDATE2: 好的,将MessageSession缓存以供重用是不可行的,因为它们只与订阅时的LockDuration一样长.这是一个无赖,因为最大LockDuration是5分钟.这些似乎是短期的pub/sub,而不是长期运行的分布式进程.看起来我们需要回到轮询Azure表.
摘要/评论 我们试图建立Service Bus,因为它具有规模潜力及其持久性和交付语义.但是,似乎有些情况下,它们之间的大量请求/响应不适合它.发布部分工作得很好,并且在后端拥有竞争的消费者是很好的,但是有一个前端请求等待定义的单一消费者响应,根本不能很好地扩展,因为MessageSessions需要太长时间才能完成通过AcceptMessageSession()或BeginAcceptMessageSession()创建,因为它们不适合缓存.
如果有人有另一种观点,我很乐意听到.
servicebus azure azure-web-roles asp.net-mvc-3 azureservicebus
这可能不是什么新鲜事,但我希望有人可以让我走上正轨,因为它在天蓝色部署期间有点混乱.我正在计划在Azure上进行部署.这就是我所拥有的
我的问题是,如果1.是暴露给公众的应用程序,而2.是1.为联邦安全(内部),我应该如何计划我的部署在azure记住1.将需要横向扩展有时后来跟两个wcf服务一起?我是否发布到一个云服务或如何?我的理解是,云服务是n-web/worker角色的逻辑容器.但是,如果你有2个网页鞋底,就像在这种情况下两个asp.net应用程序,哪一个成为默认的?
最好的问候萨蒂什
将我的Azure Web应用程序移动到SDK 2.1后,我开始了
'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment'的类型初始化程序引发了异常.
错误信息.这在本地环境中工作正常,但在Azure上出现上述错误.
我的web.config已经有以下条目:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.WindowsAzure.StorageClient"
publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.7.0.0" newVersion="1.7.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.WindowsAzure.ServiceRuntime"
publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.8.0.0" newVersion="1.8.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.WindowsAzure.Diagnostics"
publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
和
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
仍然没有在实时Azure中工作.有人可以帮帮我吗?
返回后,以下(Web)角色入口点会导致抛出以下异常.
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
Task.Run(() =>
{
// Anything can be here, but the lamdbda can be empty too...
}).Wait();
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
例外:
mscorlib.dll中出现'System.Threading.WaitHandleCannotBeOpenedException'类型的第一次机会异常
附加信息:不存在给定名称的句柄.
很明显,这是从框架中抛出的.这个例外似乎是无害的,我没有遇到任何问题.
我还好奇,为什么会这样呢?有没有办法在角色启动方法中运行异步代码而不会导致此类异常?
编辑:
这是异常的调用堆栈:
> mscorlib.dll!System.Threading.EventWaitHandle.OpenExisting(string name, System.Security.AccessControl.EventWaitHandleRights rights) Unknown
Microsoft.WindowsAzure.ServiceRuntime.dll!Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.StartRoleInternal() Unknown
Microsoft.WindowsAzure.ServiceRuntime.dll!Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.StartRole() Unknown
Microsoft.WindowsAzure.ServiceRuntime.dll!Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.StartRole.AnonymousMethod__2() Unknown
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() Unknown
[Native to …Run Code Online (Sandbox Code Playgroud) azure-web-roles ×10
azure ×8
.net ×2
asp.net ×1
c# ×1
cloud ×1
deployment ×1
servicebus ×1
task ×1