12/08/2018, 15:57

Bước đầu làm quen với Vagrant

Vagrant là một công cụ để xây dựng và quản lý một máy ảo trong một môi trường làm việc nhất quán. Việc cài đặt và setup môi trường của vagrant cũng khá dễ dàng và tiết kiệm thời gian. Nếu như bạn là một nhà phát triển hay một lập trình viên và bạn muốn tìm hiểu về một công nghệ mới mà không muốn ...

  • Vagrant là một công cụ để xây dựng và quản lý một máy ảo trong một môi trường làm việc nhất quán. Việc cài đặt và setup môi trường của vagrant cũng khá dễ dàng và tiết kiệm thời gian. Nếu như bạn là một nhà phát triển hay một lập trình viên và bạn muốn tìm hiểu về một công nghệ mới mà không muốn làm ảnh hưởng đến các set up môi trường của các dự án của bạn thì vagrant là một lựa chọn rất phù hợp. Bạn chỉ cần download và setup môi trường phù hợp với công nghệ bạn tìm hiểu rồi thoải mãi khám phá mà không sợ ảnh hưởng đến máy tính của bạn.
  • Không chỉ vậy với mà vagrant còn giúp cho đội ngũ phát triển trong dự án của bạn có thể làm việc với nhau trên cùng một môi trường phát triển với cấu hình giống nhau bất kể là máy tính của bạn chạy trên window, linux hay osx. Tất cả mọi người trong một team đều chạy những dòng code giống nhau vì vậy sẽ không còn các bug mà chỉ xảy ra trên một máy làm việc nhất định nữa.

Tản mạn vậy thôi bây giờ mình sẽ bắt đầu vào cài đặt và cấu hình vagrant cho môi trường phát triển

Cài đặt

  • Như mình đã giới thiệu trước Vagrant là một tool để build và manage máy ảo vì vậy bắt buộc máy tính của các bạn phải được cài đặt máy ảo trước ví dụ như virtualbox hay vmware ...
  • Tiếp theo mình sẽ cài đặt vagrant bạn vào trang download vagrant và download bản phù hợp với máy tính của bạn và cài đặt. Bước đầu khá là đơn giản đúng không.

Cấu hình

  • Sau khi bạn cài xong chúng ta sẽ cấu hình để có một môi trường phát triển phù hợp với project của bạn Ở đây mình sẽ làm một sample khá là thú vị đó là tạo 2 máy ảo vagrant rồi cấu hình load balance cho 2 con máy đó cùng chạy một project rails.

Cầu hình 2 máy ảo vagrant để chạy project rails

  • Hệ điều hành mình chọn để cài đặt ruby on rails là ubuntu 14.04cùng với đó là ruby 2.4.1, rails 5 mysql 5.7 và nginx Đầu tiên mình cần phải tạo thư mục vagrant và init nó
vagrant init

và đây là kết quả nếu bạn thực hiện đúng

để lựa chọn hệ điều hành mĩnh sẽ thiết lập trong file Vagrantfile

config.vm.box = "ubuntu/trusty64"

và thực hiện câu lệnh

vagrant up

chạy lệnh

vagrant ssh 

để truy cập vào máy ảo

Rất đơn giản chúng ta đã có ngay một ubuntu với một vài câu lệnh đơn giản. Tiếp theo chúng ta sẽ cài đặt thêm ruby, rails , mysql, nginx cho việc load balance các bạn tham khảo tại link cài đặt

Config sao cho hai máy ảo chạy để load balance với nginx

  • Trên hai máy ảo vagrant đã được config mình cần định nghĩa cổng cho giao tiếp với máy chủ của chúng
config.vm.network "forwarded_port", guest: 3000, host: 8084
  • File config nginx sẽ như sau /etc/nginx/sites-enabled/default.conf
upstream railsapp {
  server 127.0.0.1:3000;
}

server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;

  server_name cfn.framgia.local *.cfn.framgia.local;

  root /home/vagrant/workspace/LoadBalance/public;

  try_files $uri/index.html $uri;

  location / {
    root /home/vagrant/workspace/LoadBalance;
    index index.html index.htm;

    proxy_pass http://railsapp/;
    proxy_redirect off;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    # proxy_set_header X-Real-Port $server_port;
    # proxy_set_header X-Real-Scheme $scheme;
    proxy_set_header X-NginX-Proxy true;
  }
}

  • Tiếp theo chúng ta config nginx trên máy host
upstream rails_lb {
  server 127.0.0.1:8084 weight=4;
  server 127.0.0.1:8085 weight=2;
}

server {
  listen 80;
  listen [::]:80;

  server_name loadbalance.com;

  # root /home/likewise-open/FRAMGIA/nguyen.quang.duy/workspace/LoadBalance/public;

  # try_files $uri/index.html $uri;

  location / {
    # root /home/likewise-open/FRAMGIA/nguyen.quang.duy/workspace/LoadBalance;
    # index index.html index.htm;

    proxy_pass http://rails_lb;
    proxy_redirect off;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    # proxy_set_header X-Real-Port $server_port;
    # proxy_set_header X-Real-Scheme $scheme;
    proxy_set_header X-NginX-Proxy true;
  }
}

mình cần phải định nghĩa trong file /etc/hosts

127.0.0.1 loadbalance.com

để ta chỉ cần vào trong đường link

loadbalance.com

là có thể send request đến 2 server kia Vậy là xong và đây là kết quả tỉ lệ 2 : 1

0