README.txt 3.1 KB

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