fix: docker swarm (master)
This commit is contained in:
parent
24d26c8635
commit
d0419e709d
@ -1,6 +1,7 @@
|
|||||||
import socket
|
import socket
|
||||||
import json
|
import json
|
||||||
import docker
|
import docker
|
||||||
|
import time
|
||||||
|
|
||||||
class ClusterCommunicationModule():
|
class ClusterCommunicationModule():
|
||||||
def __init__(self, host, port, node_manager):
|
def __init__(self, host, port, node_manager):
|
||||||
@ -40,6 +41,15 @@ class ClusterCommunicationModule():
|
|||||||
if not cont:
|
if not cont:
|
||||||
break
|
break
|
||||||
elif data == '[CHECK]': # master side
|
elif data == '[CHECK]': # master side
|
||||||
|
# build docker swarm
|
||||||
|
self.node_manager.docker_client.swarm.init(advertise_addr=self.host, listen_addr=f"{self.host}:2377", force_new_cluster=True)
|
||||||
|
|
||||||
|
# send docker swarm token to the worker
|
||||||
|
token = self.node_manager.docker_client.swarm.attrs['JoinTokens']['Worker']
|
||||||
|
conn.send(f'[DOCKER_TOKEN] {token}'.encode())
|
||||||
|
print(f"Send token: {token} to the worker.")
|
||||||
|
time.sleep(3)
|
||||||
|
|
||||||
self.worker_conns.append(conn)
|
self.worker_conns.append(conn)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@ -81,26 +91,18 @@ class ClusterCommunicationModule():
|
|||||||
data = self.client_sock.recv(1024)
|
data = self.client_sock.recv(1024)
|
||||||
data = data.decode()
|
data = data.decode()
|
||||||
|
|
||||||
if data == '[REJECT]':
|
|
||||||
print(f"{host} reject.")
|
|
||||||
status = False
|
|
||||||
elif data == '[ACCEPT]':
|
|
||||||
self.node_manager.status = 'master'
|
|
||||||
print(f"{host} accept.")
|
|
||||||
|
|
||||||
# build docker swarm
|
|
||||||
self.node_manager.docker_client.init(advertise_addr="eth0", listen_addr=f"{self.host}:2377", force_new_cluster=True)
|
|
||||||
token = self.node_manager.docker_client.attrs['JoinTokens']['Worker']
|
|
||||||
self.client_sock.send(f'[DOCKER_TOKEN] {token}'.encode())
|
|
||||||
|
|
||||||
status = True
|
|
||||||
|
|
||||||
# close client_sock, and waiting for the worker connect to our self.sock
|
# close client_sock, and waiting for the worker connect to our self.sock
|
||||||
self.client_sock.close()
|
self.client_sock.close()
|
||||||
self.client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
self.client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
|
||||||
|
|
||||||
return status
|
if data == '[REJECT]':
|
||||||
|
print(f"{host} reject.")
|
||||||
|
return False
|
||||||
|
elif data == '[ACCEPT]':
|
||||||
|
self.node_manager.status = 'master'
|
||||||
|
print(f"{host} accept.")
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def cluster_info(self):
|
def cluster_info(self):
|
||||||
ans = []
|
ans = []
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user