I would start with understanding that a 2.5 year old has no impulse control nor cognitive reasoning. It doesn't exist. It's not there. Sometimes it seems like it is, those are what I call "lucky occasions", but really it's not. I have a 2.5 year old boy as well, and a background in lifespan development/child psychology, so I am highly familiar with the type. :)
So, a couple of things. First, make sure he actually gets plenty of time to be excited and be a "crazy" kid throughout the day in a somewhat controlled environment - i.e., not in the scenarios you're describing where he is hurting other kids.
Second, spend a lot of time focusing on positive attention ... that age, they are almost like teenagers for a blip in their toddlerhood - they have hit an age where they can do a lot of new things, and they've discovered so much they didn't know before, and they want to try it all out - but mostly, they are wanting to connect in new and different ways.
The infant / young tod who didn't know how to say no, or push limits, or test boundaries has grown up and figured out that he can try to get what he wants. EVERY SINGLE TODDLER DOES THIS! This is actually a milestone and a healthy part of development! They are learning autonomy. They are learning preferences. They are becoming individuals. They YEARN for the freedom to say 'no', or to not have to do something just because someone told them to. They thrive on being able to make decisions for themselves. Embrace this time, and pat yourself on the back, you have a motivated toddler instead of one who has been broken down into compliance.
One of my most invaluable tools is to form questions in the form of two options, which forces them into a choice (note: you must be in agreement to either choice he makes), but makes them feel like they have control over their "destiny". An example: toddler won't eat dinner, but also won't get down from the table to get ready for bed. Me: "You can either finish eating dinner, or you can come with me and get ready for bed. You choose, which do you want to do?" There are times when he refuses to answer either way, and if I've asked him a second time and he ignores me, then I will say "Great, then I get to choose! Time for bed." And then I stick to my guns and actually take him to bed, regardless of whether a tantrum ensued. I'm not mean about it, or harsh about it, I explain to him very evenly and logically that "I gave you a choice to make when I needed you to make a decision. You could have chosen dinner, or you could have chosen bed. Since you weren't eating, and you didn't answer me, I chose bedtime for you." Believe me, they understand what you're saying - even a completely nonverbal toddler understands. I can't even begin to tell you how glad I am someone taught me this "trick" - I use it for most things now to diffuse situations or give him independence and control over his choices, without having to sacrifice anything or browbeat him into doing what I want him to do.
Another example, if he has something in his hand that I don't want him to have (like he found a pen and is about to write all over the walls), I will say "We can't play with the pen right now. You can put it back where it belongs, or you can give it to me and I can put it back where it belongs for you. Choice is yours, what's it going to be? You put it back, or I put it back, but we can't play with the pen right now." I can usually see the wheels turning in his head as he thinks about it, but the great thing is - either way, it ends with the pen being put away and (usually) no fight or tantrum or meltdown! He made the choice, out of choices he was given, and I don't have ink all over my walls. Win win!