Browse code

Merge "Allow to configure a number of swift replicas."

Jenkins authored on 2012/02/25 02:12:51
Showing 3 changed files
1 1
deleted file mode 100755
... ...
@@ -1,26 +0,0 @@
1
-#!/bin/bash
2
-
3
-cd %SWIFT_CONFIG_LOCATION%
4
-
5
-rm -f *.builder *.ring.gz backups/*.builder backups/*.ring.gz
6
-
7
-swift-ring-builder object.builder create %SWIFT_PARTITION_POWER_SIZE% 3 1
8
-swift-ring-builder object.builder add z1-127.0.0.1:6010/sdb1 1
9
-swift-ring-builder object.builder add z2-127.0.0.1:6020/sdb2 1
10
-swift-ring-builder object.builder add z3-127.0.0.1:6030/sdb3 1
11
-swift-ring-builder object.builder add z4-127.0.0.1:6040/sdb4 1
12
-swift-ring-builder object.builder rebalance
13
-
14
-swift-ring-builder container.builder create %SWIFT_PARTITION_POWER_SIZE% 3 1
15
-swift-ring-builder container.builder add z1-127.0.0.1:6011/sdb1 1
16
-swift-ring-builder container.builder add z2-127.0.0.1:6021/sdb2 1
17
-swift-ring-builder container.builder add z3-127.0.0.1:6031/sdb3 1
18
-swift-ring-builder container.builder add z4-127.0.0.1:6041/sdb4 1
19
-swift-ring-builder container.builder rebalance
20
-
21
-swift-ring-builder account.builder create %SWIFT_PARTITION_POWER_SIZE% 3 1
22
-swift-ring-builder account.builder add z1-127.0.0.1:6012/sdb1 1
23
-swift-ring-builder account.builder add z2-127.0.0.1:6022/sdb2 1
24
-swift-ring-builder account.builder add z3-127.0.0.1:6032/sdb3 1
25
-swift-ring-builder account.builder add z4-127.0.0.1:6042/sdb4 1
26
-swift-ring-builder account.builder rebalance
27 1
deleted file mode 100755
... ...
@@ -1,3 +0,0 @@
1
-#!/bin/bash
2
-
3
-swift-init all restart
... ...
@@ -403,6 +403,12 @@ SWIFT_LOOPBACK_DISK_SIZE=${SWIFT_LOOPBACK_DISK_SIZE:-1000000}
403 403
 # By default we define 9 for the partition count (which mean 512).
404 404
 SWIFT_PARTITION_POWER_SIZE=${SWIFT_PARTITION_POWER_SIZE:-9}
405 405
 
406
+# This variable allows you to configure how many replicas you want to be
407
+# configured for your Swift cluster.  By default the three replicas would need a
408
+# bit of IO and Memory on a VM you may want to lower that to 1 if you want to do
409
+# only some quick testing.
410
+SWIFT_REPLICAS=${SWIFT_REPLICAS:-3}
411
+
406 412
 # We only ask for Swift Hash if we have enabled swift service.
407 413
 if is_service_enabled swift; then
408 414
     # SWIFT_HASH is a random unique string for a swift cluster that
... ...
@@ -968,21 +974,24 @@ if is_service_enabled swift; then
968 968
 
969 969
     # We then create link to that mounted location so swift would know
970 970
     # where to go.
971
-    for x in {1..4}; do sudo ln -sf ${SWIFT_DATA_LOCATION}/drives/sdb1/$x ${SWIFT_DATA_LOCATION}/$x; done
971
+    for x in $(seq ${SWIFT_REPLICAS}); do
972
+        sudo ln -sf ${SWIFT_DATA_LOCATION}/drives/sdb1/$x ${SWIFT_DATA_LOCATION}/$x; done
972 973
 
973 974
     # We now have to emulate a few different servers into one we
974 975
     # create all the directories needed for swift
975
-    tmpd=""
976
-    for d in ${SWIFT_DATA_LOCATION}/drives/sdb1/{1..4} \
977
-        ${SWIFT_CONFIG_LOCATION}/{object,container,account}-server \
978
-        ${SWIFT_DATA_LOCATION}/{1..4}/node/sdb1 /var/run/swift; do
979
-        [[ -d $d ]] && continue
980
-        sudo install -o ${USER} -g $USER_GROUP -d $d
976
+    for x in $(seq ${SWIFT_REPLICAS}); do
977
+            drive=${SWIFT_DATA_LOCATION}/drives/sdb1/${x}
978
+            node=${SWIFT_DATA_LOCATION}/${x}/node
979
+            node_device=${node}/sdb1
980
+            [[ -d $node ]] && continue
981
+            [[ -d $drive ]] && continue
982
+            sudo install -o ${USER} -g $USER_GROUP -d $drive
983
+            sudo install -o ${USER} -g $USER_GROUP -d $node_device
984
+            sudo chown -R $USER: ${node}
981 985
     done
982 986
 
983
-   # We do want to make sure this is all owned by our user.
984
-   sudo chown -R $USER: ${SWIFT_DATA_LOCATION}/{1..4}/node
985
-   sudo chown -R $USER: ${SWIFT_CONFIG_LOCATION}
987
+   sudo mkdir -p ${SWIFT_CONFIG_LOCATION}/{object,container,account}-server /var/run/swift
988
+   sudo chown -R $USER: ${SWIFT_CONFIG_LOCATION} /var/run/swift
986 989
 
987 990
    # swift-init has a bug using /etc/swift until bug #885595 is fixed
988 991
    # we have to create a link
... ...
@@ -1023,7 +1032,7 @@ if is_service_enabled swift; then
1023 1023
        local log_facility=$3
1024 1024
        local node_number
1025 1025
 
1026
-       for node_number in {1..4}; do
1026
+       for node_number in $(seq ${SWIFT_REPLICAS}); do
1027 1027
            node_path=${SWIFT_DATA_LOCATION}/${node_number}
1028 1028
            sed -e "s,%SWIFT_CONFIG_LOCATION%,${SWIFT_CONFIG_LOCATION},;s,%USER%,$USER,;s,%NODE_PATH%,${node_path},;s,%BIND_PORT%,${bind_port},;s,%LOG_FACILITY%,${log_facility}," \
1029 1029
                $FILES/swift/${server_type}-server.conf > ${SWIFT_CONFIG_LOCATION}/${server_type}-server/${node_number}.conf
... ...
@@ -1046,29 +1055,48 @@ if is_service_enabled swift; then
1046 1046
        tee /etc/rsyslog.d/10-swift.conf
1047 1047
    sudo restart rsyslog
1048 1048
 
1049
-   # We create two helper scripts :
1050
-   #
1051
-   # - swift-remakerings
1052
-   #   Allow to recreate rings from scratch.
1053
-   # - swift-startmain
1054
-   #   Restart your full cluster.
1055
-   #
1056
-   sed -e "s,%SWIFT_CONFIG_LOCATION%,${SWIFT_CONFIG_LOCATION},;s/%SWIFT_PARTITION_POWER_SIZE%/$SWIFT_PARTITION_POWER_SIZE/" $FILES/swift/swift-remakerings | \
1057
-       sudo tee /usr/local/bin/swift-remakerings
1058
-   sudo install -m755 $FILES/swift/swift-startmain /usr/local/bin/
1049
+   # This is where we create three different rings for swift with
1050
+   # different object servers binding on different ports.
1051
+   pushd ${SWIFT_CONFIG_LOCATION} >/dev/null && {
1052
+
1053
+       rm -f *.builder *.ring.gz backups/*.builder backups/*.ring.gz
1054
+
1055
+       port_number=6010
1056
+       swift-ring-builder object.builder create ${SWIFT_PARTITION_POWER_SIZE} ${SWIFT_REPLICAS} 1
1057
+       for x in $(seq ${SWIFT_REPLICAS}); do
1058
+           swift-ring-builder object.builder add z${x}-127.0.0.1:${port_number}/sdb1 1
1059
+           port_number=$[port_number + 10]
1060
+       done
1061
+       swift-ring-builder object.builder rebalance
1062
+
1063
+       port_number=6011
1064
+       swift-ring-builder container.builder create ${SWIFT_PARTITION_POWER_SIZE} ${SWIFT_REPLICAS} 1
1065
+       for x in $(seq ${SWIFT_REPLICAS}); do
1066
+           swift-ring-builder container.builder add z${x}-127.0.0.1:${port_number}/sdb1 1
1067
+           port_number=$[port_number + 10]
1068
+       done
1069
+       swift-ring-builder container.builder rebalance
1070
+
1071
+       port_number=6012
1072
+       swift-ring-builder account.builder create ${SWIFT_PARTITION_POWER_SIZE} ${SWIFT_REPLICAS} 1
1073
+       for x in $(seq ${SWIFT_REPLICAS}); do
1074
+           swift-ring-builder account.builder add z${x}-127.0.0.1:${port_number}/sdb1 1
1075
+           port_number=$[port_number + 10]
1076
+       done
1077
+       swift-ring-builder account.builder rebalance
1078
+
1079
+   } && popd >/dev/null
1080
+
1059 1081
    sudo chmod +x /usr/local/bin/swift-*
1060 1082
 
1061 1083
    # We then can start rsync.
1062 1084
    sudo /etc/init.d/rsync restart || :
1063 1085
 
1064
-   # Create our ring for the object/container/account.
1065
-   /usr/local/bin/swift-remakerings
1066
-
1067
-   # And now we launch swift-startmain to get our cluster running
1068
-   # ready to be tested.
1069
-   /usr/local/bin/swift-startmain || :
1086
+   # TODO: Bring some services in foreground.
1087
+   # Launch all services.
1088
+   swift-init all start
1070 1089
 
1071
-   unset s swift_hash swift_auth_server tmpd
1090
+   unset s swift_hash swift_auth_server
1072 1091
 fi
1073 1092
 
1074 1093
 # Volume Service