প্রতিদ্বন্দ্বী মাইগ্রেশন গাইড
অন্ধভাবে কাটওভার না করে HAProxy থেকে Webship এ স্থানান্তর করুন
HTTP ফ্রন্টএন্ড, ব্যাকএন্ড, হেলথ চেক, ব্যালান্সিং, টাইমআউট এবং সার্টিফিকেট হ্যান্ডলিংকে Webship এ স্থানান্তর করুন, একই সময়ে একটি দ্রুত রোলব্যাক পথ সংরক্ষণ করুন।
ট্রাফিক পরিবর্তনের আগে মাইগ্রেশনের সীমানা নির্ধারণ করুন।
শুধু সেই আচরণটি সরানো শুরু করুন যা Webship পুনরায় উৎপাদন এবং যাচাই করতে পারে। অ্যাপ্লিকেশন প্রমাণীকরণ, সার্ভিস ডিসকভারি, স্ক্রিপ্ট, এবং বিশেষায়িত ক্যাশ নিয়মগুলি বিদ্যমান অরিজিনে রাখতে হবে যতক্ষণ না তাদের প্রতিস্থাপন প্রোডাকশন-এর মতো টেস্ট উত্তীর্ণ হয়।
সর্বনিম্ন উৎপাদন পথটি প্রথমে অনুবাদ করুন।
সোর্স ফ্র্যাগমেন্টটি মাইগ্রেশন ধারণা নির্দেশ করে; Webship ফ্র্যাগমেন্টটি লক্ষ্য আকার দেখায়। উদাহরণ ডোমেইন, ঠিকানা, সার্টিফিকেট, সীমা এবং স্বাস্থ্য পথগুলি আপনার পরিবেশের জন্য যাচাই করা মান দিয়ে প্রতিস্থাপন করুন।
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 checklisten = "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 / frontend | listen + [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
ইনভেন্টরি পর্যবেক্ষণযোগ্য আচরণ
লিসেনার, ডোমেইন, রুট, আপস্ট্রিম, সার্টিফিকেট, পুনর্লিখন, প্রমাণীকরণ, ক্যাশ নিয়ম, স্বাস্থ্য পরীক্ষক, সীমাহীনতা, এবং কার্যকরী ইন্টিগ্রেশন রেকর্ড করুন।
- 2
একটি সীমানা অনুবাদ করুন
একটি হোস্ট বা রাউটকে কঠোর TOML-এ স্থানান্তর করুন। আলাদা প্রতিস্থাপন প্রমাণিত না হওয়া পর্যন্ত ভেন্ডার-নির্দিষ্ট মডিউল এবং অ্যাপ্লিকেশন লজিক Webship এর পিছনে রাখুন।
- 3
অফলাইনে এবং স্থানীয়ভাবে যাচাই করুন
--check-config এবং --print-effective-config চালান, রেড্যাক্টেড ফলাফল পরীক্ষা করুন, স্থানীয়ভাবে স্বাস্থ্যের পরীক্ষা করুন, এবং HTTP/3 সক্রিয় থাকলে TCP এবং UDP উভয়ের উপর TLS ব্যবহার করুন।
- 4
কেনারি বাস্তব ট্রাফিক
ছোট, পর্যবেক্ষণযোগ্য ট্রাফিক স্লাইস Webship-এ পাঠান। স্ট্যাটাস কোড, হেডার, বডি, ল্যাটেন্সি, আপস্ট্রিম স্বাস্থ্যের, ক্যাশের আচরণ, লগ, এবং নিরাপত্তা সিদ্ধান্তের সাথে তুলনা করুন।
- 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