@Yathus @danrk OS3.1 supports running versions as low as 2.19.0, therefore it is possible to perform a rolling upgrade by following the typical steps outlined in the docs
I have just tested using tarballs for 2.19.0 and 3.1.0 and the steps worked.
There are some changes in the jvm.options that you should be aware of (mentioned in this post) prior to upgrading this in production, to ensure no downtime.
As always the recommendation is to try this in dev/test first.