Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Γεια σας, με λένε Kostya Kramlikh, είμαι ο κύριος προγραμματιστής του τμήματος Virtual Private Cloud στο Yandex.Cloud. Είμαι εικονικός δικτυωτής και, όπως μπορείτε να μαντέψετε, σε αυτό το άρθρο θα μιλήσω για τη συσκευή Virtual Private Cloud (VPC) γενικά και το εικονικό δίκτυο ειδικότερα. Και θα μάθετε επίσης γιατί εμείς, οι προγραμματιστές της υπηρεσίας, εκτιμούμε τα σχόλια των χρηστών μας. Πρώτα όμως πρώτα.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Τι είναι το VPC;

Σήμερα, υπάρχει μια ποικιλία επιλογών για την ανάπτυξη υπηρεσιών. Είμαι βέβαιος ότι κάποιος εξακολουθεί να διατηρεί τον διακομιστή κάτω από το γραφείο του διαχειριστή, αν και ελπίζω να υπάρχουν λιγότερες τέτοιες ιστορίες.

Τώρα οι υπηρεσίες προσπαθούν να πάνε στα δημόσια σύννεφα και εδώ συγκρούονται με τα VPC. Το VPC είναι μέρος ενός δημόσιου νέφους που συνδέει μεταξύ τους χρήστες, υποδομές, πλατφόρμα και άλλες δυνατότητες, όπου κι αν βρίσκονται, στο Cloud μας ή εκτός αυτού. Ταυτόχρονα, το VPC σάς επιτρέπει να μην εκθέτετε αυτές τις δυνατότητες στο Διαδίκτυο άσκοπα, παραμένουν μέσα στο απομονωμένο δίκτυό σας.

Πώς φαίνεται ένα εικονικό δίκτυο από έξω;

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Με τον όρο VPC, εννοούμε πρωτίστως ένα δίκτυο επικάλυψης και υπηρεσίες δικτύου, όπως VPNaaS, NATaas, LBaas, κ.λπ. υπέροχο άρθρο εδώ, στο Habré.

Ας ρίξουμε μια πιο προσεκτική ματιά στο εικονικό δίκτυο και τη συσκευή του.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Εξετάστε δύο ζώνες διαθεσιμότητας. Παρέχουμε ένα εικονικό δίκτυο - αυτό που ονομάσαμε VPC. Στην πραγματικότητα, ορίζει τον χώρο της μοναδικότητας των «γκρίζων» διευθύνσεών σας. Μέσα σε κάθε εικονικό δίκτυο, έχετε τον πλήρη έλεγχο του χώρου των διευθύνσεων που μπορείτε να εκχωρήσετε στον υπολογισμό των πόρων.

Το δίκτυο είναι παγκόσμιο. Ταυτόχρονα, προβάλλεται σε κάθε μία από τις ζώνες διαθεσιμότητας με τη μορφή μιας οντότητας που ονομάζεται Subnet. Για κάθε υποδίκτυο, εκχωρείτε ένα CIDR μεγέθους 16 ή λιγότερο. Μπορεί να υπάρχουν περισσότερες από μία τέτοιες οντότητες σε κάθε ζώνη διαθεσιμότητας και υπάρχει πάντα διαφανής δρομολόγηση μεταξύ τους. Αυτό σημαίνει ότι όλοι οι πόροι σας στο ίδιο VPC μπορούν να "μιλούν" μεταξύ τους, ακόμα κι αν βρίσκονται σε διαφορετικές Ζώνες Διαθεσιμότητας. «Επικοινωνούν» χωρίς πρόσβαση στο Διαδίκτυο, μέσω των εσωτερικών μας καναλιών, «νομίζοντας» ότι βρίσκονται μέσα στο ίδιο ιδιωτικό δίκτυο.

Το παραπάνω διάγραμμα δείχνει μια τυπική κατάσταση: δύο VPC που τέμνονται κάπου στις διευθύνσεις. Και τα δύο μπορεί να είναι δικά σας. Για παράδειγμα, το ένα για ανάπτυξη, το άλλο για δοκιμή. Μπορεί απλώς να υπάρχουν διαφορετικοί χρήστες - σε αυτήν την περίπτωση δεν έχει σημασία. Και μια εικονική μηχανή είναι συνδεδεμένη σε κάθε VPC.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Ας κάνουμε το σχέδιο χειρότερο. Μπορείτε να το κάνετε έτσι ώστε μια εικονική μηχανή να είναι κολλημένη σε πολλά υποδίκτυα ταυτόχρονα. Και όχι μόνο έτσι, αλλά σε διαφορετικά εικονικά δίκτυα.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Ταυτόχρονα, εάν χρειάζεται να εκθέσετε μηχανές στο Διαδίκτυο, αυτό μπορεί να γίνει μέσω του API ή του UI. Για να το κάνετε αυτό, πρέπει να διαμορφώσετε τη μετάφραση NAT της "γκρίζας", εσωτερικής σας διεύθυνσης, σε "λευκή" - δημόσια. Δεν μπορείτε να επιλέξετε μια "λευκή" διεύθυνση, εκχωρείται τυχαία από το σύνολο των διευθύνσεών μας. Μόλις σταματήσετε να χρησιμοποιείτε την εξωτερική IP, επιστρέφεται στην πισίνα. Πληρώνετε μόνο για το χρόνο χρήσης της «λευκής» διεύθυνσης.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Είναι επίσης δυνατό να δοθεί στο μηχάνημα πρόσβαση στο Διαδίκτυο χρησιμοποιώντας μια παρουσία NAT. Μπορείτε να δρομολογήσετε την κυκλοφορία σε μια παρουσία μέσω ενός στατικού πίνακα δρομολόγησης. Έχουμε παράσχει μια τέτοια θήκη, επειδή οι χρήστες τη χρειάζονται μερικές φορές και το γνωρίζουμε. Αντίστοιχα, ο κατάλογος εικόνων μας περιέχει μια ειδικά διαμορφωμένη εικόνα NAT.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Αλλά ακόμα και όταν υπάρχει έτοιμη εικόνα NAT, η ρύθμιση μπορεί να είναι δύσκολη. Καταλάβαμε ότι για ορισμένους χρήστες αυτή δεν είναι η πιο βολική επιλογή, οπότε στο τέλος καταστήσαμε δυνατή την ενεργοποίηση του NAT για το επιθυμητό υποδίκτυο με ένα κλικ. Αυτή η δυνατότητα εξακολουθεί να βρίσκεται σε κλειστή πρόσβαση προεπισκόπησης, όπου δοκιμάζεται με τη βοήθεια μελών της κοινότητας.

Πώς είναι διατεταγμένο το εικονικό δίκτυο από μέσα

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Πώς αλληλεπιδρά ο χρήστης με το εικονικό δίκτυο; Ο ιστός φαίνεται προς τα έξω με το API του. Ο χρήστης έρχεται στο API και εργάζεται με την κατάσταση προορισμού. Μέσω του API, ο χρήστης βλέπει πώς πρέπει να τακτοποιούνται και να ρυθμίζονται τα πάντα, ενώ βλέπει την κατάσταση, πόσο διαφέρει η πραγματική κατάσταση από την επιθυμητή. Αυτή είναι μια εικόνα του χρήστη. Τι συμβαίνει μέσα;

Γράφουμε την επιθυμητή κατάσταση στη βάση δεδομένων Yandex και πηγαίνουμε στη διαμόρφωση διαφορετικών τμημάτων του VPC μας. Το δίκτυο επικάλυψης στο Yandex.Cloud βασίζεται σε επιλεγμένα στοιχεία του OpenContrail, το οποίο πρόσφατα ονομάστηκε Tungsten Fabric. Οι υπηρεσίες δικτύου υλοποιούνται σε μια ενιαία πλατφόρμα CloudGate. Στο CloudGate, χρησιμοποιήσαμε επίσης μια σειρά από στοιχεία ανοιχτού κώδικα: GoBGP - για πρόσβαση σε πληροφορίες ελέγχου, καθώς και VPP - για την υλοποίηση ενός δρομολογητή λογισμικού που εκτελείται πάνω από το DPDK για τη διαδρομή δεδομένων.

Το Tungsten Fabric επικοινωνεί με το CloudGate μέσω GoBGP. Λέει τι συμβαίνει στο δίκτυο επικάλυψης. Το CloudGate, με τη σειρά του, συνδέει δίκτυα επικάλυψης μεταξύ τους και με το Διαδίκτυο.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Τώρα ας δούμε πώς ένα εικονικό δίκτυο επιλύει τα προβλήματα της κλιμάκωσης και της διαθεσιμότητας. Ας εξετάσουμε μια απλή περίπτωση. Υπάρχει μία ζώνη διαθεσιμότητας και σε αυτήν δημιουργούνται δύο VPC. Αναπτύξαμε ένα στιγμιότυπο Tungsten Fabric και τραβάει αρκετές δεκάδες χιλιάδες δίκτυα. Τα δίκτυα επικοινωνούν με το CloudGate. Το CloudGate, όπως έχουμε ήδη πει, εξασφαλίζει τη συνδεσιμότητα μεταξύ τους και με το Διαδίκτυο.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Ας υποθέσουμε ότι προστέθηκε μια δεύτερη ζώνη διαθεσιμότητας. Θα πρέπει να αποτύχει εντελώς ανεξάρτητα από το πρώτο. Επομένως, στη δεύτερη ζώνη διαθεσιμότητας, πρέπει να εγκαταστήσουμε ένα ξεχωριστό στιγμιότυπο Tungsten Fabric. Αυτό θα είναι ένα ξεχωριστό σύστημα που ασχολείται με την επικάλυψη και γνωρίζει ελάχιστα για το πρώτο σύστημα. Και η ορατότητα ότι το εικονικό μας δίκτυο είναι παγκόσμιο, στην πραγματικότητα, δημιουργεί το VPC API μας. Αυτό είναι το καθήκον του.

Το VPC1 αντιστοιχίζεται στη Ζώνη Διαθεσιμότητας Β, εάν υπάρχουν πόροι στη Ζώνη Διαθεσιμότητας Β που προωθούνται στο VPC1. Εάν δεν υπάρχουν πόροι από το VPC2 στη ζώνη διαθεσιμότητας Β, δεν θα υλοποιήσουμε το VPC2 σε αυτήν τη ζώνη. Με τη σειρά του, δεδομένου ότι οι πόροι από το VPC3 υπάρχουν μόνο στη ζώνη Β, το VPC3 δεν υπάρχει στη ζώνη Α. Όλα είναι απλά και λογικά.

Ας πάμε λίγο πιο βαθιά και ας δούμε πώς λειτουργεί ένας συγκεκριμένος κεντρικός υπολογιστής στο Y.Cloud. Το κύριο πράγμα που θέλω να σημειώσω είναι ότι όλοι οι οικοδεσπότες είναι διατεταγμένοι με τον ίδιο τρόπο. Το κάνουμε έτσι ώστε μόνο το απαραίτητο ελάχιστο των υπηρεσιών να εκτελείται σε υλικό, όλες οι υπόλοιπες να εκτελούνται σε εικονικές μηχανές. Δημιουργούμε υπηρεσίες υψηλότερης τάξης βασισμένες σε βασικές υπηρεσίες υποδομής και χρησιμοποιούμε επίσης το Cloud για την επίλυση ορισμένων προβλημάτων μηχανικής, για παράδειγμα, στο πλαίσιο της Συνεχούς Ενοποίησης.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Εάν κοιτάξουμε έναν συγκεκριμένο κεντρικό υπολογιστή, μπορούμε να δούμε ότι υπάρχουν τρία στοιχεία που εκτελούνται στο λειτουργικό σύστημα κεντρικού υπολογιστή:

  • Υπολογισμός - το τμήμα που είναι υπεύθυνο για τη διανομή των υπολογιστικών πόρων στον κεντρικό υπολογιστή.
  • Το VRouter είναι ένα μέρος του Tungsten Fabric που οργανώνει μια επικάλυψη, δηλαδή διοχετεύει πακέτα μέσω ενός υποστρώματος.
  • Οι VDisks είναι κομμάτια εικονικοποίησης αποθήκευσης.

Επιπλέον, κυκλοφορούν υπηρεσίες σε εικονικές μηχανές: Υπηρεσίες υποδομής cloud, υπηρεσίες πλατφόρμας και δυνατότητες πελατών. Οι δυνατότητες πελατών και οι υπηρεσίες πλατφόρμας πηγαίνουν πάντα στην επικάλυψη μέσω του VRouter.

Οι υπηρεσίες υποδομής μπορούν να κολλήσουν στην επικάλυψη, αλλά βασικά θέλουν να εργαστούν στο υπόστρωμα. Είναι κολλημένα στο υπόστρωμα με τη βοήθεια SR-IOV. Στην πραγματικότητα, κόβουμε την κάρτα σε εικονικές κάρτες δικτύου (εικονικές λειτουργίες) και τις σπρώχνουμε σε εικονικές μηχανές υποδομής για να μην χάσουμε την απόδοση. Για παράδειγμα, το ίδιο CloudGate εκκινείται ως μία από αυτές τις εικονικές μηχανές υποδομής.

Τώρα που περιγράψαμε τις καθολικές εργασίες του εικονικού δικτύου και τη δομή των βασικών στοιχείων του cloud, ας δούμε πώς ακριβώς αλληλεπιδρούν μεταξύ τους τα διαφορετικά μέρη του εικονικού δικτύου.

Διακρίνουμε τρία επίπεδα στο σύστημά μας:

  • Επίπεδο διαμόρφωσης - ορίζει την κατάσταση στόχου του συστήματος. Αυτό διαμορφώνει ο χρήστης μέσω του API.
  • Πεδίο ελέγχου - παρέχει σημασιολογία που ορίζεται από το χρήστη, δηλαδή φέρνει την κατάσταση επιπέδου δεδομένων σε αυτό που περιέγραψε ο χρήστης στο Επίπεδο διαμόρφωσης.
  • Πεδίο δεδομένων - επεξεργάζεται απευθείας τα πακέτα του χρήστη.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Όπως είπα παραπάνω, όλα ξεκινούν από το γεγονός ότι ο χρήστης ή η εσωτερική υπηρεσία πλατφόρμας έρχεται στο API και περιγράφει μια συγκεκριμένη κατάσταση στόχο.

Αυτή η κατάσταση γράφεται αμέσως στη βάση δεδομένων Yandex, επιστρέφει το αναγνωριστικό ασύγχρονης λειτουργίας μέσω του API και ξεκινά τον εσωτερικό μας μηχανισμό για να επιστρέψει την κατάσταση που ήθελε ο χρήστης. Οι εργασίες διαμόρφωσης πηγαίνουν στον ελεγκτή SDN και λένε στο Tungsten Fabric τι να κάνει στην επικάλυψη. Για παράδειγμα, δεσμεύουν θύρες, εικονικά δίκτυα και παρόμοια.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Το Config Plane in Tungsten Fabric στέλνει την απαιτούμενη κατάσταση στο Control Plane. Μέσω αυτού, το Config Plane επικοινωνεί με τους οικοδεσπότες, λέγοντας τι ακριβώς θα περιστρέφεται σε αυτούς σύντομα.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Τώρα ας δούμε πώς φαίνεται το σύστημα στους οικοδεσπότες. Η εικονική μηχανή έχει έναν προσαρμογέα δικτύου συνδεδεμένο στο VRouter. Το VRouter είναι μια βασική μονάδα Tungsten Fabric που εξετάζει πακέτα. Εάν υπάρχει ήδη ροή για κάποιο πακέτο, η μονάδα το επεξεργάζεται. Εάν δεν υπάρχει ροή, το module κάνει το λεγόμενο punting, δηλαδή στέλνει ένα πακέτο στη διαδικασία usermod. Η διαδικασία αναλύει το πακέτο και είτε ανταποκρίνεται η ίδια σε αυτό, όπως το DHCP και το DNS, είτε λέει στον VRouter τι να το κάνει. Μετά από αυτό, το VRouter μπορεί να επεξεργαστεί το πακέτο.

Επιπλέον, η κίνηση μεταξύ εικονικών μηχανών μέσα στο ίδιο εικονικό δίκτυο πηγαίνει με διαφάνεια, δεν κατευθύνεται στο CloudGate. Οι κεντρικοί υπολογιστές στους οποίους αναπτύσσονται οι εικονικές μηχανές επικοινωνούν απευθείας μεταξύ τους. Διορθώνουν την κυκλοφορία και την προωθούν ο ένας για τον άλλον μέσω του υποστρώματος.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Τα επίπεδα ελέγχου επικοινωνούν μεταξύ τους μεταξύ των ζωνών διαθεσιμότητας μέσω BGP, όπως και με έναν άλλο δρομολογητή. Λένε ποιες μηχανές βρίσκονται επάνω, έτσι ώστε τα VM σε μια ζώνη να μπορούν να επικοινωνούν απευθείας με άλλα VM.

Πώς λειτουργεί το Yandex.Cloud με το Virtual Private Cloud και πώς οι χρήστες μας μας βοηθούν να εφαρμόσουμε χρήσιμες λειτουργίες

Και το Control Plane επικοινωνεί με το CloudGate. Ομοίως, αναφέρει πού και ποιες εικονικές μηχανές ανεβαίνουν, ποιες διευθύνσεις έχουν. Αυτό σας επιτρέπει να κατευθύνετε την εξωτερική κίνηση και την κίνηση από τους εξισορροπητές προς αυτούς.

Η κίνηση που φεύγει από το VPC έρχεται στο CloudGate, στη διαδρομή δεδομένων, όπου το VPP με τα πρόσθετά μας μασάται γρήγορα. Στη συνέχεια, η κίνηση εκτοξεύεται είτε σε άλλα VPC είτε εκτός, σε δρομολογητές συνόρων που έχουν ρυθμιστεί μέσω του ίδιου του Control Plane του CloudGate.

Σχέδια για το εγγύς μέλλον

Αν συνοψίσουμε όλα όσα αναφέρθηκαν παραπάνω σε λίγες προτάσεις, μπορούμε να πούμε ότι το VPC στο Yandex.Cloud επιλύει δύο σημαντικές εργασίες:

  • Παρέχει απομόνωση μεταξύ διαφορετικών πελατών.
  • Συνδυάζει πόρους, υποδομές, υπηρεσίες πλατφόρμας, άλλα cloud και on-premise σε ένα ενιαίο δίκτυο.

Και για να επιλύσετε καλά αυτά τα προβλήματα, πρέπει να παρέχετε επεκτασιμότητα και ανοχή σφαλμάτων στο επίπεδο της εσωτερικής αρχιτεκτονικής, κάτι που κάνει το VPC.

Σταδιακά το VPC αποκτά λειτουργίες, υλοποιούμε νέες δυνατότητες, προσπαθούμε να βελτιώσουμε κάτι όσον αφορά την ευκολία του χρήστη. Μερικές ιδέες εκφράζονται και μπαίνουν στη λίστα προτεραιότητας χάρη στα μέλη της κοινότητάς μας.

Αυτήν τη στιγμή έχουμε την ακόλουθη λίστα σχεδίων για το εγγύς μέλλον:

  • Το VPN ως υπηρεσία.
  • Οι ιδιωτικές παρουσίες DNS είναι εικόνες για γρήγορη ρύθμιση εικονικών μηχανών με έναν προρυθμισμένο διακομιστή DNS.
  • DNS ως υπηρεσία.
  • Εσωτερικός εξισορροπητής φορτίου.
  • Προσθήκη μιας "λευκής" διεύθυνσης IP χωρίς αναδημιουργία της εικονικής μηχανής.

Ο εξισορροπητής και η δυνατότητα αλλαγής της διεύθυνσης IP για μια ήδη δημιουργημένη εικονική μηχανή ήταν σε αυτήν τη λίστα κατόπιν αιτήματος των χρηστών. Για να είμαστε ειλικρινείς, χωρίς ρητή ανατροφοδότηση, θα είχαμε αναλάβει αυτές τις λειτουργίες λίγο αργότερα. Και έτσι εργαζόμαστε ήδη για το πρόβλημα σχετικά με τις διευθύνσεις.

Αρχικά, μια "λευκή" διεύθυνση IP μπορούσε να προστεθεί μόνο κατά τη δημιουργία ενός μηχανήματος. Εάν ο χρήστης ξέχασε να το κάνει αυτό, η εικονική μηχανή έπρεπε να αναδημιουργηθεί. Το ίδιο και, αν χρειαστεί, αφαιρέστε την εξωτερική IP. Σύντομα θα είναι δυνατή η ενεργοποίηση και απενεργοποίηση της δημόσιας IP χωρίς να χρειάζεται να αναδημιουργήσετε το μηχάνημα.

Μη διστάσετε να εκφράσετε το δικό σας ιδέες και προτάσεις υποστήριξης άλλους χρήστες. Μας βοηθάτε να κάνουμε το Cloud καλύτερο και να αποκτάμε πιο γρήγορα σημαντικές και χρήσιμες λειτουργίες!

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο