Skip to content
ეს გვერდი შეიქმნა და ითარგმნა ხელოვნური ინტელექტის დახმარებით. თუ შეამჩნევთ უზუსტობას, გთხოვთ, დაგვეხმარეთ გაუმჯობესებაში. GitHub-ზე რედაქტირება

Cluster-ის რეჟიმი

PRX-WAF ჰორიზონტალური გაშლისა და მაღალ-ხელმისაწვდომობისთვის მრავალ-კვანძი cluster-ის განასახებებს მხარს უჭერს. Cluster-ის რეჟიმი QUIC-ზე დაფუძნებულ კვანძ-კვანძ კომუნიკაციას, Raft-შთაგონებულ leader election-ს და ყველა კვანძზე წესების, კონფიგურაციის და უსაფრთხოების მოვლენების ავტომატურ სინქრონიზებას იყენებს.

INFO

Cluster-ის რეჟიმი სრულად opt-in-ია. ნაგულისხმევად PRX-WAF standalone რეჟიმში მუშაობს ნულოვანი cluster overhead-ით. კონფიგურაციაში [cluster] სექციის დამატებით ჩარ?თვა.

არქიტექტურა

PRX-WAF cluster ერთი main კვანძისა და ერთი ან მეტი worker კვანძისგან შედგება:

mermaid
graph TB
    subgraph Cluster["PRX-WAF Cluster"]
        MAIN["Main Node (node-a)<br/>Leader Election + Config Source"]
        WORKER1["Worker Node (node-b)<br/>Traffic Processing"]
        WORKER2["Worker Node (node-c)<br/>Traffic Processing"]
    end

    DB["PostgreSQL<br/>(Shared or Replicated)"]

    MAIN <-->|QUIC + mTLS| WORKER1
    MAIN <-->|QUIC + mTLS| WORKER2
    MAIN --> DB
    WORKER1 --> DB
    WORKER2 --> DB

კვანძ-როლები

როლიაღწერა
mainავტორიტეტულ კონფიგურაციასა და წეს-ნაკრებს ინახავს. განახლებებს worker-ებს უგზავნის. Leader election-ში მონაწილეობს.
workerტრაფიკს ამუშავებს და WAF-ის პაიფლაინს იყენებს. main კვანძიდან კონფიგ-ისა და წეს-განახლებებს იღებს. უსაფრთხოების მოვლენებს main-ს უბრუნებს.
autoRaft-შთაგონებულ leader election-ში მონაწილეობს. ნებისმიერი კვანძი შეიძლება main გახდეს.

რა სინქრონიზდება

მონაცემიმიმართულებაინტერვალი
წესებიMain-დან Worker-ებზეყოველ 10 წამში (კონფიგურირებადი)
კონფიგურაციაMain-დან Worker-ებზეყოველ 30 წამში (კონფიგურირებადი)
უსაფრთხოების მოვლენებიWorker-ებიდან Main-ზეყოველ 5 წამში ან 100 მოვლენაში (რომელიც ადრე)
სტატისტიკაWorker-ებიდან Main-ზეყოველ 10 წამში

კვანძ-კვანძ კომუნიკაცია

ყველა cluster კომუნიკაცია UDP-ის გავლით mutual TLS-ით (mTLS) QUIC-ს (Quinn-ის გავლით) იყენებს:

  • პორტი: 16851 (ნაგულისხმევი)
  • დაშიფვრა: ავტო-გენერირებული ან წინასწარ-გამზადებული სერთიფიკატებიანი mTLS
  • პროტოკოლი: მომხმარებლის ბინარ-პროტოკოლი QUIC სტრიმებზე
  • კავშირი: ავტო-ხელახლა-კავშირიანი მუდმივი

Leader Election

role = "auto"-ის კონფიგურაციისას კვანძები Raft-შთაგონებულ election პროტოკოლს იყენებს:

პარამეტრინაგულისხმევიაღწერა
timeout_min_ms150მინიმალური election timeout (შემთხვევითი დიაპაზონი)
timeout_max_ms300მაქსიმალური election timeout (შემთხვევითი დიაპაზონი)
heartbeat_interval_ms50Main-დან worker-ზე heartbeat ინტერვალი
phi_suspect8.0Phi accrual failure detector-ის საეჭვო ბარიერი
phi_dead12.0Phi accrual failure detector-ის მკვდარი ბარიერი

main კვანძის მიუწვდომლობისას worker-ები election-ის ინიციებამდე კონფიგურირებულ დიაპაზონში შემთხვევით timeout-ს ელოდება. ხმების უმრავლესობის პირველი მიმღები კვანძი ახალ main-ად ხდება.

Health მონიტორინგი

Cluster-ის health შემოწმება ყოველ კვანძზე სრულდება და peer-კავშირს აკვირდება:

toml
[cluster.health]
check_interval_secs   = 5    # Health check frequency
max_missed_heartbeats = 3    # Mark peer as unhealthy after N misses

არაჯანსაღი კვანძები cluster-იდან გამოირიცხება სიჯანსაღის აღდგენამდე და ხელახლა-სინქრონიზებამდე.

სერთიფიკატ-მართვა

Cluster-ის კვანძები mTLS სერთიფიკატებით ამოიცნობენ ერთმანეთს:

  • ავტო-გენერირების რეჟიმი: main კვანძი CA სერთიფიკატს გენერირებს და კვანძ-სერთიფიკატებს ავტომატურად პირველი სტარტისას ხელს მოაწერებს. Worker კვანძები სერთიფიკატებს join-ის პროცესში იღებს.
  • წინასწარ-გამზადებული რეჟიმი: სერთიფიკატები ოფლაინ-რეჟიმში გენერირდება და სტარტამდე ყოველ კვანძზე ნაწილდება.
toml
[cluster.crypto]
ca_cert        = "/certs/cluster-ca.pem"
node_cert      = "/certs/node-a.pem"
node_key       = "/certs/node-a.key"
auto_generate  = true
ca_validity_days    = 3650   # 10 years
node_validity_days  = 365    # 1 year
renewal_before_days = 7      # Auto-renew 7 days before expiry

შემდეგი ნაბიჯები

Released under the Apache-2.0 License.