Date post: | 15-Jan-2015 |
Category: |
Technology |
Upload: | isuru-perera |
View: | 3,423 times |
Download: | 2 times |
Apache Stratos(Incubating)Hangout IVStratos Controller and CLI Internals13 August 2013
M. Isuru Tharanga Chrishantha Perera.Committer & PPMC Member of Apache Stratos (Incubating),
Senior Software Engineer at WSO2, Inc.
Agenda● What is Stratos Controller?● How does Stratos Controller communicate
with Cloud Controller?● Auto-scaling policies configuration● How does the Artifact Distribution
Coordinator work?● How CLI works?
2
High Level Architecture
3
Stratos Controller Workflow
4
So, What is Stratos Controller (SC)?● Basically, it’s Carbon + Set of Features
5
What is SC? (Cont.)● Mainly consists of User Interface
○ Tenant Management○ Cartridge Subscription
● Artifact Distribution Coordinator○ Responsible for distribution of artifacts
● Configuring Auto-Scaling Policies○ Configuring policies.xml in
<SC_HOME>/repository/conf
6
SC Components├── components
│ ├── org.apache.stratos.adc.mgt│ ├── org.apache.stratos.cartridge.mgt.ui│ ├── ...│ └── org.apache.stratos.tenant.mgt.ui
├── features
│ ├── adc
│ ├── ...│ └── manager
├── products
│ └── stratos-controller
└── service-stubs
├── org.apache.stratos.adc.mgt.stub └── org.apache.stratos.lb.cartridge.autoscaler.service.stub
7
SC Features● Register a Tenant.● View list of available Cartridges.● View list of subscribed Cartridges.● Subscribe to a Cartridge.● Unsubscribe from a Cartridge.● Connect to a data Cartridge while
subscribing to a Cartridge.● View subscribed Cartridge detailed
information.8
SC Features (Cont.)● Add domain mapping.● Remove domain mapping.● Synchronize repository.● Monitor logs of Cartridge instances.
9
Application Management Service methodsArtifact Id: org.apache.stratos.adc.mgtClass: org.apache.stratos.adc.mgt.service.ApplicationManagementService
/** * Get Available Cartridges * * @return Available Cartridges */public Cartridge[] getAvailableCartridges(boolean multiTenant)
throws ADCException;
/** * Get Subscribed Cartridges * * @return Subscribed Cartridges */public Cartridge[] getSubscribedCartridges() throws ADCException;
public Cartridge getCartridgeInfo(String alias)throws ADCException, NotSubscribedException;
public PolicyDefinition[] getPolicyDefinitions();
public void synchronizeRepository(String cartridgeAlias)throws ADCException, NotSubscribedException;
10
Application Management Service methods (Cont.)
/** * Subscribe to a cartridge */public SubscriptionInfo subscribe(String cartridgeType,
String alias, String policy, String repoURL, boolean privateRepo,String repoUsername, String repoPassword, String dataCartridgeType,String dataCartridgeAlias) throws ADCException, PolicyException,UnregisteredCartridgeException, InvalidCartridgeAliasException,DuplicateCartridgeAliasException, RepositoryRequiredException,AlreadySubscribedException, RepositoryCredentialsRequiredException,InvalidRepositoryException, RepositoryTransportException;
/** * Unsubscribing the cartridge * * @param alias name of the cartridge to be unsubscribed */public void unsubscribe(String alias) throws ADCException,
NotSubscribedException;
public String addDomainMapping(String mappedDomain,String cartridgeAlias) throws ADCException,DomainMappingExistsException, NotSubscribedException;
public void removeDomainMapping(String cartridgeAlias)throws ADCException, NotSubscribedException;
11
SC Cartridge Subscription
12
What happens when you subscribe?
13
Current Database Schema
14
Auto-scaling policies● Defined in <SC_HOME>/repository/conf/policies.xml<policies>
<policy name="single" isDefault="true"><description>Single - Instances: Min 1, Max 1</description><min_app_instances>1</min_app_instances><max_app_instances>1</max_app_instances><max_requests_per_second>5</max_requests_per_second><alarming_upper_rate>0.7</alarming_upper_rate><alarming_lower_rate>0.2</alarming_lower_rate><scale_down_factor>0.25</scale_down_factor><rounds_to_average>2</rounds_to_average>
</policy><policy name="elastic" isDefault="false">
<description>Elastic - Instances: Min 1, Max 4</description><min_app_instances>1</min_app_instances><max_app_instances>4</max_app_instances><max_requests_per_second>5</max_requests_per_second><alarming_upper_rate>0.7</alarming_upper_rate><alarming_lower_rate>0.2</alarming_lower_rate><scale_down_factor>0.25</scale_down_factor><rounds_to_average>2</rounds_to_average>
</policy></policies>
15
Artifact Distribution Coordinator● Responsible for distribution of artifacts● Uses Git as the Code Repository
16
How ADC works
17
How does Git Repo notify the ADC?● Add a service hook to the Git Repository● For example: GitHub
18
Interactive CLI Tool● Used by tenants to manage subscriptions.● Same functions as the UI, except:
○ Tenant registering○ Monitoring logs of Cartridge instances.
19
CLI Modes● Interactive mode$export STRATOS_URL= https://demo.stratos.incubator.apache.org:9445
$./stratos.sh -u <username> -p <password>
stratos>
● Single command line mode○ User can execute commands in one line.○ It will not show the stratos> prompt○ The user can export the username and password to
the environment and execute commands.$export STRATOS_USERNAME=<username>
$export STRATOS_PASSWORD=<password>
$ stratos.sh -u [username] -p [password] [action commands]
20
CLI Tool Technology● Supports following features via jline 2
○ Command history○ Auto-completion of commands○ Character masking (for passwords)
● Apache Commons CLI● Connects to SC● Artifact Id: org.apache.stratos.cli
21
CLI Design
22
CLI Commands
23
Questions?
24
Join us!Website: http://stratos.incubator.apache.org
Mailing List:Subscribe: [email protected] (after subscription): [email protected]
Social Media:Google+: https://plus.google.com/103515557134069849802Twitter: https://twitter.com/ApacheStratosFacebook: https://www.facebook.com/apache.stratosLinkedIn: http://www.linkedin.com/groups?home=&gid=5131436
25