mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
added replication docs
This commit is contained in:
parent
b41d7bd5a3
commit
17fcf828d3
|
@ -26,6 +26,7 @@ Contents:
|
||||||
gettingstarted
|
gettingstarted
|
||||||
clients
|
clients
|
||||||
api
|
api
|
||||||
|
replication
|
||||||
|
|
||||||
|
|
||||||
Indices and tables
|
Indices and tables
|
||||||
|
|
98
docs/replication.rst
Normal file
98
docs/replication.rst
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
Replication
|
||||||
|
===================================
|
||||||
|
Weed-FS can support replication. The replication is implemented not on file level, but on volume level.
|
||||||
|
|
||||||
|
How to use
|
||||||
|
###################################
|
||||||
|
Basically, the way it works is:
|
||||||
|
|
||||||
|
1. start weed master, and optionally specify the default replication type
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
./weed master -defaultReplicationType=001
|
||||||
|
|
||||||
|
2. start volume servers as this:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
./weed volume -port=8081 -dir=/tmp/1 -max=100
|
||||||
|
./weed volume -port=8082 -dir=/tmp/2 -max=100
|
||||||
|
./weed volume -port=8083 -dir=/tmp/3 -max=100
|
||||||
|
|
||||||
|
Submitting, Reading, Deleting files has the same steps.
|
||||||
|
|
||||||
|
The meaning of replication type
|
||||||
|
###################################
|
||||||
|
*Note: This subject to change.*
|
||||||
|
|
||||||
|
+-----+---------------------------------------------------------------------------+
|
||||||
|
|000 |no replication, just one copy |
|
||||||
|
+-----+---------------------------------------------------------------------------+
|
||||||
|
|001 |replicate once on the same rack |
|
||||||
|
+-----+---------------------------------------------------------------------------+
|
||||||
|
|010 |replicate once on a different rack in the same data center |
|
||||||
|
+-----+---------------------------------------------------------------------------+
|
||||||
|
|100 |replicate once on a different data center |
|
||||||
|
+-----+---------------------------------------------------------------------------+
|
||||||
|
|200 |replicate twice on two other different data center |
|
||||||
|
+-----+---------------------------------------------------------------------------+
|
||||||
|
|110 |replicate once on a different rack, and once on a different data center |
|
||||||
|
+-----+---------------------------------------------------------------------------+
|
||||||
|
|... |... |
|
||||||
|
+-----+---------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
So if the replication type is xyz
|
||||||
|
|
||||||
|
+-------+--------------------------------------------------------+
|
||||||
|
|**x** |number of replica in other data centers |
|
||||||
|
+-------+--------------------------------------------------------+
|
||||||
|
|**y** |number of replica in other racks in the same data center|
|
||||||
|
+-------+--------------------------------------------------------+
|
||||||
|
|**z** |number of replica in other servers in the same rack |
|
||||||
|
+-------+--------------------------------------------------------+
|
||||||
|
|
||||||
|
x,y,z each can be 0, 1, or 2. So there are 9 possible replication types, and can be easily extended.
|
||||||
|
Each replication type will physically create x+y+z+1 copies of volume data files.
|
||||||
|
|
||||||
|
Example topology configuration
|
||||||
|
###################################
|
||||||
|
|
||||||
|
The WeedFS master server tries to read the default topology configuration file are read from /etc/weedfs/weedfs.conf, if it exists. The topology setting to configure data center and racks file format is as this.
|
||||||
|
|
||||||
|
.. code-block:: xml
|
||||||
|
|
||||||
|
<Configuration>
|
||||||
|
<Topology>
|
||||||
|
<DataCenter name="dc1">
|
||||||
|
<Rack name="rack1">
|
||||||
|
<Ip>192.168.1.1</Ip>
|
||||||
|
</Rack>
|
||||||
|
</DataCenter>
|
||||||
|
<DataCenter name="dc2">
|
||||||
|
<Rack name="rack1">
|
||||||
|
<Ip>192.168.1.2</Ip>
|
||||||
|
</Rack>
|
||||||
|
<Rack name="rack2">
|
||||||
|
<Ip>192.168.1.3</Ip>
|
||||||
|
<Ip>192.168.1.4</Ip>
|
||||||
|
</Rack>
|
||||||
|
</DataCenter>
|
||||||
|
</Topology>
|
||||||
|
</Configuration>
|
||||||
|
|
||||||
|
Allocate File Key on specific data center
|
||||||
|
Volume servers can start with a specific data center name.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
weed volume -dir=/tmp/1 -port=8080 -dataCenter=dc1
|
||||||
|
weed volume -dir=/tmp/2 -port=8081 -dataCenter=dc2
|
||||||
|
|
||||||
|
Or the master server can determine the data center via volume server's IP address and settings in weed.conf file.
|
||||||
|
|
||||||
|
Now when requesting a file key, an optional "dataCenter" parameter can limit the assigned volume to the specific data center. For example, this specify
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
http://localhost:9333/dir/assign?dataCenter=dc1
|
Loading…
Reference in a new issue