Hello, I have been working on a PR for some time now which minimizes the runtime impact that a snapshot has on Traffic Router. These changes will help to support the ‘Delivery Service Snapshots’ feature and generally make the CDN more stable. The main thrust of the PR, changes the implementation of TR’s ConfigHandler and ZoneManager classes so that they compare the current CDN configuration (CrConfig) with the most recent snapshot and then only applies the differences.
The current version of Traffic Router (without the PR) does not perform a comparison between the snapshot configuration and the previous CrConfig. It simply loads the new snapshot into memory and performs a runtime swap with the previous version of the configuration. This invalidates everything that TR has cached including the DNS Zones and causes TR to reload the cache and re-sign all of the zones which are secured with DNSSec. This new PR allows all of this cached configuration to stay intact and thus only new or changed DNS Zones will have to be signed and cached. This PR also changes the process which monitors changes to the zone signing keys and key signing keys in RIAK. This new PR will examine the key sets for changes and only regenerate and resign the zones which have new keys. Again the difference here is that the previous version of TR would always regenerate and re-sign all of the DNS zones if any key changed. Therefore, once this new PR is in place, the monthly zone signing key rolls will no longer cause all of the TR nodes to reload and resign all of the DNS zones. Lastly this new feature can be turned on and off using a new parameter setting. If the parameter ‘deliveryservice.snapshots’ is set to false, then TR will fallback to the method of just reloading the entire configuration whenever there is a new snapshot. This PR is currently under review @ https://github.com/apache/trafficcontrol/pull/2785 so please offer any suggestions or concerns you have soon. Thank You, Andy
