OPENSTACK DESIGNATE - Một phút suy ngẫm để hướng tới tương lai.

I. OPENSTACK DESIGNATE là gì?

Đây là nguyên văn định nghĩa của Designate trên trang chủ của Openstack:

“Designate is a multi-tenant DNSaaS service for OpenStack. It provides a REST API with integrated Keystone authentication. It can be configured to auto-generate records based on Nova and Neutron actions. Designate supports a variety of DNS servers including Bind9 and Powers.”

Đây là một khái niệm cực kỳ chung chung để nói về những công dụng của Designate, vì vậy để hiểu hết được tính năng cũng như công dụng của nó thì cần phải có thời gian nghiên cứu với code-base, thực tế bắt tay vào cài đặt và thử nghiệm trên một lab với một vài DNS servers (backend) như BIND9 hay Pdns4.

Dưới đây là kinh nghiệm của tôi sau một thời gian thử nghiệm, cũng như contribute vào Designate project như sau:

1. Khái quát về Designate project:

a. Designate là gì?

image1

Designate là Domain Name System as a service (DNSaaS). Designate không phải là một DNSServer, đây là một project được sinh ra để quản lý tập trung các DNServers, thông qua Designate chúng ta chỉ cần tạo, sửa, xóa các bản ghi về zone, records, sau đó sẽ tự động kết nối và thực hiện cập nhật đến tất cả các DNSServers đang kết nối đến Designate. Với giải pháp này sẽ tránh được việc lên từng DNSServer để cấu hình, giúp tiết kiêm thời gian, nhân lực và tăng hiệu quả kinh tế.

Ngoài ra, Designate có thể cho phép tích hợp với một số project Lõi trong Openstack như Neutron, Nova, Heat, …

image2

Dưới đây là dẫn lời từ trang chủ của Openstack:

image3

Note: designate-sink service đã trở thành service tùy chọn (optional), với kiến trúc hiện tại thì Designate có thể lắng nghe trực tiếp thông qua designate-api service.

b. Designate được sử dụng để làm gì?

Như phần khái quát, tôi cũng đã đề cập đến 2 cụm tính năng chính của Designate, đó là quản lý tập trung các DNSServers và tích hợp với các project khác trong Openstack. Trong phần này tôi xin đề cập đến một chức năng chính đó là quản lý các DNSServers.

Dựa vào topology của Designate dưới đây, chúng ta cũng có thể hiểu được Designate được sử dụng để làm gì:

image4

Designate cung cấp tính năng kiểm soát nhiều DNSServers tại cùng một thời điểm, các bản ghi sẽ được khởi tạo trong Designate và lưu trữ lên cơ sở dữ liệu của Designate. Sau đó, thông qua designate-worker service sẽ tương tác trực tiếp với các DNSServers để thực hiện việc cập nhật các bản gi đó vào các DNSServers. Quá trình đồng bộ từ Designate vào DNSServer sẽ diễn ra theo một chu kỳ nhất định (do người sử dụng cài đặt trên designate.conf file), qua đó các DNSServers sẽ nhận được các bản ghi đã được cập nhật mới nhất từ Designate.

Hiện tại, Designate đang hỗ trợ để quản lý tập trung các DNSServers (như hình vẽ), cụ thể như: BIND9, PDNS4, Denominator, Djbdns, Msdns, Gdnsd, Knot2, nsd4, dynect và designate. Tuy nhiên, theo thống kê mới nhất thì chỉ có BIND9 đã được tích hợp và được kiểm tra qua OpenStack CI Infrastructure. Vì vậy, việc cần làm là đảm bảo cho các DNS server còn lại hoạt động ổn định và có thể vượt qua bài test của OpenStack CI Infrastructure trong tất cả các commit.

Dưới đây là thống kê từ nhà phát triển Designate:

image5

c. Designate ở đâu trong Openstack?

image6

Openstack có 6 Core projects, gồm Nova, Neutron, Glance, Cinder, Keystone và Swift (con được gọi là Compute Kit). Như vậy, Designate là một project con được tích hợp vào Openstack với 2 tính năng chính, đó là:

image7

Designate là một service được xếp vào nhóm Network service trong Openstack cùng với Neutron project.

2. Kiến trúc tổng quan của Designate project

Cũng như tất cả các projects khác trong Openstack thì Designate cũng đã và đang sử dụng chung các công nghệ, giao thức hiện có của Openstack, như: Remote Procedure Call (RPC), Message Queue (MQ), SQLAlchemy engine để kết nối các thành phần, các services lại với nhau.

Dưới đây là mô hình tổng quan của Designate (theo dữ liệu mới nhất từ Openstack):

image8

Đây là mô hình được sử dụng từ Newton cycle, với hai services được thay thế từ pool-manager và zone-manager thành worker và producer. Designate có 5 services chính, đó là:

image9

Ngoài ra còn một số các services tùy chọn như:

Note:

II. DESIGNATE trong OPENSTACK hiên nay?

1. Thực trạng của Designate:

Phần I là giới thiệu cơ bản về Designate project, tiếp theo đây là những gì đang diễn ra với Designate trong cộng đồng Openstack.

Theo thống kê mới nhất từ PTL (Graham-mugsie) trên blog của ông http://graham.hayes.ie/posts/openstack-designate-where-we-are/http://stackalytics.com/ thì số lượng Commits per cycle đã giảm một cách đáng kể từ Havana Cycle đến nay, cụ thể như sau:

Commits per cycle
Havana 172
Icehouse 165
Juno 254
Kilo 340
Liberty 327
Mitaka 246
Newton 299
Ocata 98
Pike 95

Trong Pike cycle dưới đây là thống kê mới nhất về số lượng công ty và contributor đã đóng góp vào mã nguồn mở của Designate như sau:

image10

Qua đó, chúng ta thấy Fujitsu đang rất quan tâm đến Designate và ứng dụng nó vào hệ thống Cloud K5 của mình. Đây có thể sẽ là một key project của Fujitsu để tập trung sử dụng và phát triển các dịch vụ trên nền của Designate.

Những gì chúng ta cần quan tâm trong biểu đồ này là số lượng công ty và contributors ngoài Fujitsu là rất ít và không đáng kể, điều này cho thấy sức thu hút để phát triển project đã suy giảm rất trầm trọng và có nguy cơ không còn contributors trong tương lai nếu Fujitsu không nhìn thấy tiềm năng và sự phát triển của Designate để tiếp tục đầu tư. Cũng như trong các buổi IRC meeting hàng tuần vào 17:00(UTC) thứ 4, gần như chỉ có contributors từ Fujitsu tương tác với PTL (timsim) và Cựu PTL (mugsie).

Với những gì đang diễn ra, nếu không có những chính sách kịp thời thì Designate project có thể sẽ không còn là project chính thức của Openstack nữa (official project - Big Tent). Đây sẽ là tổn thất rất lớn cho các công ty đã và đang sử dụng Openstack nói chung và tính năng DNSaaS nói riêng.

2. Tại sao Designate lại rơi vào hoàn cảnh như hiện tại và định hướng trong tương lai như thế nào?

Đối với 1 project trong Openstack, người ta sử dụng thước đo bằng activity qua từng chu kỳ (cycle) của mỗi project để đánh gíá được mưc độ phát triển của project đó, sự quan tâm và sử dụng từ cộng đồng hay không. Đối với Designate thì activity ở Pike cycle chỉ còn gần ¼ so với Kilo cycle.

Như phần đầu tôi đã đề cập, Designate chưa khẳng định được sự hiệu quả của mình để thu hút các công ty đầu tư vào để sử dụng và phát triển. Bên cạnh đó, Designate cũng không thu hút được nhiều contributors tham gia đóng góp vào mã nguồn mở của mình.

Theo quan điểm cá nhân tôi thì có một số điểm như sau đã và đang ảnh hưởng đến Designate:

Trên đây là một số quan điểm của tôi về tình trạng của Designate, để giải quyết tất cả các bài toàn đó cần phải có thời gian và một PTL tâm huyết (tôi nghĩ từ Queen, chúng ta sẽ có cái này ^_^). Bản thân tôi nghĩ thì việc cung cấp các tài liệu rõ ràng nên được ưu tiên hàng đầu, thứ hai là việc đồng bộ với Openstack project (kiểm thử với giải pháp OVO, OSM và centralize-config của Fujitsu đã triển khai và đề xuất) và thứ 3 là phát triển các tính năng liên quan đến tích hợp với các project khác trong Openstack.

Bên cạnh đó, chúng ta cũng có thể kêu gọi các contributorsOperators qua MailList của Openstack.

Cá nhân tôi sẽ tiếp tục contribute vào Designate và phát triển 1 vài tính năng gồm:

Cheer!

Author: Nguyễn Văn Trung [email protected]