feat(cluster): module Haute Disponibilité (Cluster HA Actif/Passif Keepalived VRRP & Réplication temps réel)
This commit is contained in:
1 parent
bee2055b62
commit
521f21dc9c
10 files changed
+1310
-7
No files matched your search
@@ -74,6 +74,16 @@ try {
|
||||
exit;
|
||||
}
|
||||
|
||||
// Action inter-serveurs réplication Cluster (authentifiée par signature HMAC)
|
||||
if ($action === 'cluster_receive_sync') {
|
||||
$rawBody = file_get_contents('php://input') ?: '';
|
||||
$signature = $_SERVER['HTTP_X_NEXUS_CLUSTER_SIGNATURE'] ?? '';
|
||||
$cm = new ClusterManager($db);
|
||||
$res = $cm->receiveSyncPayload($rawBody, $signature);
|
||||
echo json_encode($res);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Toutes les autres actions requièrent une session authentifiée
|
||||
if (!Auth::isAuthenticated()) {
|
||||
http_response_code(401);
|
||||
@@ -2414,6 +2424,40 @@ try {
|
||||
}
|
||||
break;
|
||||
|
||||
case 'cluster_status':
|
||||
$cm = new ClusterManager($db);
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'status' => $cm->getClusterStatus(),
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'cluster_interfaces':
|
||||
$cm = new ClusterManager($db);
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'interfaces' => $cm->detectNetworkInterfaces(),
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'cluster_save':
|
||||
$cm = new ClusterManager($db);
|
||||
$res = $cm->saveSettings($payload);
|
||||
echo json_encode($res);
|
||||
break;
|
||||
|
||||
case 'cluster_sync_now':
|
||||
$cm = new ClusterManager($db);
|
||||
$res = $cm->pushSyncToPeer();
|
||||
echo json_encode($res);
|
||||
break;
|
||||
|
||||
case 'cluster_switchover':
|
||||
$cm = new ClusterManager($db);
|
||||
$res = $cm->triggerSwitchover();
|
||||
echo json_encode($res);
|
||||
break;
|
||||
|
||||
default:
|
||||
http_response_code(400);
|
||||
echo json_encode([
|
||||
|
||||
Reference in new issue
Block a user