Wpis z mikrobloga

Cześć

Jest sobie pewna aplikacja w wersji V1, zrobiona jako SAAS gdzie każdy z kilku tysięcy klientów ma własną subdomenę i cały ruch obsługiwany jest przez jeden serwer dedykowany.

Niebawem będzie wdrażana wersja V2, napisana od zera i znajdująca się na innym serwerze.

Niestety nie ma możliwości aby w jednym momencie przenieść wszystkich klientów do nowej wersji, migracja trwa dość długo i musi być robiona partiami, po kilkadziesiąt instancji dziennie.

Wszystko musi pozostać też na jednej i tej samej domenie.

Wymyśliłem sobie to tak że:
- w DNS domeny zmienię rekord A dla *.domena.pl na IP nowego serwera
- na stronie sprzedażowej (jest na jeszcze innym serwerze) skieruje procedurę rejestracyjną dla nowych klientów na nową aplikacje - nowi użytkownicy będą od razu rejestrować się w nowej wersji
- ruch dla starych klientów musi iść przez proxy z nowego serwera na stary, załatwię to prostym skryptem generującym konfigurację nginx'a i tworzącym po jednym wirtualnym hoście dla starych klientów z proxy na stary serwer.
- każdego dnia do pewnej liczby klientów pójdzie mail że w nocy nastąpią prace administracyjne na serwerze,
- zablokuje wybrane instancje oraz wykonam migrację na nowy serwer
- odświeżę konfigurację nginx'a

Całą procedurę planuje zakończyć w jakiś miesiąc.

Teraz pytanie, czy można tu coś usprawnić? Da się jakoś zautomatyzować pobieranie listy hostów z nginx'a?
Może za bardzo mieszam?

#programista15k #programista25k #devopsiarz #sysadmin #programowanie
  • 7
Jakąś opcje rollbacka przewidujesz jak coś pójdzie nie tak z przeniesieniem?


@Yahoo_: jeśli w danej instancji coś się wywali to po prostu nie zostanie tego dnia przeniesiona, w momencie przenoszenia nic ze starego serwera nie jest usuwane.

instancje będą przenoszone na początku małymi partiami, jak coś się wysypie to migracja zostanie wstrzymana
na nowej wersji pracuje też już kilka firm więc raczej błędów nie ma ;)

zapomniałem wyżej napisać że każda
via Wykop Mobilny (Android)
  • 4
@wiesiu2: ogólnie git. Ja bym przy tej okazji w ogóle na stałe przekierowal ruch na load balancer który ma stały adres, a ten Twój serwer dedykowany umieścił na dowolnym adresie za nim. Tym sposobem już nigdy nie będziesz musiał zmienić dnsow z takiego powodu. No i ukryjesz swój serwer w internecie, nie będzie się go dało bezpośrednio ddosowac, skanować itp
@wiesiu2: Ja miałem taki sam problem.

Na instancji V1 zrobiłem sobie przekładkę. Miałem sobie plik z klientami na starej wersji. HaProxy było skonfigurowane tak, że wszystko oprócz x klientów miało być na V1. Jak chciałem przenieść klienta to usuwałem go z pliku i skrypt przebudowywał mi nginx. W międzyczasie przenosiłem konfigurację DNS. Jak wszystko było ok i nie było już ruchu na V1 to odstrzeliłem starą infrę.