A.U.
He's old enough for some discipline. Just like you make him do other things because they are good for him, he needs to sleep at a consistent time because it is good for him. My 20 mo old also loves to run out of his bed/room. We use counting with him. The first time he comes out we give him a warning "That is one. On three we close the door." and bring him back to bed. If he comes out again "That is two. On three we close the door." and bring him back. If he comes out a third time we say nothing (we've already said 'Good night' and told him the rules...), we just bring him back to bed and close his door. If your boy can open the door, you have several options-- turn the lock so that it is on the outside of his door, get a 'child-proof' door handle, or put up a gate in his door.
The first several nights we did this he cried, of course, but it didn't last long and now he is so much better. I remind him of the rules right when I put him to bed and usually never have to count past 1. He also usually goes back to the bed without us escorting him. He doesn't cry any more and goes to sleep much more quickly. Sometimes he'll get up and play with a toy in his room (there aren't many though, mostly just books), but we don't reprimand him for that-- just as long as he is quiet in his room.
Sounds like you give your child a lot of love during the day. As long as you don't use a yelling or mean voice, he will still feel loved, but will know you are serious about him going to sleep at bedtime. The major difference I see between our parenting styles is that I've never sat with my kids until they were asleep, even as babies (unless they woke up after a bad dream or some such), so my kids might be a little more used to going to sleep on their own. But, thought I'd throw in what has worked for us. Good luck!