The 34-year-old, who has spent the past two Super 14 seasons with the Western Force, decided to call time on his career after receiving a medical report from a specialist on an injury that he sustained earlier this month.
"I really didn't have any option," said Cannon in a statement.
"As much as I wanted to play on and represent the Western Force and the Wallabies, I really couldn't.
"It would have been very silly of me to tempt fate again, particularly with a much greater risk of permanent injury.
"And, to be honest, I didn't want to jeopardise my future as a good husband and father, so the decision was really driven by my commitment to my family."
Cannon suffered a neck injury last year after a scrum collapse in a game against the Highlanders which required surgery and kept him out of the game for over four months.
On April 7, he was stretchered off again after a scrum collapse in a match against the Crusaders and spent the night in hospital. The injury left him with weakness and numbness in his left arm.
Cannon began his career in Queensland and played for the Reds and the Waratahs before becoming the first player to sign for the Force for their inaugural Super 14 campaign last year.
He also played 42 Tests for the Wallabies, earning his final cap against Italy last November.