Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/22/13 15:29:15 (12 years ago)
Author:
fschoepp
Message:

#1888:
HL:

  • Web projects requires different users to interact with hive. The singleton HiveServiceLocator.Instance doesn't allow different users at the same time, resulting in serialization during access of HiveClient methods.

The following changes have been introduced in favor of a parallel use of the HL libs:

  • HiveClient, TaskDownloader and ConcurrentTaskDownloader may now use a different IHiveServiceLocator than HiveServiceLocator.Instance (all methods have appropriate overloads now).
  • The default instance is still HiveServiceLocator.Instance.

Automated Scaling of Instances:

  • Added Scaler project to solution which represents a WorkerRole that scales the slave instances based on the global cpu utilization of all slaves.
  • Scaler is based on WASABi, rules can be adjusted in rulesstore.xml. Basic rule is: if < 45% global cpu utilization => remove an instance; if > 65% cpu => add an instance. Minimum boundary is 1 and maximum boundary is 8 slave instances.
  • Adjusted Slave project to automatically register itself to a SlaveGroup during WebRole startup (can be adjusted in service configuration).

Web-Frontend:

  • Added basic error messages to the dialogs when an ajax call fails.
  • Removed Styling.js from scripts.
Location:
branches/OaaS/HeuristicLab.Services.Optimization
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/OaaS/HeuristicLab.Services.Optimization/HeuristicLab.Services.Optimization.ccproj

    r8817 r9508  
    3838  </ItemGroup>
    3939  <ItemGroup>
     40    <ProjectReference Include="..\HeuristicLab.Services.Hive.Scaler\HeuristicLab.Services.Optimization.Scaler.csproj">
     41      <Name>HeuristicLab.Services.Optimization.Scaler</Name>
     42      <Project>{d03b1a10-9c88-4c4b-bccf-4f98cde863d3}</Project>
     43      <Private>True</Private>
     44      <RoleType>Worker</RoleType>
     45      <RoleName>HeuristicLab.Services.Optimization.Scaler</RoleName>
     46      <UpdateDiagnosticsConnectionStringOnPublish>True</UpdateDiagnosticsConnectionStringOnPublish>
     47    </ProjectReference>
    4048    <ProjectReference Include="..\HeuristicLab.Services.Hive.WebRole\HeuristicLab.Services.Hive.WebRole.csproj">
    4149      <Name>HeuristicLab.Services.Hive.WebRole</Name>
  • branches/OaaS/HeuristicLab.Services.Optimization/ServiceConfiguration.Cloud.cscfg

    r9371 r9508  
    11<?xml version="1.0" encoding="utf-8"?>
    22<ServiceConfiguration serviceName="HeuristicLab.Services.Optimization" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*" schemaVersion="2012-05.1.7">
    3   <Role name="HeuristicLab.Services.Hive.WebRole">
    4     <Instances count="1" />
    5     <ConfigurationSettings>
    6       <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="ADJUST_ME" />
    7       <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled" value="true" />
    8       <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername" value="ADJUST_ME" />
    9       <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword" value="ADJUST_ME" />
    10       <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration" value="ADJUST_ME" />
    11       <Setting name="Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled" value="true" />
    12     </ConfigurationSettings>
    13     <Certificates>
    14       <Certificate name="ADJUST_ME" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
    15       <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
    16     </Certificates>
    17   </Role>
    183  <Role name="HeuristicLab.Services.Optimization.Web">
    194    <Instances count="1" />
    205    <ConfigurationSettings>
    21       <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="ADJUST_ME" />
     6      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=ADJUST_ME;AccountKey=ADJUST_ME"/>
    227      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled" value="true" />
    238      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername" value="hive" />
    249      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword" value="ADJUST_ME" />
    2510      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration" value="ADJUST_ME" />
    26       <Setting name="Cloudia.WindowsAzure.Storage" value="ADUST_ME" />
     11      <Setting name="Cloudia.WindowsAzure.Storage" value="DefaultEndpointsProtocol=https;AccountName=ADJUST_ME;AccountKey=ADJUST_ME" />
    2712      <Setting name="HiveEndpointName" value="WSHttpBinding_Remote_IHiveService" />
    2813      <Setting name="ControllerEndpointName" value="WSHttpBinding_Remote_IControllerService" />
     
    3015    <Certificates>
    3116      <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
    32       <Certificate name="ADJUST_ME" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
     17      <Certificate name="localhost" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
     18    </Certificates>
     19  </Role>
     20  <Role name="HeuristicLab.Services.Optimization.Scaler">
     21    <Instances count="1" />
     22    <ConfigurationSettings>
     23      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=ADJUST_ME;AccountKey=ADJUST_ME" />
     24      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled" value="true" />
     25      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername" value="hive" />
     26      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword" value="ADJUST_ME" />
     27      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration" value="ADJUST_ME" />
     28      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled" value="true" />
     29      <Setting name="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=ADJUST_ME;AccountKey=ADJUST_ME" />
     30      <Setting name="TraceTable" value="ScalerTraceTable" />
     31      <Setting name="TraceTableEnabled" value="false" />
     32    </ConfigurationSettings>
     33    <Certificates>
     34      <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
     35      <Certificate name="Azure Service Management" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
     36    </Certificates>
     37  </Role>
     38  <Role name="HeuristicLab.Services.Hive.WebRole">
     39    <Instances count="1" />
     40    <ConfigurationSettings>
     41      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=ADJUST_ME;AccountKey=ADJUST_ME" />
     42      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled" value="true" />
     43      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername" value="hive" />
     44      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword" value="ADJUST_ME" />
     45      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration" value="ADJUST_ME" />
     46    </ConfigurationSettings>
     47    <Certificates>
     48      <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
     49      <Certificate name="localhost" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
    3350    </Certificates>
    3451  </Role>
  • branches/OaaS/HeuristicLab.Services.Optimization/ServiceConfiguration.Local.cscfg

    r9371 r9508  
    11<?xml version="1.0" encoding="utf-8"?>
    22<ServiceConfiguration serviceName="HeuristicLab.Services.Optimization" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*" schemaVersion="2012-05.1.7">
     3  <Role name="HeuristicLab.Services.Optimization.Web">
     4    <Instances count="1" />
     5    <ConfigurationSettings>
     6      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
     7      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled" value="true" />
     8      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername" value="hive" />
     9      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword" value="ADJUST_ME" />
     10      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration" value="ADJUST_ME" />
     11      <Setting name="Cloudia.WindowsAzure.Storage" value="DefaultEndpointsProtocol=https;AccountName=ADJUST_ME;AccountKey=ADJUST_ME" />
     12      <Setting name="HiveEndpointName" value="WSHttpBinding_Local_IHiveService" />
     13      <Setting name="ControllerEndpointName" value="WSHttpBinding_Local_IControllerService" />
     14    </ConfigurationSettings>
     15    <Certificates>
     16      <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
     17      <Certificate name="localhost" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
     18    </Certificates>
     19  </Role>
     20  <Role name="HeuristicLab.Services.Optimization.Scaler">
     21    <Instances count="1" />
     22    <ConfigurationSettings>
     23      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=ADJUST_ME;AccountKey=ADJUST_ME" />
     24      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled" value="true" />
     25      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername" value="hive" />
     26      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword" value="ADJUST_ME" />
     27      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration" value="ADJUST_ME" />
     28      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled" value="true" />
     29      <Setting name="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=ADJUST_ME;AccountKey=ADJUST_ME" />
     30      <Setting name="TraceTable" value="ScalerTraceTable" />
     31      <Setting name="TraceTableEnabled" value="true" />
     32    </ConfigurationSettings>
     33    <Certificates>
     34      <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
     35      <Certificate name="Azure Service Management" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
     36    </Certificates>
     37  </Role>
    338  <Role name="HeuristicLab.Services.Hive.WebRole">
    439    <Instances count="1" />
     
    944      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword" value="ADJUST_ME" />
    1045      <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration" value="ADJUST_ME" />
    11       <Setting name="Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled" value="true" />
    12     </ConfigurationSettings>
    13     <Certificates>
    14       <Certificate name="ADJUST_ME" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
    15       <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
    16     </Certificates>
    17   </Role>
    18   <Role name="HeuristicLab.Services.Optimization.Web">
    19     <Instances count="1" />
    20     <ConfigurationSettings>
    21       <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
    22       <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled" value="true" />
    23       <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername" value="hive" />
    24       <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword" value="ADJUST_ME" />
    25       <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration" value="ADJUST_ME" />
    26       <Setting name="Cloudia.WindowsAzure.Storage" value="ADJUST_ME" />
    27       <Setting name="HiveEndpointName" value="WSHttpBinding_Local_IHiveService" />
    28       <Setting name="ControllerEndpointName" value="WSHttpBinding_Local_IControllerService" />
    2946    </ConfigurationSettings>
    3047    <Certificates>
    3148      <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
    32       <Certificate name="ADJUST_ME" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
     49      <Certificate name="localhost" thumbprint="ADJUST_ME" thumbprintAlgorithm="sha1" />
    3350    </Certificates>
    3451  </Role>
  • branches/OaaS/HeuristicLab.Services.Optimization/ServiceDefinition.build.csdef

    r9363 r9508  
    1010-->
    1111<ServiceDefinition name="HeuristicLab.Services.Optimization" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-05.1.7">
    12   <WebRole name="HeuristicLab.Services.Hive.WebRole" vmsize="Small">
    13     <Sites>
    14       <Site name="Web">
    15         <Bindings>
    16           <Binding name="HttpIn" endpointName="HttpIn" />
    17         </Bindings>
    18       </Site>
    19     </Sites>
    20     <Endpoints>
    21       <InputEndpoint name="HttpIn" protocol="http" port="80" localPort="80" />
    22     </Endpoints>
    23     <Imports>
    24       <Import moduleName="Diagnostics" />
    25       <Import moduleName="RemoteAccess" />
    26       <Import moduleName="RemoteForwarder" />
    27     </Imports>
    28     <LocalResources>
    29       <LocalStorage name="HeuristicLab.Services.Hive.WebRole.svclog" sizeInMB="1000" cleanOnRoleRecycle="false" />
    30     </LocalResources>
    31     <Certificates>
    32       <Certificate name="localhost" storeLocation="LocalMachine" storeName="My" />
    33     </Certificates>
    34     <Contents>
    35       <Content destination=".\">
    36         <SourceDirectory path="rcf/Debug/HeuristicLab.Services.Hive.WebRoleContent\" />
    37       </Content>
    38     </Contents>
    39   </WebRole>
    4012  <WebRole name="HeuristicLab.Services.Optimization.Web" vmsize="Small">
    4113    <Sites>
     
    6234    </ConfigurationSettings>
    6335  </WebRole>
     36  <WorkerRole name="HeuristicLab.Services.Optimization.Scaler" vmsize="Small">
     37    <Runtime executionContext="elevated" />
     38    <Imports>
     39      <Import moduleName="Diagnostics" />
     40      <Import moduleName="RemoteAccess" />
     41      <Import moduleName="RemoteForwarder" />
     42    </Imports>
     43    <ConfigurationSettings>
     44      <Setting name="StorageConnectionString" />
     45      <Setting name="TraceTable" />
     46      <Setting name="TraceTableEnabled" />
     47    </ConfigurationSettings>
     48    <Certificates>
     49      <Certificate name="Azure Service Management" storeLocation="CurrentUser" storeName="My" />
     50    </Certificates>
     51  </WorkerRole>
     52  <WebRole name="HeuristicLab.Services.Hive.WebRole" vmsize="Small">
     53    <Sites>
     54      <Site name="Web">
     55        <Bindings>
     56          <Binding name="Endpoint1" endpointName="Endpoint1" />
     57        </Bindings>
     58      </Site>
     59    </Sites>
     60    <Endpoints>
     61      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
     62    </Endpoints>
     63    <Imports>
     64      <Import moduleName="Diagnostics" />
     65      <Import moduleName="RemoteAccess" />
     66    </Imports>
     67    <Certificates>
     68      <Certificate name="localhost" storeLocation="LocalMachine" storeName="My" />
     69    </Certificates>
     70    <Contents>
     71      <Content destination=".\">
     72        <SourceDirectory path="rcf/Debug/HeuristicLab.Services.Hive.WebRoleContent\" />
     73      </Content>
     74    </Contents>
     75  </WebRole>
    6476</ServiceDefinition>
  • branches/OaaS/HeuristicLab.Services.Optimization/ServiceDefinition.csdef

    r9166 r9508  
    11<?xml version="1.0" encoding="utf-8"?>
    22<ServiceDefinition name="HeuristicLab.Services.Optimization" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-05.1.7">
    3   <WebRole name="HeuristicLab.Services.Hive.WebRole" vmsize="Small">
    4     <Sites>
    5       <Site name="Web">
    6         <Bindings>
    7           <Binding name="HttpIn" endpointName="HttpIn" />
    8         </Bindings>
    9       </Site>
    10     </Sites>
    11     <Endpoints>
    12       <InputEndpoint name="HttpIn" protocol="http" port="80" localPort="80" />
    13     </Endpoints>
    14     <Imports>
    15       <Import moduleName="Diagnostics" />
    16       <Import moduleName="RemoteAccess" />
    17       <Import moduleName="RemoteForwarder" />
    18     </Imports>
    19     <LocalResources>
    20       <LocalStorage name="HeuristicLab.Services.Hive.WebRole.svclog" sizeInMB="1000" cleanOnRoleRecycle="false" />
    21     </LocalResources>
    22     <Certificates>
    23       <Certificate name="localhost" storeLocation="LocalMachine" storeName="My" />
    24     </Certificates>
    25   </WebRole>
    263  <WebRole name="HeuristicLab.Services.Optimization.Web" vmsize="Small">
    274    <Sites>
     
    4825    </ConfigurationSettings>
    4926  </WebRole>
     27  <WorkerRole name="HeuristicLab.Services.Optimization.Scaler" vmsize="Small">
     28    <Runtime executionContext="elevated" />
     29    <Imports>
     30      <Import moduleName="Diagnostics" />
     31      <Import moduleName="RemoteAccess" />
     32      <Import moduleName="RemoteForwarder" />
     33    </Imports>
     34    <ConfigurationSettings>
     35      <Setting name="StorageConnectionString" />
     36      <Setting name="TraceTable" />
     37      <Setting name="TraceTableEnabled" />
     38    </ConfigurationSettings>
     39    <Certificates>
     40      <Certificate name="Azure Service Management" storeLocation="CurrentUser" storeName="My" />
     41    </Certificates>
     42  </WorkerRole>
     43  <WebRole name="HeuristicLab.Services.Hive.WebRole" vmsize="Small">
     44    <Sites>
     45      <Site name="Web">
     46        <Bindings>
     47          <Binding name="Endpoint1" endpointName="Endpoint1" />
     48        </Bindings>
     49      </Site>
     50    </Sites>
     51    <Endpoints>
     52      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
     53    </Endpoints>
     54    <Imports>
     55      <Import moduleName="Diagnostics" />
     56      <Import moduleName="RemoteAccess" />
     57    </Imports>
     58    <Certificates>
     59      <Certificate name="localhost" storeLocation="LocalMachine" storeName="My" />
     60    </Certificates>
     61  </WebRole>
    5062</ServiceDefinition>
Note: See TracChangeset for help on using the changeset viewer.