One of my players just up and decided to make the tankiest tank in the land, a bear totem barbarian with a shield and Sentinel feat at level 7. He has 21 AC with a shield (most creatures almost can't hit unless they crit or close)
Only possible at that level with rolled stats - your first mistake. Rolled stats creates unbalanced characters.
Secondly, I have no idea how your monsters are struggling so much?
Im looking at some CR 6-7 monsters (flicking through the MM):
Chimera, CR 6, +7 to hit (3 attacks, including breath weapon)
Cyclops, CR 6, +9 to hit, two attacks
Vrock CR 6 +6 to hit, two attacks
Young Black dragon, CR 7, 3 x attacks at +7, breath weapon
Elemental, CR 5, +8 to hit, two slams
Flesh golem, CR 5, 2 slams at +7
Grick Alpha, three attacks at +7
All those beasties hit on around a 14+, and all get multiple chances to hit (likely with advantage if your barbarian is using reckless attack).
I'm sorry mate I am not seeing it.
and even when they do hit, he has a tone of HP and resistances.
Your second mistake.
Youre not giving the party enough encounters per day. Accordingly he is free to rage nova every single encounter.
Your party should be averaging 6-8 medium to hard encounters per day, with about 2 short rests scattered in there (after every 2nd encounter or so).
He should only be able to rage every second encounter at best at his level.
I can help you mate. First question: How many encounters are you throwing at the party in between long rests, and how are you calculating the encounter budget for each encounter?
Secondly, can you give me the parties composition (level and class)?