19/09/2018, 20:57

Tổng quan về Traefik

Lời mở đầu Chào mọi người! Trong bài viết này, mình sẽ giới thiệu tới bạn đọc cái nhìn tổng quan về Traefik (phiên âm là /ˈtræfɪk/ luôn ha). Mục tiêu của mình là sẽ làm một số bài viết xoay quanh câu chuyện về anh chàng Traefik. Nhưng trước hết, chúng ta cần thiết có một bài mở đầu như này để ...

Lời mở đầu

Chào mọi người! Trong bài viết này, mình sẽ giới thiệu tới bạn đọc cái nhìn tổng quan về Traefik (phiên âm là /ˈtræfɪk/ luôn ha). Mục tiêu của mình là sẽ làm một số bài viết xoay quanh câu chuyện về anh chàng Traefik. Nhưng trước hết, chúng ta cần thiết có một bài mở đầu như này để biết Traefik nó là cái gì và nó sẽ làm được gì cũng như cách thứ hoạt động của nó. Hy vọng sẽ là một bài hữu ích để các bạn bắt đầu với Traefik dễ dàng hơn.

/pictures/picfullsizes/2018/09/19/tmk1537364977.png

Giới thiệu Traefik

Traefik là một Reverse-proxy hiện đại, và cũng là load balancer để làm cho việc deploy hệ thống microservice được trở lên dễ dàng hơn. Tích hợp rất nhiều các thành phần infrastructure như Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS... Và tính tự động là điểm quan trọng nhất trong các config với traefik.

Traefik sinh ra để làm gì?

Traefik và Microservices

Chắc hẳn Microservices architecture là một cụm từ không mấy xa lạ tại thời điểm công nghệ năm 2018 hiện tại. Đúng theo nghĩa đen, microservice nó là một kiểu kiến trúc hệ thống để dựng lên application của chúng ta. Tại đó, application được định nghĩa dưới dạng một tập hợp các services. Mỗi service sẽ đảm nhiệm một phần chức năng trong hệ thống, kết hợp với Docker thì quá là tuyệt vời. Để người dùng truy cập vào hệ thống microservice thì bạn cần một reverse proxy. Và reverse proxy chính là một trong số các vấn đề mà chúng ta gặp phải trong kiến trúc này. Traefik sinh ra để giải quyết việc đó.

Vấn đề với Reverse-proxy

Thông thường, chúng ta cần reverse-proxy để định tuyến tới các service, mapping qua sub-domain hoặc chỉ là một path. Chẳng hạn, domain.com là domain chính, hiển thị Web UI của application, api.domain.com điều hướng tới api service hay domain.com/landing-page định tuyến tới một landing page, etc. Dưới đây là một bức hình minh hoạ từ Traefik, để giúp bạn hiểu hơn những gì mình nói ở trên.

/pictures/picfullsizes/2018/09/19/tws1537364978.png

Vấn đề nảy sinh khi chúng ta phải làm việc với nó thường xuyên, nhiều lần trên ngày. Và công việc định tuyến với reverse-proxy lặp đi lặp lại thật sự nhàm chán. Và câu chuyện định tuyến này trở nên "peace of cake" qua vài dòng config với traefik. Và traefik sẽ generate các routes tương ứng, kết nối các thành phần web-ui, api, landing-page ở trên với thế giới bên ngoài.

Và khi kết hợp với docker thì quá ngon, dù bạn chạy single host, hay multi-host.

Cách tính năng

Các bạn có thể tham khảo thêm qua website của traefik. Mình xin phép chỉ liệt kê một số tính năng hiện tại mình đang dùng với traefik.

  • Traefik tự động cập nhật cấu hình mà không phải restart
  • Hỗ trợ nhiều giải thuật load balancing
  • Free HTTPS cho microservice với Let's Encrypt
  • Websocket, HTTP/2, GRPC
  • Chống quá tải với Circuit breakers
  • Lưu access logs (JSON, CLF)
  • Fast             </div>
            
            <div class=
0