Files
madbase/scripts/deploy-4server.sh
Vlad Durnea cffdf8af86
Some checks failed
CI/CD Pipeline / unit-tests (push) Failing after 1m16s
CI/CD Pipeline / integration-tests (push) Failing after 2m32s
CI/CD Pipeline / lint (push) Successful in 5m22s
CI/CD Pipeline / e2e-tests (push) Has been skipped
CI/CD Pipeline / build (push) Has been skipped
wip:milestone 0 fixes
2026-03-15 12:35:42 +02:00

76 lines
2.4 KiB
Bash

#!/bin/bash
# Deploy MadBase 4-Server Architecture
set -e
SERVER1_IP="10.0.0.1"
SERVER2_IP="10.0.0.2"
SERVER3_IP="10.0.0.3"
SERVER4_IP="10.0.0.4"
DEPLOY_PATH="/opt/madbase"
echo "🚀 Deploying MadBase 4-Server Architecture..."
deploy_to_server() {
local server_ip=$1
local compose_file=$2
local env_file=$3
echo "📦 Deploying to $server_ip..."
ssh root@$server_ip "mkdir -p $DEPLOY_PATH"
scp $compose_file root@$server_ip:$DEPLOY_PATH/docker-compose.yml
if [ -n "$env_file" ]; then
scp $env_file root@$server_ip:$DEPLOY_PATH/.env
fi
if [[ "$server_ip" =~ (10.0.0.2|10.0.0.3|10.0.0.4) ]]; then
scp autobase-haproxy.cfg root@$server_ip:$DEPLOY_PATH/
fi
ssh root@$server_ip "cd $DEPLOY_PATH && podman network create madbase_net || true"
echo "✅ Files copied to $server_ip"
}
echo "📡 Server 1: Control Plane"
deploy_to_server $SERVER1_IP "docker-compose.4server.server1.yml" ""
echo ""
echo "🗄️ Server 2: Worker 1 + Autobase Node 1"
deploy_to_server $SERVER2_IP "docker-compose.4server.server2.yml" "env/autobase.4server.server2.env"
echo ""
echo "📊 Server 3: Workers 3,4 + Autobase Node 2"
deploy_to_server $SERVER3_IP "docker-compose.4server.server3.yml" "env/autobase.4server.server3.env"
echo ""
echo "🗄️ Server 4: Worker 5 + Autobase Node 3"
deploy_to_server $SERVER4_IP "docker-compose.4server.server4.yml" "env/autobase.4server.server4.env"
echo ""
echo "🔄 Starting Autobase cluster..."
for server in $SERVER2_IP $SERVER3_IP $SERVER4_IP; do
ssh root@$server "cd $DEPLOY_PATH && podman-compose up -d etcd patroni haproxy"
done
echo ""
echo "⏳ Waiting for etcd cluster (30s)..."
sleep 30
echo "🔍 Verifying Autobase cluster..."
for server in $SERVER2_IP $SERVER3_IP $SERVER4_IP; do
state=$(curl -s http://$server:8008/patroni/info | jq -r '.state // "unknown"')
role=$(curl -s http://$server:8008/patroni/info | jq -r '.role // "unknown"')
echo " $server: $state ($role)"
done
echo ""
echo "🚀 Starting application services..."
ssh root@$SERVER1_IP "cd $DEPLOY_PATH && podman-compose up -d"
ssh root@$SERVER2_IP "cd $DEPLOY_PATH && podman-compose up -d worker1"
ssh root@$SERVER3_IP "cd $DEPLOY_PATH && podman-compose up -d worker3 worker4 victoriametrics loki"
ssh root@$SERVER4_IP "cd $DEPLOY_PATH && podman-compose up -d worker5"
echo ""
echo "🎉 Deployment complete!"