Hi Darren,
Failover (hot/standby) is a good solution within one site. Use
heartbeat for that. You do not really need multiple servers for load
balancing unless you traffic goes beyond what a box can handle.
Failover for multiple sites needs backend replication and/or SER
replication.
I have a 2x2 setup in two sites.
If you need support to set this up you can contact me offline.
--
Adrian
Hey All,
I have sent this question once before, but I don't believe that I
received a response back. If so then I appologize as I must have
missed it.
Could someone help me out with this? We are gearing up to launch SER
on a large scale but I want to verify that I can have multiple SER
servers in a primary / failover scenario before doing so.
Can I put SER onto multiple servers with load balancing and share the
userloc tables between the servers (ie. With MySQL or Postgres SQL)
Is this possible? Or does one SER instance only recognize registrations
for phones that register with that particular instance/daemon?
Thanks,
Darren Nay - dnay at libertyisp.com
Hi All,
I am getting this error while trying to load ser.
Any ideas on this.
Walter
0(31991) loading module /usr/local/lib/ser/modules/mysql.so
0(31991) ERROR: load_module: could not open module
</usr/local/lib/ser/modules/
mysql.so>: /usr/local/lib/ser/modules/mysql.so: undefined symbol: fm_malloc
0(31991) parse error (29,13-49): failed to load module
charset="US-ASCII"
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft Office Outlook, Build 11.0.5510
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
In-Reply-To: <401EF592.4030906(a)telesip.net>
Thread-Index: AcPp8vnefyPfU1V6Q8aWC8YVZF2jAgAFN3zg
X-Priority: 3
I have added lookup("aliases"); in the ser.cfg but I still get the Error.
Walter
-----Original Message-----
From: Andres [mailto:andres@telesip.net]
Sent: Monday, February 02, 2004 9:13 PM
To: walterp; serusers(a)lists.iptel.org
Subject: Re: [Serusers] Error
Jiri Kuthan wrote:
>You are apparently trying to add a user '1001' whereas there is an
>alias '1001'.
>
>-jiri
>
>At 08:28 PM 2/2/2004, walterp wrote:
>
>
>>What is this error ?
>>
>>Walter
>>
>>[root@sipserver modules]# serctl add 1001 0 1001
>>MySql password:
>>error: overlap with an existing alias
>>
>>
>>
I got this error also when testing the CVS version. I had no aliases or
users defined an still got the error. I was able to get rid of it by
adding: lookup("aliases"); in the ser.cfg.
>>_______________________________________________
>>Serusers mailing list
>>serusers(a)lists.iptel.org
>>http://lists.iptel.org/mailman/listinfo/serusers
>>
>>
>
>--
>Jiri Kuthan http://iptel.org/~jiri/
>
>_______________________________________________
>Serusers mailing list
>serusers(a)lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serusers
>
>
>
--
Andres
Network Admin
http://www.telesip.net
Hi,
I am writing a software to parse SIP messages. I have couple of questions that I would like to clarified.
1. How to recognise if a packet is a SIP or a non-SIP packet?. SIP uses TCP, UDP as underlying transport.
2. How to know the direction of the SIP message if it is from SIP proxy or from SIP client?. I ask this question because in most of the SIP messages, the header fields are copied from previous messages and so the from, To header fileds doesn't always signify he direction
3. Can Call-ID be used to find the number of distinct phone call taken place between different SIP UA's?.
4. What is the significance of dialog-ID? and how can it be used?
Thanks,
Balaji
I'm trying hard to get a handle on configuring ser but I think I need a few hints..
I thought I was doing the accounting right but the acc table never receives any information.. In my reading I thought by using setflag(x) where x was the same number as the db_flag number stateful accounting records would be automatic.. is this wrong..?
Can someone clue me in as to what I'm doing wrong as I just can't get this.
Here's my config if it helps at all:
# ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
children=4
fifo="/tmp/ser_fifo"
fifo_mode=0666
alias="voip.domain.com"
# ------------------ module loading ----------------------------------
loadmodule "/usr/local/ser/lib/ser/modules/mysql.so"
loadmodule "/usr/local/ser/lib/ser/modules/sl.so"
loadmodule "/usr/local/ser/lib/ser/modules/tm.so"
loadmodule "/usr/local/ser/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/ser/lib/ser/modules/rr.so"
loadmodule "/usr/local/ser/lib/ser/modules/textops.so"
loadmodule "/usr/local/ser/lib/ser/modules/vm.so"
loadmodule "/usr/local/ser/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/ser/lib/ser/modules/registrar.so"
loadmodule "/usr/local/ser/lib/ser/modules/auth.so"
loadmodule "/usr/local/ser/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/ser/lib/ser/modules/acc.so"
loadmodule "/usr/local/ser/lib/ser/modules/group.so"
# ----------------- setting module-specific parameters ---------------
modparam("voicemail", "db_url","mysql://ser:heslo@localhost/ser")
modparam("voicemail", "email_column", "email_address")
modparam("voicemail", "subscriber_table", "subscriber")
modparam("voicemail", "user_column", "username")
modparam("usrloc", "db_mode", 2)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("rr", "enable_full_lr", 1)
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
modparam("acc", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
modparam("group", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("group", "table", "grp")
modparam("group", "user_column", "username")
modparam("group", "domain_column", "domain")
modparam("group", "group_column", "grp")
# If set to 1 then username@domain will be used for lookup, if
# set to 0 then only username will be used.
modparam("group", "use_domain", 0)
# ------------------------- request routing logic -------------------
# main routing logic
route {
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
t_reply("483","Too Many Hops");
break;
};
if ( msg:len > max_len ) {
t_reply("513", "Message too big");
break;
};
record_route();
if (loose_route()) {
t_relay();
break;
};
# label all transactions for accounting
setflag(1);
# decide if callee has voicemail
if (is_user_in("Request-URI", "voicemail")) {
setflag(4);
};
# decide if caller is allowed long distance
if (is_user_in("From", "ld")) {
setflag(5);
};
# only process for our sip domain
if (uri==myself) {
# authorize and save location
if (method=="REGISTER") {
if (!www_authorize("voip.domain.com", "subscriber")) {
www_challenge("voip.domain.com", "1");
sl_send_reply("404", "Incorrect Authorization");
break;
};
save("location");
break;
};
# lookup and handle local users first
if (lookup("location")) {
t_relay();
break;
} else {
if ((method=="INVITE" || method=="ACK") && t_newtran() ) {
# new call to offline user with voicemail flag
if (isflagset(4)) {
route(4);
break;
};
route(5);
break;
};
};
if (!t_relay()) {
sl_reply_error();
break;
};
} else {
t_reply("404","UA Configuration error - Incorrect domain");
break;
};
} # end main route
route[4] {
# Voicemail specific configuration - begin
if(method=="ACK" || method=="INVITE" || method=="BYE" || method=="REFER"){
if(t_newtran()){
t_reply("100","Trying -- just wait a minute !");
if(method=="INVITE" || method=="REFER"){
log("**************** vm start - begin ******************\n");
if( uri =~ "conference" ){
if(!vm("/tmp/am_fifo","conference")){
log("could not contact conference server\n");
t_reply("500","could not contact conference server");
};
} else if( uri =~ "echo" ){
if(!vm("/tmp/am_fifo","echo")){
log("could not contact echo\n");
t_reply("500","could not contact echo");
};
} else {
if(!vm("/tmp/am_fifo","voicemail")){
log("could not contact voicemail\n");
t_reply("500","could not contact voicemail");
};
};
log("**************** vm start - end ******************\n");
break;
};
if(method=="BYE"){
log("**************** vm end/refer - begin ******************\n"); if(!vm("/tmp/am_fifo","bye")){
log("could not contact the media server\n");
t_reply("500","could not contact the media server");
};
log("**************** vm end/refer - end ********************\n");
break;
};
} else {
log("could not create new transaction\n");
t_reply("500","could not create new transaction");
};
};
# Voicemail specific configuration - end
}
route[5] {
# protect the pstn from having to bother with calls to our local blocks
if (uri=~"^sip:555") {
t_reply("404","no such user");
break;
};
# dial plan routing - long distance or local lata/tandem transit
if ((uri=~"^sip:1") && (isflagset(5))) {
rewritehostport("172.16.0.7:5060");
t_relay();
break;
};
if (uri=~"^sip:7") {
rewritehostport("172.16.0.5:5060");
t_relay();
break;
};
if (uri=~"^sip:3") {
rewritehostport("172.16.0.5:5060");
t_relay();
break;
};
t_reply("404","Not Found");
break;
}