The deal will pay Hainsey $3 million for two seasons, then drop to $2.5 million for the 2016-17 season.
The 33-year-old was one of two Hurricanes to play all 82 games last year, his first with the team. He finished with four goals and 11 assists last year while ranking second on the team with 124 blocked shots and third in ice time per game.
The former first-round draft pick has played with Montreal, Columbus, Atlanta, Winnipeg and Carolina in his NHL career.
The Hurricanes have also reached a deal on a one-year deal with left wing Chris Terry, who will make $600,000 on the NHL level or $300,000 at the American Hockey League level.