Putting it on separate vms means you can reconfigure when needed for say another db or web server without having to edit anything but the pgbouncer vms.
Putting it on the db servers means that if a db server goes down then you need to reconfigure the app side to not look for them
Putting them on the app side means you have to configured according to how many app servers you have etc.
It all really depends on your use cases. but putting it on the www servers works fine and is how I've done it many times in the past.
Thanks for the reply...
But as I'm using two web servers, do I have to put pgbouncer on both of them?
Not sure how is going to work as I have two web servers