Migrating OpenSIPS location table to Kamailio format
This applies to OpenSIPS 1.4.4 and Kamailio 3.3.2, although it may work with other versions as well.
OpenSIPS->Kamailio:
Integrics does the following on sip0 and sip1:
cpan Math::BigInt::FastCalc
enswitch install kamailio-ha
vi /etc/kamailio/kamailio.cfg # and set the database URL
Update haresources on sip0 and sip1:
change "opensips" to "kamailio" in /etc/ha.d/haresources
Stop OpenSIPS on sip0:
sudo /etc/ha.d/resource.d/opensips stop
Remove OpenSIPS init script on sip0 and sip1:
sudo rm /etc/ha.d/resource.d/opensips
Update version for location table on enswitchbd0:
update version set table_version='5' where table_name='location';
Convert OpenSIPS version of location table to work with Kamailio on enswitchdb0:
RENAME TABLE location TO location_old_opensips;
CREATE TABLE `location` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `ruid` varchar(64) NOT NULL DEFAULT , `username` varchar(64) NOT NULL DEFAULT , `domain` varchar(64) DEFAULT NULL, `contact` varchar(255) NOT NULL DEFAULT , `received` varchar(128) DEFAULT NULL, `path` varchar(128) DEFAULT NULL, `expires` datetime NOT NULL DEFAULT '2020-05-28 21:32:15', `q` float(10,2) NOT NULL DEFAULT '1.00', `callid` varchar(255) NOT NULL DEFAULT 'Default-Call-ID', `cseq` int(11) NOT NULL DEFAULT '1', `last_modified` datetime NOT NULL DEFAULT '1900-01-01 00:00:01', `flags` int(11) NOT NULL DEFAULT '0', `cflags` int(11) NOT NULL DEFAULT '0', `user_agent` varchar(255) NOT NULL DEFAULT , `socket` varchar(64) DEFAULT NULL, `methods` int(11) DEFAULT NULL, `instance` varchar(255) DEFAULT NULL, `reg_id` int(11) NOT NULL DEFAULT '0', `replicate` int(10) unsigned NOT NULL DEFAULT '0', `state` tinyint(1) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `account_contact_idx` (`username`,`domain`,`contact`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 SELECT * FROM location_old;
Add link for Kamailio init script on sip0 and sip1:
sudo ln -sf /opt/enswitch/current/etc/init.d/debian/kamailio /etc/ha.d/resource.d/kamailio
Start Kamailio on sip0:
sudo /etc/ha.d/resource.d/kamailio start
Test calls on sip0:
Run hb_takeover on sip1 and test:
/usr/share/heartbeat/hb_takeover
Run hb_takeover on sip0 and test again:
/usr/share/heartbeat/hb_takeover
Kamailio->OpenSIPS:
Update haresources
change "kamailio" to “opensips” in /etc/ha.d/haresources
Stop Kamailio:
sudo /etc/ha.d/resource.d/kamailio stop
Remove Kamailio init script:
sudo rm /etc/ha.d/resource.d/kamailio
Update version for location table
update version set table_version='1004' where table_name='location';
Convert Kamailio version of location table to work with OpenSIPS:
(
RENAME TABLE location TO location_old_kamailio;
)
CREATE TABLE `location` (
`username` varchar(64) NOT NULL DEFAULT , `domain` varchar(128) NOT NULL DEFAULT , `contact` varchar(255) NOT NULL DEFAULT , `received` varchar(255) DEFAULT NULL, `path` varchar(255) DEFAULT NULL, `expires` datetime NOT NULL DEFAULT '2020-01-01 00:00:00', `q` float(10,2) NOT NULL DEFAULT '1.00', `callid` varchar(255) NOT NULL DEFAULT 'Default-Call-ID', `cseq` int(11) NOT NULL DEFAULT '42', `last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `replicate` int(10) unsigned NOT NULL DEFAULT '0', `state` tinyint(1) unsigned NOT NULL DEFAULT '0', `flags` int(11) NOT NULL DEFAULT '0', `cflags` int(11) NOT NULL DEFAULT '0', `user_agent` varchar(100) NOT NULL DEFAULT , `socket` varchar(128) DEFAULT NULL, `methods` int(11) DEFAULT NULL, `id` int(10) NOT NULL DEFAULT '0', `ruid` varchar(64) NOT NULL DEFAULT , `reg_id` int(11) NOT NULL DEFAULT '0', `instance` varchar(255) DEFAULT NULL, KEY `username` (`username`,`domain`,`contact`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 SELECT * FROM location_old_kamailio;
Add link for OpenSIPS init script:
sudo ln -sf /opt/enswitch/current/etc/init.d/debian/opensips /etc/ha.d/resource.d/opensips
Start OpenSIPS:
sudo /etc/ha.d/resource.d/opensips start