What version of elasticsearch are you on?
Can you please run
GET _ilm/policy/winlogbeat-7.9.1 <----- this should govern the rolling over of indices...
and lets double check the shards
This appears to have nothing to do with routing / allocation and everything to do with shard size so yes it look like you you are missing an ILM policy or it is not being used or the settings are incorrect.
In short your winlogbeat indices has 1 primary and 1 replica shard ... each shard is ~100GB. (That is about double what we recommend for starters)
You are seeing is 1 x 100GB shards on nodes 2 and 3 from index
winlogbeat-7.9.1-2021.14 each of those shards take up about 50% of the storage on each node themselves. To be clear a shard is atomic it can live only on 1 node.
I am not sure of your index naming convention means
2021.14 (why you changed it, what you are trying to accomplish...weekly?, I am sure you had a method in mind) , and what settings you have and have not set or changed.
Using all the defaults, the shard size would have been 50GB per shard and the indices would have automatically roll over at that size. And you would get a more even distribution.
So ... what to do?
You could go back to defaults for the the indices names etc which should use the default ILM policy . This will results in 50GB shards. This assumes at 1 point you ran
2nd as an observation having 9 nodes with only 200GB (perhaps you intend to grow) of storage on each node for a observability cluster is a bit odd, when shards are 50GB (the default) it is still going to fill up 50GB for each shard so some nodes are going to fill up to that 50GB before the next shard on another node gets started.
You can create your own ILM and set shards to say like 20GB for rollover if you want a more even distribution.
You could go to some sort of Daily or Weekly indices scheme
If you create your ILM policy or edit the existing you will need to update the template to use your ILM. Then you need to be careful to not overwrite it.
Set to false to disable template loading. If this is set to false, you must load the template manually.
You could even break down that big index if you want but that would take some time.
Think about what you want to do and perhaps we can help you get there.
How Many Shards and How to Size a Custer is some good reading on the topics