The 24-year-old Alzner, who was a restricted free agent, will count $2.8 million against the salary cap through 2016-17.
Alzner played all 48 games as a top-pair defenceman last season, recording a goal and adding four assists. He was counted on as a shutdown defender and penalty-killer.
"Karl is just entering his prime and has been a model of consistency for our organization since he entered the league," general manager George McPhee said. "He plays tough and valuable minutes against some of the NHL’s top players every game."