From 279e0061c515ee0a03036bef68eea9738273d785 Mon Sep 17 00:00:00 2001 From: Johan Berntsson Date: Tue, 4 Mar 2008 05:31:54 +0000 Subject: Merged 3Di code that provides scene and avatar serialization, and plugin support for region move/split/merge. See ThirdParty/3Di/README.txt. Unless the new modules are used there should be no noticeable changes when running OpenSim. --- ThirdParty/3Di/README.txt | 82 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 ThirdParty/3Di/README.txt (limited to 'ThirdParty/3Di/README.txt') diff --git a/ThirdParty/3Di/README.txt b/ThirdParty/3Di/README.txt new file mode 100644 index 0000000..fd7980b --- /dev/null +++ b/ThirdParty/3Di/README.txt @@ -0,0 +1,82 @@ +INTRODUCTION + +This folder contains code that implement: + +1. Dynamic load balancing + +OpenSim is allowing many regions to share a region server, but the optimal +number of regions on each server depends on the load of each region, something +which may change as time goes on. 3Di is working on a load balancer that +allows the current load to be monitored and regions to be reassigned without +requiring the servers to be restarted. To move a region, its state is +serialized, and a new clone is created on the target server using this +stream. The old region is then destroyed and the client viewer updated to use +the new region address. + +2. Region splitting + +Currently each region can hold only a small number of avatars. To allow more +avatars in each region, 3Di has implemented region splitting, in which several +copies of a given region can be distributed across the region servers. Each +sub-region updates a fraction of the avatars, and sends state updates to the +other sub-regions. + +IMPLEMENTATION + +The code is organised as follows: + +* LoadBalancer: communicates with other region servers and creates/destroys +regions on command +* RegionMonitor/MonitorGUI: provides a browser GUI, showing the state of the +grid, and provides buttons for controlling region movement, splitting, and +merging. +* RegionMonitor/ServerPlugin: this is a region server plugin which +communicates with the load balancer GUI to provide information +on the identity and status of the regions on the grid +* RegionProxy: maps messages from a clients to the true location of a region. + +USAGE + +In order to use these additions the following lines have to be added to +OpenSim.ini: + +proxy_offset = -1000 +proxy_url = http://10.8.1.50:9001 +serialize_dir = /mnt/temp/ + +If defined, proxy_offset defines how to calculate the true region port, e.g. +if the XML defines the port as 9000 the actual port is 8000 if proxy_offset +is -1000. The RegionProxy module will open a port at 9000 which the clients +can connect to, and route all traffic from there to port 8000. This allows +the region proxy to run on region server together with regions without +blocking them by using the same port number. + +The proxy location is defined in proxy_url. When splitting, the region state +is stored on a file in the folder specified in serialize_dir. This has to be +a shared folder which both region servers involved in the split have access to. + +3. Monitor GUI + +RegionMonitor/MonitorGUI is used to view status of all the managed Region +servers, and send "Move", "Split", "Merge" commands to a specified Regions +server. + +MonitorGUI is a web-based application. You can access it through a web browser. +Its back-end is written in perl. (CGI script) + +Pre-requierments (CentOS, Fedora) + +RPM package "perl-XML-RPC" and relevant packages. + +Installation + +1. Install Apache +2. copy all the files undef "ThirdParty/3Di/RegionMonitor/MonitorGUI/htdocs" to +"$APACHE_ROOT/htdocs" +3. Configuration in "monitor.cgi" + * 10th line, set the value to your "monitor.cgi"'s location. + * 11th line, set the value to your Grid server. + * 12th line, set your region proxy port number here. + (ref. OpenSim.ini::NetWork::http_listener_port) +* The code also works fine with mod_perl. + -- cgit v1.1