There is not enough detail in this question to provide a complete solution; however there are some general principles I can share which you might be able to research on your own and apply.
The relevant details include:
- Router / Firewall models
- Resilience & recovery time in the face of link / equipment failure
- Topology
- Future plans for expansion
- Technical abilities of your IT staff
- How important load-balancing is against the cost of doing it (Additional: Opex, Capex, migration downtime, complexity)
You should also understand that saying you want to load-balance is like walking into a grocery store and telling the clerk you want to buy some food. The first question will be 'what kind of food'? In the same manner, understand that at a minimum, you must consider the cases of outbound (i.e. from your servers to the internet) and inbound (from internet to your servers) load-balancing separately.
To be honest, if you ask this question with so little contextual information, experience tells me that you're probably getting in over your head. Furthermore, the time to design a load-balancing solution is before the company signs the agreements to purchase additional bandwidth. I'm not saying this as a slight against you, but it should be taken as a precautionary note; load-balancing solutions are complicated, and the requirements need to be fully considered, including what happens when things fail, or components need to be added / expanded. If someone else decided to buy bandwidth and then handed you the project as an afterthought, I co-miserate... I've been there too.
Outbound Load Balancing
There are several ways to influence outbound load-balancing:
- Equal Cost Multi-Path (ECMP), which means you set up equal-cost paths outbound to the internet. This is easier said than done... most of the time, topology or equipment issues get in the way of doing this across seperate ISPs, but it is possible.
- Unique NAT overloads per-ISP with the Firewall doing the balancing
- Dedicated load-balancing hardware (like an F5)
- First-hop L2 technologies... creative use of GLBP / HSRP / VRRP
- Partial routes to the internet... via BGP filtering or local-pref... with traffic shifting between your eBGP routers across dedicated high-bandwidth iBGP links
- Dual links to the same ISP router
Inbound Load-balancing
There are several ways to influence inbound load-balancing:
- Dual links to the same ISP router
- Unique NAT overloads per-ISP with the Firewall doing the balancing
- Multiple exits to the internet via multiple ISPs, with eBGP policies that nudge traffic one way or another
If you can post more details of the requirements and environment, you might be able to get a good solution on ServerFault... then again, you might get a bunch of people who hope for a little glory insisting that their way is best; meanwhile situational factors unique to your corporate environment sabotage the implementation of said recommendation(s).
EDIT
Assuming you have a linux machine, I would take a look at the possibilities available in netfilter... one option is shorewall. They have an official howto and another howto, which cover the basics of load-balancing across multiple ISPs through a linux bastion-host firewall, but your situation is more complicated since you have the IP PBX involved.
I will defer to someone who has actually done this to post detailed suggestions.
Shorewall use case