Thứ ba, 20/10/2015 | 00:00 GMT+7

Cách sử dụng triển khai Blue-Green để phát hành phần mềm một cách an toàn

Thực tiễn phát triển hiện đại thường phân biệt giữa triển khai và phát hành phần mềm. Triển khai là bước liên quan đến việc đưa mã mới vào server . Phát hành là bước mà mã mới bắt đầu nhận được lưu lượng truy cập production .

Triển khai xanh lam là một chiến lược để triển khai và phát hành phần mềm. Nó dựa vào việc duy trì hai môi trường có khả năng production riêng biệt, có biệt danh là xanh lam và xanh lục để dễ thảo luận. Trong hướng dẫn này, ta sẽ thảo luận về cách sử dụng triển khai xanh lam-xanh lục trên DigitalOcean để đơn giản hóa quá trình chuyển đổi user của bạn sang version phần mềm mới của bạn.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần hai server Ubuntu 14.04 được triển khai trong môi trường cho phép bạn di chuyển địa chỉ IP giữa các server một cách dễ dàng. Trên DigitalOcean, IP nổi có thể cung cấp chức năng này. Các server này sẽ đại diện cho hai môi trường song song được sử dụng xen kẽ để dàn dựng và production . Bạn có thể gọi những server này là bạn muốn , nhưng trong hướng dẫn này, ta sẽ gọi chúng là “xanh lam” và “xanh lá cây”.

Trên mỗi server này, bạn phải có một user không phải root có cấu hình sudo cho các chức năng quản trị. Bạn có thể cấu hình những user này theo hướng dẫn cài đặt server ban đầu Ubuntu 14.04 của ta .

Triển khai Blue-Green là gì?

Khái niệm cơ bản đằng sau việc triển khai xanh lam-xanh lá cây, một kỹ thuật phổ biến trong bài đăng này từ Martin Fowler, là hai bộ môi trường, mỗi bộ có khả năng phục vụ ứng dụng của bạn trong quá trình production , được duy trì. Hai môi trường này phải gần giống nhau. Theo quy ước, chúng được gọi là môi trường xanh lam và xanh lục.

Chỉ một trong những môi trường này đang hoạt động và nhận được lưu lượng production cùng một lúc. Phía trước các điểm cuối web cho các môi trường này ( web server hoặc bộ cân bằng tải), bộ định tuyến hoặc cơ chế định hướng lưu lượng khác đẩy tất cả lưu lượng production sang môi trường hiện đang hoạt động.

Khi một bản phát hành mới được lên kế hoạch, nó sẽ được triển khai tới môi trường không hoạt động. Đối với triển khai xanh lam-xanh lá cây, môi trường không hoạt động hoạt động như một môi trường tổ chức cuối cùng. Nó phản ánh rất chặt chẽ môi trường production và được dùng để kiểm tra lần cuối trước khi quyết định đưa các thay đổi vào hoạt động.

Khi bạn đã kiểm tra nội bộ quá trình triển khai của bạn và tự tin vào tính mạnh mẽ của nó, bạn có thể phát hành version mới nhanh chóng và dễ dàng bằng cách điều chỉnh cơ chế định tuyến. Về cơ bản, bạn lật lựa chọn ở lớp định hướng lưu lượng để tất cả lưu lượng production bắt đầu chuyển sang version phần mềm mới của bạn. Môi trường hoạt động trước đó trở thành không hoạt động và môi trường tổ chức trước đó của bạn trở thành môi trường production mới của bạn.

Đến đây, version phần mềm trước đó của bạn không hoạt động, nhưng vẫn có thể truy cập được. Nếu việc triển khai mới đang hoạt động của bạn gặp phải bất kỳ sự cố nghiêm trọng nào, việc hoàn nguyên về version trước của bạn cũng đơn giản như sửa đổi lại cơ chế định tuyến.

Tình huống mẫu

Để chứng minh khái niệm chung này, ta sẽ cài đặt hai môi trường server . Mỗi người sẽ có một web server được cài đặt. Lưu ý trong ví dụ này, web server đại diện cho toàn bộ ứng dụng có thể bao gồm bộ cân bằng tải, nhiều web server và database được phân phối hoặc sao chép trong phần backend . Ta đang sử dụng web server trong hướng dẫn này vì nó đại diện cho môi trường nhỏ nhất có thể thể hiện mẫu phát hành này.

Ta sẽ bắt đầu phát triển một “ứng dụng” trên máy tính local của bạn . Trên thực tế, đây sẽ chỉ là một trang index.html mà ta có thể triển khai đến các server của bạn . Ta sẽ cấu hình một hook nhận git post trên mỗi server của ta để ta có thể triển khai đơn giản bằng cách phát hành git push . Ta sẽ triển khai version đầu tiên của ứng dụng cho cả hai server của ta .

Trong hướng dẫn này, ta sẽ sử dụng địa chỉ IP nổi DigitalOcean làm cơ chế định tuyến của bạn . IP nổi cung cấp một cơ chế đơn giản để di chuyển lưu lượng từ server này sang server khác. Ta sẽ tạo một IP nổi và trỏ nó vào server màu xanh lá cây của ta để đặt đây làm máy production ban đầu của ta .

Sau đó, ta sẽ sửa đổi ứng dụng của bạn và triển khai nó lên server màu xanh lam của ta . Lưu lượng truy cập production sẽ vẫn được phục vụ từ server màu xanh lá cây không thay đổi tại thời điểm này. Sau đó, ta có thể kiểm tra server màu xanh lam đảm bảo rằng việc triển khai của ta thành công và không có lỗi. Khi ta đã sẵn sàng, ta có thể di chuyển Floating IP sang version mã mới chỉ bằng cách chỉ định lại địa chỉ Floating IP cho server màu xanh lam.

Tạo ứng dụng local

Ta sẽ bắt đầu bằng cách tạo “ứng dụng” của ta . Như đã nêu ở trên, đây thực sự chỉ là một trang index mà web server của ta có thể hiển thị. Nó cho phép ta chứng minh các "phiên bản" khác nhau của ứng dụng mà không cần chi phí phát triển thực tế.

Trên hệ thống local của bạn (hoặc trên một Server khác), hãy cài đặt git bằng phương pháp ưa thích của nền tảng của bạn. Nếu máy local của bạn đang chạy Ubuntu, bạn có thể cài đặt bằng lệnh :

  • sudo apt-get update
  • sudo apt-get install git

Ta cần cài đặt một vài cài đặt cấu hình để commit với một repository git . Ta sẽ đặt tên và địa chỉ email của bạn bằng lệnh :

  • git config --global user.name "Your Name"
  • git config --global user.email "username@email.com"

Với bộ cấu hình của ta , ta có thể tạo một folder cho ứng dụng mới của bạn và chuyển vào đó:

  • mkdir ~/sample_app
  • cd ~/sample_app

Khởi tạo repository git trong folder ứng dụng của ta bằng lệnh :

  • git init

Bây giờ, hãy tạo index.html đại diện cho ứng dụng của ta :

  • nano index.html

Bên trong, ta sẽ chỉ định số version của ứng dụng của ta . Bằng cách này, ta có thể dễ dàng biết version ứng dụng của bạn trên mỗi server :

~ / sample_app / index.html
App v1 

Lưu file khi bạn hoàn tất.

Để kết thúc, ta có thể thêm index.html vào vùng dàn git và sau đó commit bằng lệnh :

  • git add .
  • git commit -m "initializing repository with version 1"

Với file của ta đã commit , ta sẽ ngừng phát triển ứng dụng trên máy local của ta trong giây lát và tập trung vào việc cài đặt các web server màu xanh lam và xanh lục của ta .

Cấu hình Server Web Xanh lam và Xanh lục

Tiếp theo, ta sẽ cài đặt môi trường xanh lục và xanh lam của ta với các web server chức năng. Ta sẽ sử dụng Apache trong hướng dẫn này. Đăng nhập vào server của bạn với user sudo của bạn để bắt đầu.

Ghi chú
Các bước trong phần này phải được hoàn thành trên cả server xanh lam và xanh lục.

Ta có thể cài đặt Apache dễ dàng với apt . Cập nhật index gói local và cài đặt phần mềm web server bằng lệnh :

  • sudo apt-get update
  • sudo apt-get install apache2

Điều này sẽ cài đặt và khởi động Apache trên cả hai web server của bạn.

Tiếp theo, ta sẽ tạo và cấu hình user "triển khai". User này sẽ có quyền truy cập vào root web của Apache và sẽ sở hữu repository git trần nơi ta sẽ đẩy ứng dụng của bạn lên.

Tạo user deploy bằng lệnh :

  • sudo adduser --disabled-password deploy

Điều này sẽ tạo một user mới với xác thực password bị vô hiệu hóa.

Ta sẽ cấp cho user mới này quyền sở hữu đối với root web mặc định của Apache. Điều này có tại /var/www/html . Thay đổi quyền sở hữu của folder này bằng lệnh :

  • sudo chown -R deploy:deploy /var/www/html

Đây là tất cả những gì ta cần cho việc triển khai đơn giản chỉ dựa vào việc di chuyển các file vào folder root của web.

Ghi chú

Nếu bạn đang làm sai hướng dẫn này và các bước triển khai của bạn sẽ yêu cầu quyền root, bạn cần cấu hình quyền sudo cần password cho các lệnh cần thiết để sử dụng với account deploy .

Điều này có thể được thực hiện bằng cách tạo một file sudoers mới trong folder /etc/sudoers.d :

  • sudo visudo -f /etc/sudoers.d/90-deployment

Trong file này, bạn có thể thêm các lệnh mà bạn cần chạy trong quá trình triển khai. Chúng có thể được chỉ định như thế này:

/etc/sudoers.d/90-deployment
deploy ALL=(ALL) NOPASSWD: first_deployment_command, second_deployment_command, ... 

Lưu file khi bạn hoàn tất. Điều này sẽ cho phép user deploy thực hiện chính xác các lệnh được yêu cầu mà không cần password .

Cài đặt Triển khai Git trên Server Web Xanh lục và Xanh lam

Bây giờ ta đã cài đặt Apache và một user được cấu hình để thực hiện triển khai, ta có thể cấu hình repository git trần để đẩy ứng dụng của bạn lên. Sau đó, ta có thể cài đặt một hook post-receive sẽ tự động triển khai version mới nhất của nhánh chính khi ta đẩy nó lên server của bạn .

Ghi chú
Các bước trong phần này phải được hoàn thành trên cả server xanh lam và xanh lục.

Bắt đầu bằng cách cài đặt git trên cả hai server của bạn:

  • sudo apt-get install git

Tiếp theo, ta cần đăng nhập với quyền là user deploy . Ta có thể làm điều đó với sudo bằng lệnh :

  • sudo su - deploy

Trong folder chính của user deploy của ta , hãy tạo một folder cho ứng dụng mẫu của ta , giống như ta đã làm trên máy tính local của bạn . Di chuyển vào folder sau khi tạo:

  • mkdir ~/sample_app
  • cd ~/sample_app

Ta sẽ khởi tạo một repo git trong folder này giống như ta đã làm trên hệ thống local của bạn . Tuy nhiên, trên server của ta , ta sẽ bao gồm tùy chọn --bare . Điều này sẽ tạo một repo git mà không có folder làm việc. Thay vào đó, nội dung thường ẩn trong .git sẽ được đặt vào folder chính:

  • git init --bare

Ta sẽ cài đặt một hook post-receive tiếp theo. Đây chỉ là một script sẽ áp dụng các thay đổi của ta sau khi git push xảy ra. Bạn có thể tìm hiểu thêm về chiến lược triển khai này bằng cách đọc hướng dẫn này . Ta nên đặt script này trong folder hooks của repo của ta . Tạo và mở file bằng lệnh :

  • nano hooks/post-receive

Bên trong, paste vào tập lệnh triển khai sau. Về cơ bản, đây là tập lệnh tương tự được nêu trong bài viết được liên kết ở trên. Ta đang sử dụng GIT_DIR để biểu thị git repo của ta trên server , biến WORK_TREE để chỉ định root tài liệu Apache của ta và HOSTNAME để lấy tên server của ta cho các thông báo tiến trình. Kịch bản này sẽ triển khai tất cả những thay đổi trong master chi nhánh vào folder web. Không cần thay đổi trong tập lệnh dưới đây:

/ home / deploy / sample_app / hooks / post-accept
#!/bin/bash  GIT_DIR=/home/deploy/sample_app WORK_TREE=/var/www/html HOSTNAME=$(hostname)  while read oldrev newrev ref do     if [[ $ref =~ .*/master$ ]];     then         echo "Master ref received.  Deploying master branch to $HOSTNAME..."         git --work-tree=$WORK_TREE --git-dir=$GIT_DIR checkout -f         echo "Git hooks deploy complete."     else         echo "Ref $ref successfully received.  Doing nothing: only the master branch may be deployed on this server."     fi done 

Nếu bạn đang đi chệch hướng với hướng dẫn này và cần các bước triển khai phức tạp hơn, hãy thêm chúng vào mệnh đề then trong tập lệnh ở trên. Đảm bảo rằng bất kỳ bước nào yêu cầu quyền nâng cao trong phần này đều sử dụng sudo . Ngoài ra, hãy đảm bảo tất cả các lệnh sử dụng sudo ở đây đều được thêm vào file sudoers như được chỉ định ở cuối phần cuối cùng.

Lưu file khi bạn hoàn tất.

Sửa đổi các quyền trên hook post-receive để git có thể thực thi nó vào thời điểm thích hợp:

  • chmod +x hooks/post-receive

Cấu hình Quyền truy cập SSH key trên Server Xanh lam và Xanh lục

Tiếp theo, ta sẽ cấu hình các SSH key để git có thể đẩy các thay đổi lên web server của ta mà không cần nhắc nhập password .

Tạo hoặc hiển thị Khóa công khai của bạn trên Máy phát triển của bạn

Trên máy tính local hoặc máy tính phát triển của bạn, hãy kiểm tra xem bạn đã cấu hình SSH key chưa bằng lệnh :

  • cat ~/.ssh/id_rsa.pub

Nếu bạn đã có sẵn một cặp SSH key , bạn sẽ thấy một cái gì đó giống như sau:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDilFdzkgBcSKdh6tx5pLf+HH6Pv7z7jRZ7cSo6lQvecWOOgGl/wHCVZWx1ULvrF7VgJpgugLwxYsFh3E39sm1+7zeAlRxhFrbWvATwpAEwh5m0+48LTmvXCnJ8/om+GfmAwplmzGk/DNs5trVeagG62Css0rypdoNuLrVdCVKUXGXbO6KnpOsBqoM2HvZKtQ8j1gx+1UUnvK9LYes+ZzC2XZZeBh2dGABe7HNnd8+6e1f2ZjPEKAEV2fPJGAGaAQOnzSKJkUt/B9PdKFbCjnnG1sT0kQoxMRIAiqfR7wa7PUQCM5Orm5S92OTNcnRr8bWVjN18bWCyXkpxxWbIvVU/ user@devel

Nếu lệnh thực thi chính xác, hãy sao chép toàn bộ văn bản được hiển thị. Ta sẽ sử dụng điều này trong phần tiếp theo. Bạn có thể bỏ qua đó một cách an toàn ngay bây giờ.

Nếu bạn không có SSH key trên máy local của bạn , bạn có thể sẽ gặp lỗi giống như sau:

Output
cat: /home/user/.ssh/id_rsa.pub: No such file or directory

Nếu đúng như vậy, bạn có thể tạo một cặp khóa public key và private key mới bằng lệnh :

  • ssh-keygen

Nhấn ENTER qua tất cả các dấu nhắc để chấp nhận các giá trị mặc định. Khi các khóa được tạo, hãy nhập lại lệnh cat để hiển thị public key mới:

  • cat ~/.ssh/id_rsa.pub

Điều này sẽ thực thi chính xác lần này. Sao chép các dòng hiển thị để sử dụng trong phần tiếp theo.

Thêm SSH key công khai của bạn cho user triển khai trên server màu xanh lục và xanh lam

Quay lại server màu xanh lục và xanh lam của bạn, ta sẽ cho phép account của ta trên máy local hoặc máy phát triển của ta kết nối với user deploy của ta .

Là user deploy của bạn, hãy tạo một ~/.ssh . Bên trong, mở một file được gọi là authorized_keys :

  • mkdir ~/.ssh
  • nano ~/.ssh/authorized_keys

Trong file này, dán kết quả mà bạn đã sao chép từ máy local của bạn :

~ / .ssh / allow_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDilFdzkgBcSKdh6tx5pLf+HH6Pv7z7jRZ7cSo6lQvecWOOgGl/wHCVZWx1ULvrF7VgJpgugLwxYsFh3E39sm1+7zeAlRxhFrbWvATwpAEwh5m0+48LTmvXCnJ8/om+GfmAwplmzGk/DNs5trVeagG62Css0rypdoNuLrVdCVKUXGXbO6KnpOsBqoM2HvZKtQ8j1gx+1UUnvK9LYes+ZzC2XZZeBh2dGABe7HNnd8+6e1f2ZjPEKAEV2fPJGAGaAQOnzSKJkUt/B9PdKFbCjnnG1sT0kQoxMRIAiqfR7wa7PUQCM5Orm5S92OTNcnRr8bWVjN18bWCyXkpxxWbIvVU/ user@devel 

Lưu file khi bạn hoàn tất.

Tiếp theo, khóa các quyền để SSH có thể sử dụng file bạn đã tạo:

  • chmod 600 ~/.ssh/authorized_keys
  • chmod 700 ~/.ssh

Cấu hình Git Remotes trên Máy phát triển local

Bây giờ ta có quyền truy cập SSH key được cấu hình cho các web server của ta và folder ứng dụng của ta được cài đặt trên mỗi server , ta có thể thêm các server màu xanh lam và xanh lục của bạn làm điều khiển từ xa trong repository ứng dụng git local của ta .

Trên máy local của bạn, hãy quay lại folder ứng dụng của bạn:

  • cd ~/sample_app

Thêm tham chiếu từ xa để git có thể đẩy các thay đổi lên web server màu xanh lá cây và xanh lam của bạn:

  • git remote add blue deploy@blue_server_ip:sample_app
  • git remote add green deploy@green_server_ip:sample_app

Bây giờ ta có thể đẩy ứng dụng của bạn lên cả hai server của ta . Hãy thử nghiệm nó bằng cách đẩy version 1 của ứng dụng của ta lên cả hai server .

  • git push blue master
  • git push green master

Bạn có thể phải chấp nhận dấu fingerprint chính của từng server trong lần triển khai đầu tiên của bạn . Bạn sẽ thấy kết quả trông giống như sau:

Output
The authenticity of host '111.111.111.111 (111.111.111.111)' can't be established. ECDSA key fingerprint is 30:a1:2c:8b:ec:98:a3:3c:7f:4a:db:46:2b:96:b5:06. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '111.111.111.111' (ECDSA) to the list of known hosts. Counting objects: 3, done. Writing objects: 100% (3/3), 246 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: Master ref received. Deploying master branch to blue... remote: Git hooks deploy complete. To deploy@111.111.111.111:sample_app * [new branch] master -> master

Như bạn thấy , các dòng bắt đầu bằng “remote:” chứa các câu lệnh echo từ hook post-receive trên server của ta . Hãy nhớ đẩy ứng dụng của bạn lên cả hai server của bạn.

Ta có thể kiểm tra xem triển khai ban đầu ứng dụng của ta có thành công hay không với curl:

  • curl blue_server_ip
  • curl green_server_ip

Đối với cả hai cuộc gọi này, phản hồi phải như sau:

Output
App v1

Điều này cho biết tập lệnh triển khai của ta hoạt động chính xác.

Cài đặt địa chỉ IP nổi để định tuyến lưu lượng truy cập

Bây giờ ta đã triển khai version ban đầu của ứng dụng, ta có thể tạo địa chỉ IP nổi và trỏ nó đến server “xanh” của ta ban đầu.

Trong console DigitalOcean, nhấp vào tab “Mạng” và sau đó nhấp vào mục menu “IP nổi”. Trong menu được cung cấp, hãy chọn server màu xanh lục của bạn và nhấp vào nút “Chỉ định IP nổi”:

DigitalOcean tạo IP nổi

Sau một vài giây, IP sẽ được gán cho server màu xanh lục của bạn:

Đã chỉ định IP nổi DigitalOcean

Đến đây bạn có thể sử dụng địa chỉ IP này làm điểm nhập chính để triển khai ứng dụng production của bạn . Nếu bạn muốn cài đặt một domain cho ứng dụng web của bạn , bạn sẽ trỏ domain tới địa chỉ IP Nổi này.

Kiểm tra xem ứng dụng của bạn có thể truy cập được thông qua địa chỉ IP nổi hay không bằng lệnh :

  • curl floating_IP_addr

Bạn sẽ thấy version 1 của ứng dụng của bạn :

Output
App v1

Server màu xanh lá cây hiện đang cung cấp phản hồi này.

Thực hành triển khai Blue-Green

Bây giờ cấu hình của ta đã hoàn tất, ta có thể chứng minh cách triển khai màu xanh lam hoạt động trong thực tế. Hiện tại, địa chỉ IP nổi của ta đang trỏ đến server màu xanh lục của ta . Như đã nêu trước đây, địa chỉ IP nổi đại diện cho lưu lượng production và sẽ là vị trí mà ta sẽ đính kèm domain ứng dụng của bạn .

Thay đổi ứng dụng

Trên máy local hoặc máy phát triển của bạn, ta có thể thực hiện một số thay đổi đối với ứng dụng của bạn . Mở file index :

  • cd ~/sample_app
  • nano index.html

Hãy thực hiện một thay đổi đơn giản, dễ thấy đối với ứng dụng của ta bằng cách tăng số version :

~ / sample_app / index.html
App v2 

Lưu file khi bạn hoàn tất.

Thêm file vào vùng dàn git và commit các thay đổi bằng lệnh :

  • git add .
  • git commit -m "Application version 2"

Đẩy đến môi trường không hoạt động

Tiếp theo, ta có thể đẩy các thay đổi mới của bạn sang môi trường không hoạt động của ta . Điều này sẽ cho ta cơ hội kiểm tra việc triển khai mà không ảnh hưởng đến server production của ta .

Vì địa chỉ IP nổi của ta hiện đang trỏ đến môi trường xanh nên ta sẽ triển khai tới server màu xanh lam của bạn . Đẩy các thay đổi mới sang môi trường màu xanh lam bằng lệnh nội dung sau vào máy phát triển local của bạn:

  • git push blue master

Nếu ta truy cập địa chỉ IP nổi của bạn , ta sẽ thấy rằng version 1 của ứng dụng của ta vẫn đang được cung cấp:

  • curl Floating_IP_addr
Output
App v1

Tuy nhiên, nếu ta kiểm tra địa chỉ IP thông thường của server màu xanh lam , ta có thể kiểm tra version 2 của ứng dụng:

  • curl blue_server_IP
Output
App v2

Đây là những gì ta mong đợi và những gì ta muốn. Bây giờ ta có thể chạy môi trường server màu xanh của bạn thông qua bất kỳ thử nghiệm nội bộ nào mà ta cần. Trong khi đó, server xanh sẽ tiếp tục phục vụ lưu lượng production của ta .

Chuyển production sang môi trường mới

Sau khi bạn đã kiểm tra version mới nhất của ứng dụng và tin rằng nó đang hoạt động như mong đợi, ta có thể chuyển lưu lượng production sang server màu xanh lam.

Để làm như vậy, phương pháp dễ nhất là truy cập console DigitalOcean. Nhấp vào tab “Mạng” và sau đó chọn mục chuyển “IP nổi”. Trong danh sách "IP nổi", bạn sẽ thấy IP nổi của bạn , hiện đang trỏ đến server màu xanh lục:

Đã chỉ định IP nổi DigitalOcean

Trước khi ta chuyển sang, trong một trong các cửa sổ terminal của bạn, hãy bắt đầu vòng lặp while để ta có thể thực hiện các yêu cầu lặp lại thông qua địa chỉ IP Nổi. Điều này cho phép ta thấy ngay quá trình chuyển đổi version ứng dụng production từ v1 sang v2:

  • while true; do curl Floating_ip_addr; sleep 2; done

Nó sẽ bắt đầu xuất kết quả của các yêu cầu web:

Output
App v1 App v1 App v1 App v1

Bây giờ, để thực hiện chuyển đổi và “phát hành” version phần mềm mới của bạn, hãy nhấp vào nút màu xanh lam ở phía bên phải của chuyển nhượng IP nổi để gán lại địa chỉ IP. Chọn server màu xanh lam của bạn:

DigitalOcean chỉ định lại địa chỉ IP

Trong vài giây nữa, IP nổi của bạn sẽ được gán lại cho server màu xanh lam của bạn. Trong cửa sổ terminal của bạn, sự thay đổi sẽ rõ ràng:

Output
App v1 App v1 App v2 App v2

Tags:

Các tin liên quan