← تمام مائیگریشن گائیڈز

مقابل کمپنی کا مائگریشن گائیڈ

بغیر کسی بلائنڈ کٹ اوور کے HAProxy سے Webship میں منتقل کریں۔

HTTP فرنٹ اینڈز، بیک اینڈز، ہیل्थ چیکس، بیلنسنگ، ٹائم آؤٹس، اور سرٹیفکیٹ ہینڈلنگ کو Webship میں منتقل کریں جبکہ ایک تیز رول بیک راستہ برقرار رکھیں۔

لاگو ہوتا ہے Webship 1.1.0 پرhaproxy.cfg

ٹریفک کو تبدیل کرنے سے پہلے مائیگریشن کی حد کو متعین کریں۔

صرف اس رویے کو منتقل کرنا شروع کریں جسے Webship دوبارہ پیدا اور تصدیق کر سکتا ہے۔ درخواست کی تصدیق، سروس کی دریافت، اسکرپٹ، اور مخصوص کیش قواعد کو موجودہ ماخذ پر چھوڑ دیں جب تک کہ ان کے متبادل پیداواری جیسے ٹیسٹ پاس نہ کر لیں۔

سب سے چھوٹے پروڈکشن راستے کو پہلے ترجمہ کریں۔

ماخذ fragment migration کے تصور کی نشاندہی کرتا ہے؛ Webship fragment ہدف کی شکل دکھاتا ہے۔ example domains، addresses، certificates، limits، اور health paths کو اپنی ماحول کیلئے validation شدہ اقدار سے تبدیل کریں۔

نمائندہ HAProxy ترتیب
frontend https
  bind :443 ssl crt /etc/haproxy/app.pem
  default_backend app
backend app
  balance roundrobin
  server app1 127.0.0.1:8080 check
  server app2 127.0.0.1:8081 check
متوازی Webship TOML
listen = "0.0.0.0:443"
workers = 4

[reverse_proxy]
enabled = true
connect_timeout_ms = 2000
max_retries = 0

[reverse_proxy.protocols]
h1 = true
h2 = true
h3 = true

[reverse_proxy.tls]
cert = "/etc/letsencrypt/live/app.example.com/fullchain.pem"
key = "/etc/letsencrypt/live/app.example.com/privkey.pem"

[[reverse_proxy.routes]]
domain = "app.example.com"
path_prefix = "/"
upstreams = ["127.0.0.1:8080", "127.0.0.1:8081"]
load_balancing = "weighted-peak-ewma"

[[reverse_proxy.upstreams]]
address = "127.0.0.1:8080"
protocol = "http1"
health_check_path = "/health"
health_check_interval_ms = 5000
health_check_timeout_ms = 1000

[[reverse_proxy.upstreams]]
address = "127.0.0.1:8081"
protocol = "http1"
health_check_path = "/health"
health_check_interval_ms = 5000
health_check_timeout_ms = 1000

[[reverse_proxy.policies]]
name = "default"
hosts = []
path_prefixes = ["/"]
methods = []
max_body_bytes = 1048576
total_timeout_ms = 30000

مفاہیم کو نقشہ بنائیں، نحو کو نہیں۔

ٹیکنیکل ہدایات ہمیشہ ایک سے ایک میل نہیں کھاتیں۔ اس جدول کا استعمال کریں تاکہ مساوی Webship کنفیگریشن ایریا معلوم کریں، پھر مؤثر کنفیگریشن اور رن ٹائم رویہ کی تصدیق کریں۔

موجودہ تصور یا ہدایتWebship ترتیب کا ہدف
listener / frontendlisten + [reverse_proxy.protocols]
host + path matcher[[reverse_proxy.routes]]
backend / cluster / service[[reverse_proxy.upstreams]]
health probe[[reverse_proxy.upstreams]].health_check_*
request limits and timeouts[[reverse_proxy.policies]]
certificate and private key[reverse_proxy.tls] / [[sites]] cert + key

ایک قابلِ واپسی پانچ مرحلوں والا کٹ اوور استعمال کریں۔

پرانا سننے والا تیار رکھیں جب تک کہ Webship نمائندہ ٹریفک پر درستگی، صلاحیت، سیکیورٹی، قابلِ مشاہدہ اور رول بیک گیٹس سے نہ گزر جائے۔

  1. 1

    انفینٹوری مشاہدہ شدہ رویہ

    سننے والوں، ڈومینز، راستے، اپ اسٹریمز، سرٹیفکیٹس، ری رائٹس، توثیق، کیش قوانین، صحت کے پروبز، حدود، اور عملیاتی انضمامات ریکارڈ کریں۔

  2. 2

    ایک حد ترجمہ کریں

    ایک ہوسٹ یا روٹ کو سخت TOML میں منتقل کریں۔ سپلائر مخصوص ماڈیولز اور ایپلیکیشن لاجک کو Webship کے پیچھے رکھیں جب تک کہ الگ متبادل ثابت نہ ہو جائیں۔

  3. 3

    آف لائن اور مقامی طور پر تصدیق کریں

    --check-config اور --print-effective-config چلائیں، حاشیہ دار نتیجہ کا معائنہ کریں، مقامی طور پر صحت کا جائزہ لیں، اور TLS کو TCP اور UDP دونوں پر استعمال کریں جب HTTP/3 فعال ہو۔

  4. 4

    کینری حقیقی ٹریفک

    Webship کو چھوٹا، قابل مشاہدہ ٹریفک سلائس بھیجیں۔ اسٹیٹس کوڈز، ہیڈرز، باڈیز، لیٹینسی، اپ اسٹریم صحت، کیش رویے، لاگز، اور سیکیورٹی فیصلوں کا موازنہ کریں۔

  5. 5

    پروموٹ کریں، واپس پلٹنے کے لیے تیار رہیں

    ماپے گئے مراحل میں ٹریفک بڑھائیں۔ پچھلا ہدف صحت مند اور فوری طور پر قابلِ راستہ رہنے دیں جب تک کہ متفقہ مشاہدہ کی ونڈو اور لوڈ گیٹس مکمل نہ ہو جائیں۔

پہلے تصدیق کریں۔ لائیو ایڈیٹنگ کے بجائے راؤٹنگ کے ذریعے واپس جائیں۔

امیدوار فائل کی تصدیق کریں، مخفی مؤثر کنفیگریشن کا معائنہ کریں، اور ٹریفک تبدیل کرنے سے پہلے نجی لسنر کی جانچ کریں۔ پرانے بائنری، کنفیگریشن، لسنر، اور DNS یا لوڈ بیلینسر کے ہدف کو مشاہداتی ونڈو کے بند ہونے تک محفوظ کریں۔

/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:443/health