Jump to content

Conference Software Architecture Roles


conn

Recommended Posts

Say I am going to use erlang call manager / kazoo, kamailio, freeswitch, AMQP via RabbitMQ, and bigcouch. What would be the role all of all if them if the only focus was on making the best conference service that can be connected to via clients like IRC?

Link to comment
Share on other sites

  • 2600Hz Employees

Conferencing will be impacted most by the hardware you give FreeSWITCH. Run bare metal and with plenty of CPU/memory since conferences does a lot of audio muxing and transcoding. Everything else is pretty lightweight in comparison. Of course, you'll need to load test to be sure your setup is adequate. Testing max participants in a conference and max concurrent conferences to see where things go funky. Will you allow video conferencing?

Link to comment
Share on other sites

21 hours ago, mc_ said:

Conferencing will be impacted most by the hardware you give FreeSWITCH. Run bare metal and with plenty of CPU/memory since conferences does a lot of audio muxing and transcoding. Everything else is pretty lightweight in comparison. Of course, you'll need to load test to be sure your setup is adequate. Testing max participants in a conference and max concurrent conferences to see where things go funky. Will you allow video conferencing?

No, I want to focus solely on voice conferencing. I was thinking of using a cloud service such as digitalocean and then perhaps moving to using a cluster of raspberry PIs. However, since it would seem that freeSWITCH requires a lot of memory and cpu power, I may have to think of something else. I was also thinking of using something like packer along with some automation to help out once I found the optimal setup. Though, I am sure I cannot get much advise on that here. 

Edited by conn (see edit history)
Link to comment
Share on other sites

  • 2600Hz Employees

We ran the hosted platform on small Rackspace VMs for two years at the beginning. You can certainly start small and scale up as you go.

If you plan on supporting smallish conferences only, then having lots of Pis or whatever to spread them out is fine. If you plan to support large conferences (for some value of large), beefier hardware will be needed.

You need to define the load levels you wish to support and build the architecture to support those levels.

Link to comment
Share on other sites

2 hours ago, mc_ said:

You need to define the load levels you wish to support and build the architecture to support those levels.

Yeah, I will need to do that. However, isn't there a way to make an architecture that is flexible? I am kind of thinking about this from a programming prospective where, while a function should be responsible for one thing, a class could be more flexible in doing that one thing especially if you want to inherit from that class later on or compose various classes together. I am just wondering what that architecture would look like applied to this situation. 

Link to comment
Share on other sites

  • 2600Hz Employees

Well yes, Kazoo is flexible.

If you have 0 customers, it doesn't make sense to get the beefiest hardware before you prove that you can sell your service.

So start with what's easy for you to provision and get working. So maybe that's a couple VPS servers. Then you get enough traffic that your FreeSWITCH servers are having trouble keeping up. Now you can replace the VPS running FreeSWITCH with bare metal instances on the provider. Or you can build out a datacenter rack with your stuff, get better circuits, co-locate with your upstream carriers, whatever.

So the architecture definitely grows with you as you grow the business.

Link to comment
Share on other sites

1 hour ago, mc_ said:

Well yes, Kazoo is flexible.

If you have 0 customers, it doesn't make sense to get the beefiest hardware before you prove that you can sell your service.

So start with what's easy for you to provision and get working. So maybe that's a couple VPS servers. Then you get enough traffic that your FreeSWITCH servers are having trouble keeping up. Now you can replace the VPS running FreeSWITCH with bare metal instances on the provider. Or you can build out a datacenter rack with your stuff, get better circuits, co-locate with your upstream carriers, whatever.

So the architecture definitely grows with you as you grow the business.

I see. interesting

Link to comment
Share on other sites

  • 3 weeks later...

So, I actually finally am going start going through those official docs and go along with them by hand -instead of just looking at them. Here is my question. I have a mini SDHC card 32 GB. Should I use that and just use Packer once I get it to what I like? Or should I use Docker?

Link to comment
Share on other sites

  • 2600Hz Employees

Well, I would say don't use anything until you have a firm handle on installing/managing Kazoo itself. You don't want weird Docker networking or other unrelated issues clouding your mind while learning about Kazoo.

Then you can check out orchestration tooling and containers and the like, so you at least know if an issue is Kazoo-related or otherwise.

Link to comment
Share on other sites

  • 2 weeks later...

So, I finished going through the kazoo-kamailio setup in the official docks and ran:

kazoo-kamailio status

and I got:

error: 500 - No Destination Sets

Is that an acceptable response to where I am at in the setup at this moment -i.e, it will change once I finish entire setup? or does it indicate that I did something wrong at this stage?

Link to comment
Share on other sites

  • 2600Hz Employees

If there are no FreeSWITCH servers yet, you are correct that the destination sets should be empty.

When you setup FreeSWITCH and ecallmgr, there's a heartbeat that Kamailio will receive and auto-add FreeSWITCH to the proper destination set.

Link to comment
Share on other sites

49 minutes ago, mc_ said:

If there are no FreeSWITCH servers yet, you are correct that the destination sets should be empty.

When you setup FreeSWITCH and ecallmgr, there's a heartbeat that Kamailio will receive and auto-add FreeSWITCH to the proper destination set.

Got it, thanks for the explanation. 

Link to comment
Share on other sites

I am now on the HAProxy part. It does not really give much guidance on what to put into the file it wants me to edit. All it says is:

# Edit /etc/kazoo/haproxy/haproxy.cfg to setup the backend server to point to BigCouch

Now, after some googling, I found this: https://github.com/2600hz/kazoo-configs-haproxy/blob/master/haproxy/haproxy.cfg

It looks like an official enough source, so that part should be covered. However, should I use what is in that file from the git repo linked above? Or should I use something else?

Link to comment
Share on other sites

6 hours ago, tomas_ said:

You should edit the DB servers in that file, after "balance roundrobin". Change to your CouchDB server info.

What does this all mean:

    server db1.zone1.mydomain.com 127.0.0.1:5984 check
    server db2.zone1.mydomain.com 127.0.0.2:5984 check
    server db3.zone2.mydomain.com 127.0.0.3:5984 check backup
    server db4.zone2.mydomain.com 127.0.0.4:5984 check backup

Should I simply give the subdomain from the output of:

 

kazoo-bigcouch status

which is 

bigcouch@subdomain.example.net

so just replace the first two with 

subdomain.example.net

?

Link to comment
Share on other sites

  • 2600Hz Employees

The server config shows you how to prefer querying database nodes in the same kazoo zone and using the other zone as a failover (hopefully minimizing WAN latency). Since couch is multi-master, even if the data isn't on a given node, the handling node knows how to retrieve it from its peers.

Each db server will have its own hostname; any on the same LAN (typically) should be in the primary list and any that live across a WAN would include the 'backup' signifier.

Link to comment
Share on other sites

18 hours ago, mc_ said:

The server config shows you how to prefer querying database nodes in the same kazoo zone and using the other zone as a failover (hopefully minimizing WAN latency). Since couch is multi-master, even if the data isn't on a given node, the handling node knows how to retrieve it from its peers.

Each db server will have its own hostname; any on the same LAN (typically) should be in the primary list and any that live across a WAN would include the 'backup' signifier.

I think I might be starting to understand. So, I am using a digitalocean droplet -Centos 7- for this project. To set up these zones to Bigcouch, would it be sufficient to just keep making subdomains for the two zones via the digitalocean admin?

Link to comment
Share on other sites

I am on the following in setting up kazoo applications:

 

# Use SUP to communicate with the running VM
sup -h

I run the command, but I get the following error:

/usr/sbin/sup: illegal option -- h
Invalid command or wrong number of arguments, please try again

What am I supposed to do here? how do I find this "running VM use SUP to communicate with?

Link to comment
Share on other sites

On 5/11/2018 at 11:40 AM, mc_ said:

Try the long arg version 'sup --help' (although, sup -h worked for me so not sure).

 'sup --help' gives me:=

/usr/sbin/sup: illegal option -- -
/usr/sbin/sup: illegal option -- h
/usr/sbin/sup: illegal option -- e
/usr/sbin/sup: illegal option -- l
/usr/sbin/sup: illegal option -- p
Invalid command or wrong number of arguments, please try again

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...