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
76 lines
2.4 KiB
Bash
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!"
|