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 :
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.
  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.
 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:
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 .
 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:
#!/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:
Outputssh-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:
Outputcat: /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-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:
OutputThe 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:
OutputApp 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”:
Sau một vài giây, IP sẽ được gán cho server màu xanh lục của bạn:
Đế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 :
OutputApp 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 :
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 
OutputApp 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 
OutputApp 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:
 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:
OutputApp 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:
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:
OutputApp v1 App v1 App v2 App v2 Các tin liên quan
 

