-
I'm trying to find a viable solution to rolling releases to prevent application downtime. I have a aspnetcore 3.1 co-hosted silo, it doesn't have any external cluster clients. When I do a rolling deployment now, if one instance is newer, an older instance that activates a grain on the newer silo instance encounters an exception if the grain state class has changed in some way. Once the rolling deployment has completed, this issue goes away. Obviously, I want to prevent that from happening. I had a thought that maybe I could use cluster id or service id as a cluster version. e.g. builder
.Configure<ClusterOptions>(options =>
{
// could I change either between builds to append a version to prevent older
// instances from activating grains in a newer silo instance?
options.ClusterId = "FOOAPPCLUSTER"; // change to "FOOAPPCLUSTER_V1"?
options.ServiceId = "FOOAPPSERVICE"; // change to "FOOAPPSERVICE_V1"?
}) Would this be a viable solution? Are there any concerns with this approach? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
Nevermind, I see the documentation explicitly states you can change the cluster id between deployments so only silos with the same cluster id will communicate with eachother, https://dotnet.github.io/orleans/docs/host/configuration_guide/server_configuration.html#orleans-clustering-information |
Beta Was this translation helpful? Give feedback.
Nevermind, I see the documentation explicitly states you can change the cluster id between deployments so only silos with the same cluster id will communicate with eachother, https://dotnet.github.io/orleans/docs/host/configuration_guide/server_configuration.html#orleans-clustering-information