mod_proxy

Τεχνικές και μόνο Συζητήσεις για WEB hosting servers, Mail servers, DNS servers. Όχι αναζήτηση υπηρεσιών εδώ!

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

mod_proxy

Δημοσίευση από cherouvim » 06 Μάιος 2008 00:02

Αλάνια γνώστες του Apache httpd σας χαιρετώ

Έχω το server foo live που τρέχει μία εφαρμογή, το example.com.

Κώδικας: Επιλογή όλων

  .-----.            .-----.
  | foo |            | bar |
  '_____'            '_____'

/example.com/
     ^
     |
     |
   httpd              httpd
     ^
     |
     |
    dns
     ^
     |
     |
 example.com
την οποία θέλω να κάνω migrate στο νέο γυαλιστερό server μου, το bar.
Ο foo τρέχει named και δείχνει το example.com στο foo.

Η πρόχειρη λύση είναι η εξής:

Κώδικας: Επιλογή όλων

  .-----.            .-----.
  | foo |            | bar |
  '_____'            '_____'

                   /example.com/
                        ^
                        |
                        |
   httpd              httpd
                        ^
                        |
                        |
    dns-----------------'
     ^
     |
     |
 example.com
Αλλάζω το dns entry για το example.com να δείχνει στο bar.

Αυτό δεν με καλύπτει για 2 λόγους:
1) Για μερικές ώρες/μέρες κάποιοι θα χτυπάνε ακόμα το foo λόγω του cacheαρισμένου dns entry.
2) Δεν θέλω να κρατήσω και τα 2 example.com live, γιατί τα MySQL dbs τους μπορεί να βρεθούν σε inconsistent state (να μπουν νέα δεδομένα στο live app του foo ή του bar).

Η λύση που θέλω να ακολουθήσω είναι η εξής:

Κώδικας: Επιλογή όλων

  .-----.            .-----.
  | foo |            | bar |
  '_____'            '_____'

                   /example.com/
                        ^
                        |
                        |
   httpd------------->httpd
     ^
     |
     |
    dns
     ^
     |
     |
 example.com
Με mod_proxy και ProxyPassReverse να κάνω εσωτερικό redirect όλα τα requests του example.com προς τον foo, στο bar. Στη συνέχεια θα ανανεώσω το dns entry στο foo, να δείχνει στο bar. Η εφαρμογή θα τρέχει μόνο στο bar, και σιγά σιγά όλος ο κόσμος θα την βλέπει απευθείας από το bar χωρίς να το καταλάβει.

Ξέρει κανείς να το κάνει αυτό με το mod_proxy;

Άβαταρ μέλους
RADICAL
Δημοσιεύσεις: 386
Εγγραφή: 14 Ιούλ 2004 01:07
Τοποθεσία: Athens
Επικοινωνία:

mod_proxy

Δημοσίευση από RADICAL » 06 Μάιος 2008 03:57

Δεν ξέρω αν κατάλαβα σωστά, αλλά δεν θα σε κάλυπτε κάτι τέτοιο στον apache?

Κώδικας: Επιλογή όλων

        
<Directory /var/www/redirect>
                Options MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                RedirectMatch permanent &#40;.*&#41; http&#58;//www2.example.com$1
</Directory>
Όπου ο www2 θα είναι ο bar με την εφαρμογή σηκωμένη.
Έτσι όσοι είναι μέσα όταν το σηκώσεις στο επόμενο κλικ θα πάνε στον bar χωρίς να το καταλάβουνε.
Για να είσαι όμως 100% σίγουρος, άμα δλδ κάνουν παπάδες οι χρήστες στην βάση,
πρέπει έστω για 5 λεπτά να τους πετάξεις έξω
μη τυχόν γίνει κάτι στραβό με την βάση καθώς δεν θα είναι απόλυτα συγχρονισμένη.

Μετά αλλάζεις το dns και όσοι έχουν cache τρώνε το redirect, οι άλλοι πάνε κατευθείαν στον καινούργιο
και μετά από λίγο καιρό το ξηλώνεις.
Εικόνα

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

mod_proxy

Δημοσίευση από cherouvim » 06 Μάιος 2008 06:39

Καλή ιδέα. Thanks.

Απλά έτσι υπάρχει ο μικρός κίνδυνος κάποιοι να κάνουν bookmark ή να στείλουν link κάπου από το www2.

Αργότερα μπορώ να κρατήσω για κάποιο καιρό το www2->www

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

mod_proxy

Δημοσίευση από cordis » 07 Μάιος 2008 00:32

εγώ σε τέτοια περίπτωση είχα βάλει τον παλιό server να βλέπει στην νέα mySQL. αργό, ναι, αλλά είσαι σίγουρος ότι τα δεδομένα θα πάνε στο σωστό μέρος.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

mod_proxy

Δημοσίευση από cherouvim » 07 Μάιος 2008 09:07

Καλή ιδέα και αυτή, αλλά δεν γίνεται στη περίπτωση μου γιατί:
- Έχω και πιθανά uploads που μπορεί να συμβούν. Θα μπορούσε να λυθεί με shared filesystem.
- Έχω second level cache ανάμεσα στην εφαρμογή μου και τη βάση. Το να τρέξω την εφαρμογή σε πολλά nodes να κοιτάνε την ίδια βάση, και οι caches να μην συγχρονίζονται μεταξύ τους, μπορεί να έχει πολύ άσχημα αποτελέσματα.

Η λύση του RADICAL καλή είναι, με τα 2 μικροσκοπικά μειονεκτήματα:
- 1 επιπλέον http request από το client για να γίνει resolve το τελικό site.
- πιθανότητα bookmarking και indexing (από το google?) του www2 το οποίο θα είναι προσωρινά up.

Η πιο σωστή λύση είναι με το ProxyPassReverse, αλλά μάλλον δεν θα ασχοληθώ (no budget).

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

mod_proxy

Δημοσίευση από cpulse » 07 Μάιος 2008 12:28

Αν κάνεις την αλλαγή κατά τις 3-4 τα ξημερώματα μέχρι τις 12 το μεσημέρι θα έχουν αλλάξει όλοι πλην κάποιων εξαιρέσεων. Πρόσφατα έπρεπε να κάνω μια τέτοια αλλαγή και διαπίστωσα κάτι που αν μου το λέγανε δεν θα το πίστευα. Η Tellas κάνει updates στους DNS της κάθε μήνα! Αλλά στο Ελλαδιστάν μην περιμένεις και περισσότερα. Κάποια bookmarks θα χαθούνε.

Για το google όμως η πιθανότητα αυτή είναι ακόμα ποιο μικρή. Οι ξένοι κάνουν updates κάθε 1-3 ώρες. Είναι πολύ εντυπωσιακό.. έχω βάλει πρόσφατα OpenDNS και κάνω μια αλλαγή σε name servers και την βλέπω σχεδόν αμέσως.

Ίσως να έγραφες ένα μήνυμα στον παλιό server και σε όσους θέλουν οπωσδήποτε να δουνε τον νέο server να τους έδινες οδηγίες να ρυθμίσουνε το hosts. Το ανοίγεις και απλά γράφεις την IP και δίπλα το DNS και δουλεύει μια χαρά. Απλά σε κάθε σύστημα αυτό το αρχείο είναι σε διαφορετικό σημείο:

Linux/Mac /etc/hosts
Windows 2000/XP/Vista C:\WINDOWS\system32\drivers\etc\hosts
Windows 95/98/Me C:\WINDOWS\hosts
Windows NT C:\WINNT\system32\drivers\etc\hosts

Στο linux τουλάχιστον το έχω δοκιμάσει και λειτουργεί μια χαρά.

Απάντηση

Επιστροφή στο “Apache, IIS, DNS Servers”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες