Hi

I wonder if anyone has experience or thoughts to share about upgrading 
production cluster systems?

I would ideally like to 

   - upgrade the cluster without downtime/scheduled outage
   - not mutate infrastructure, in other words, deploy a new set of nodes 
   with the new version
   - do a staged upgrade, first just a single node taking as little as 
   possible production traffic - a canary in the coal mine


A little bit more about my specific environment

   - cluster runs as a single EC2 autoscale group
   - no akka roles (looking into this as a way to gain independence between 
   functional areas within the application & facilitate independent upgrades - 
   something akin to micro services to use the buzzword du jour) 
   - i don't use akka persistence but each sharded actor is backed by my 
   own distributed persistence mechanism based on DynamoDB
   - there is some tolerance for stale reads but there could be some cases 
   where it's not acceptable

My understanding is that the number of cluster shards should be kept 
constant irrespective of number of cluster nodes, so that the shard 
resolution also remains stable irrespective of number of cluster nodes, as 
in the example in the documentation. It sounds like the bundled rebalancing 
strategy (LeastShardAllocationStrategy) should do the trick when adding the 
first node (canary). I'm wondering if there's any suggestions for doing the 
rest?


   - start all of the remaining new cluster nodes 
      - at what point does rebalancing get kicked off? is there a specific 
      event that triggers a rebalance? is it possible to delay until all the 
new 
      nodes/X nodes has joined/Y time has passed to minimize disruption (single 
      rebalance vs rebalance for every node)
   - wait for period X to ensure rebalancing is complete and all buffered 
   messages during rebalancing has been processed 
      - is it possible to determine this programmatically?
   - stop all the old version nodes 
      - one by one with a period in between or all at once?
      - at this point, messages in flight are lost, need to fall back to 
      clients to retry
   
It gets progressively more hand wavy towards the end as I'm still thinking 
about the details, would love some input & feedback!

Thanks
Peter

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to