high availability clustering with alfresco
DESCRIPTION
http://tinyurl.com/689svqTRANSCRIPT
Clustering Alfresco
Michael FarmanDirector of Product Management
www.alfresco.com
View the recorded webinar here:http://tinyurl.com/alfresco-cluster
Alfresco Server Components
● Vertical Scalability● Note: 1.5GB JVM Limit on 32 bit
● Multiple Points of Failure● Application Server● Content and Index Storage● Database
Database
MySQL
Alfresco Server
Tomcat
EHCache
Index &Content Store
HTTP/CIFS/NFS/WebDAV/FTPClients
View the recorded webinar here:http://tinyurl.com/alfresco-cluster
What needs to be clustered?
● EHCache● Single Configuration File Rename
● Index● Note: Each server must have its
own index● Single Configuration File● Only for recovery
● Content● 2 Config Files
• Define Content Store Locations
• Declare the Stores
• Set Replication Type
● Database● Native Database Clustering
Database
MySQL
Production A
Tomcat
EHCache
Index &Content Store
HTTP/CIFS/NFS/WebDAV/FTPClients
View the recorded webinar here:http://tinyurl.com/alfresco-cluster
Content ClusteringReplicating Content Stores
● Used to synchronise content between content stores
● Inbound● On Read● ‘Pulls’ content from secondary
store to primary store
● Outbound● On Write● ‘Push’ content from primary
store to secondary store● Synchronous (Transactional)
or Asynchronous
SecondaryContent Store
PrimaryContent
PrimaryContent
ReplicatingContent Store
ReplicatingContent StoreA
A
A
A
View the recorded webinar here:http://tinyurl.com/alfresco-cluster
Replicating Content Stores In Action
SecondaryContent Store
PrimaryContent
PrimaryContent
Production A Production B
A1. Write A4. Request Content ‘A’
5. Not Found in Primary
6. Requested from Secondary
A7. Copy stored in Primary
A
A2. ‘A’ written to Primary
A
3. ‘A’ copied to secondary(sync/async)
ReplicatingContent Store
8. ‘A’ DeliveredSubsequent Requests Served from B Primary Store
A
ReplicatingContent Store
Note: Production A and B Do not knowanything about each other
Allows additional servers to be added withoutreconfiguring A or B
Note: Production A and B Do not knowanything about each other
Allows additional servers to be added withoutreconfiguring A or B
Inbound Outbound
Clustered Server -Shared DB and Content
√ Horizontal Scalability
X Multiple Points of Failure● Content Storage*● Database
● Note: Each server needs it’s own local index
Production A
Tomcat
EHCache
Database
MySQL
Production B
Tomcat
EHCache
Content Store
IndexIndex
HTTP/CIFS/WebDAV/FTPClients
Load BalancerLoad Balancer
* Could be on highly available disk such a SAN storage
View the recorded webinar here:http://tinyurl.com/alfresco-cluster
Clustered Server -Shared Database
√ Horizontal Scalability
X Single Point of Failure● Database
● Replicating Content Store
● In and Outbound Replication
● No need to change config for existing servers when adding additional servers
Database
MySQL
Production B
Tomcat
EHCache
SecondaryContent Store
Index*Index*PrimaryContent
PrimaryContent
Production A
Tomcat
EHCache
ReplicatingContent Store
ReplicatingContent Store
• Index recovery component not shown
Used to synchronise indexes when necessary e.g. After server restart
HTTP/CIFS/WebDAV/FTPClients
Load BalancerLoad Balancer
Database ClusteringMaster - Slave
● Use Native DB Clustering Capabilities
● Specifics Database (and O/S) Dependent
● Master – Slave● Master acts as
primary● Slave as backup● Bring slave online on
master failure• Scripts • O/S Level Clustering
● Note: Use DB connection pool to avoid Alfresco server restartsDatabase Clustering
<- Failover ->
DB Master
MySQL
DB Slave
MySQL
JDBC
View the recorded webinar here:http://tinyurl.com/alfresco-cluster
Database ClusteringMaster - Master
Database Clustering
<- Replication ->
DB Master
MySQL
DB Master
MySQL
JDBC JDBC
● Use Native DB Clustering Capabilities
● Specifics Database (and O/S) Dependent
● Master – Master● Can be used for
distributed deployment
● Network performance may be a factor
View the recorded webinar here:http://tinyurl.com/alfresco-cluster
Configuring a 2 Server ClusterQuick Start Guide
● Server A1. Standard Install2. Configure A’s Primary and the Secondary Store Locations
● custom-repository.properties
3. Enable Index Tracking● index.tracking.cronExpression in custom-repository.properties
4. Enable Content Replication between these locations● replicating-content-services-context.xml
● Define the Shared Content Store● Define in/outbound replication between the stores
5. Enable Index Tracking1. custom-repository.properties2. index.tracking.cronExpression=0/2 * * * * ? (default entry is 2099 i.e. never)
6. Enable● ehcache-custom.xml - Rename the sample
7. Startup
● Server B1. Copy A’s Install2. Configure B’s Primary Content Store – Only required if stores path different
● repository.properties● Note: Secondary Store Location – Same as A
3. Startup with Full Index Recovery – custom-repository.properties
Tips & Troubleshooting
● Starting the server without an index:● custom-repository.properties● system.bootstrap.config_check.strict=false
● Always use a fully qualified path to your content and index store locations
● custom-repository.properties • dir.root=c:\mystorage
● Rebuilding indexes● You cannot copy indexes from a running server● Shutdown and copy or use server generated backup copy
● System Clocks must be in sync on all servers● 1 second by default
View the recorded webinar here:http://tinyurl.com/alfresco-cluster
More Information
● Content Community – www.alfresco.com● Alfresco High Availability and Clustering Guide
● http://wiki.alfresco.com/wiki/High_Availability_Configuration
View the recorded webinar here:http://tinyurl.com/alfresco-cluster
View the recorded webinar:
http://tinyurl.com/alfresco-cluster