diff options
Diffstat (limited to 'ThirdParty/3Di/README.txt')
-rw-r--r-- | ThirdParty/3Di/README.txt | 82 |
1 files changed, 82 insertions, 0 deletions
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 @@ | |||
1 | INTRODUCTION | ||
2 | |||
3 | This folder contains code that implement: | ||
4 | |||
5 | 1. Dynamic load balancing | ||
6 | |||
7 | OpenSim is allowing many regions to share a region server, but the optimal | ||
8 | number of regions on each server depends on the load of each region, something | ||
9 | which may change as time goes on. 3Di is working on a load balancer that | ||
10 | allows the current load to be monitored and regions to be reassigned without | ||
11 | requiring the servers to be restarted. To move a region, its state is | ||
12 | serialized, and a new clone is created on the target server using this | ||
13 | stream. The old region is then destroyed and the client viewer updated to use | ||
14 | the new region address. | ||
15 | |||
16 | 2. Region splitting | ||
17 | |||
18 | Currently each region can hold only a small number of avatars. To allow more | ||
19 | avatars in each region, 3Di has implemented region splitting, in which several | ||
20 | copies of a given region can be distributed across the region servers. Each | ||
21 | sub-region updates a fraction of the avatars, and sends state updates to the | ||
22 | other sub-regions. | ||
23 | |||
24 | IMPLEMENTATION | ||
25 | |||
26 | The code is organised as follows: | ||
27 | |||
28 | * LoadBalancer: communicates with other region servers and creates/destroys | ||
29 | regions on command | ||
30 | * RegionMonitor/MonitorGUI: provides a browser GUI, showing the state of the | ||
31 | grid, and provides buttons for controlling region movement, splitting, and | ||
32 | merging. | ||
33 | * RegionMonitor/ServerPlugin: this is a region server plugin which | ||
34 | communicates with the load balancer GUI to provide information | ||
35 | on the identity and status of the regions on the grid | ||
36 | * RegionProxy: maps messages from a clients to the true location of a region. | ||
37 | |||
38 | USAGE | ||
39 | |||
40 | In order to use these additions the following lines have to be added to | ||
41 | OpenSim.ini: | ||
42 | |||
43 | proxy_offset = -1000 | ||
44 | proxy_url = http://10.8.1.50:9001 | ||
45 | serialize_dir = /mnt/temp/ | ||
46 | |||
47 | If defined, proxy_offset defines how to calculate the true region port, e.g. | ||
48 | if the XML defines the port as 9000 the actual port is 8000 if proxy_offset | ||
49 | is -1000. The RegionProxy module will open a port at 9000 which the clients | ||
50 | can connect to, and route all traffic from there to port 8000. This allows | ||
51 | the region proxy to run on region server together with regions without | ||
52 | blocking them by using the same port number. | ||
53 | |||
54 | The proxy location is defined in proxy_url. When splitting, the region state | ||
55 | is stored on a file in the folder specified in serialize_dir. This has to be | ||
56 | a shared folder which both region servers involved in the split have access to. | ||
57 | |||
58 | 3. Monitor GUI | ||
59 | |||
60 | RegionMonitor/MonitorGUI is used to view status of all the managed Region | ||
61 | servers, and send "Move", "Split", "Merge" commands to a specified Regions | ||
62 | server. | ||
63 | |||
64 | MonitorGUI is a web-based application. You can access it through a web browser. | ||
65 | Its back-end is written in perl. (CGI script) | ||
66 | |||
67 | Pre-requierments (CentOS, Fedora) | ||
68 | |||
69 | RPM package "perl-XML-RPC" and relevant packages. | ||
70 | |||
71 | Installation | ||
72 | |||
73 | 1. Install Apache | ||
74 | 2. copy all the files undef "ThirdParty/3Di/RegionMonitor/MonitorGUI/htdocs" to | ||
75 | "$APACHE_ROOT/htdocs" | ||
76 | 3. Configuration in "monitor.cgi" | ||
77 | * 10th line, set the value to your "monitor.cgi"'s location. | ||
78 | * 11th line, set the value to your Grid server. | ||
79 | * 12th line, set your region proxy port number here. | ||
80 | (ref. OpenSim.ini::NetWork::http_listener_port) | ||
81 | * The code also works fine with mod_perl. | ||
82 | |||