瀏覽代碼

setup the run script

Chris Mague 4 年之前
父節點
當前提交
d9f4d3de07
共有 1 個文件被更改,包括 39 次插入7 次删除
  1. 39 7
      gen_port_setup.py

+ 39 - 7
gen_port_setup.py

@@ -1,12 +1,15 @@
 #!/usr/bin/python3
 
 import csv
+import os
 
-NUM_NODES=3
+NODE_IPS=["192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4"]
 NUM_CPUS=6
 RAFT_GROUP=3
 TOTAL_SLOTS=16384
 
+cluster_script = {}
+
 
 def bucket(seq, num):
     avg = len(seq) / float(num)
@@ -20,7 +23,19 @@ def bucket(seq, num):
     return out
 
 
-with open('/tmp/slots.csv', mode='w') as slots_file:
+try:
+    os.mkdir("/tmp/raft")
+except: 
+    dir = 1
+
+for ip in NODE_IPS:
+    try:
+        os.mkdir(os.path.join("/tmp/raft", ip))
+    except: 
+        dir = 1
+
+
+with open('/tmp/raft/slots.csv', mode='w') as slots_file:
     slots_writer = csv.writer(
         slots_file,
         delimiter=',',
@@ -28,15 +43,32 @@ with open('/tmp/slots.csv', mode='w') as slots_file:
         quoting=csv.QUOTE_MINIMAL)
     p = 1
     slot_row = []
-    for x in bucket(range(TOTAL_SLOTS), (NUM_NODES*NUM_CPUS)/RAFT_GROUP):
+    for x in bucket(range(TOTAL_SLOTS), (len(NODE_IPS)*NUM_CPUS)/RAFT_GROUP):
         r = "Slots: %s-%s Port: %d" %(x[0], x[-1], 19900 +p)
-        for i in range(0,4):
-            if len(slot_row) == NUM_NODES:
+        for i in range(0,RAFT_GROUP):
+            ip = NODE_IPS[len(slot_row)%len(NODE_IPS)]
+            if 19900+p in cluster_script:
+                cluster_script[19900+p].append(ip)
+            else:
+                cluster_script[19900+p] = [ip]
+            if len(slot_row) == len(NODE_IPS):
                 slots_writer.writerow(slot_row)
                 slot_row = []
-            else:
-                slot_row.append(r)
+            slot_row.append(r)
 
         p += 1
 
     slots_writer.writerow(slot_row)
+
+with open('/tmp/raft/setup_cluster.sh', mode='w') as outf:
+    outf.write("#!/bin/bash -ex\n\n\n")
+    for port in cluster_script:
+        outf.write("\necho \"Setting up Raft Groups - port %d\"\n\n" %port)
+        outf.write("/usr/local/bin/redis-cli -h %s -p %d raft.cluster init\n" %(cluster_script[port][0], port))
+        for x in cluster_script[port][1:]:
+            outf.write("/usr/local/bin/redis-cli -h %s -p %d raft.cluster join %s:%d\n" %(x, port, cluster_script[port][0], port))
+    outf.write("\n\n\n# Sleep until raft cluster is created\necho \"Waiting for Raft to stabilize\"\nsleep 10\n\n# Linking Shards\n\n")
+    l = list(cluster_script.keys())
+    for p in l[1:-1]:
+        outf.write("/usr/local/bin/redis-cli -h %s -p %d RAFT.SHARDGROUP LINK %s:%d\n" %(cluster_script[l[0]][0], l[0], cluster_script[p][0], p))
+