Trang chủ Cloud Computing

Giới thiệu về Metadata Service trong Openstack

Giới thiệu về Metadata Service trong Openstack

Metadata Service là gì?

Openstask sử dụng Metadata Service để thêm các tùy chỉnh đến các Instances thông qua Network (Neutron). Ví dụ như ta muốn thêm ssh keys, passwords, hostnames, hoặc các scripts tới Instances. Nếu đứng từ góc độ người dùng, Metadata Service giúp bất kỳ client nào trong Openstack Instances có thể lấy được các thông tin của chính mình như:

– Thông tin về Public IP/Hostname

– Thông tin về SSH Public Keys

– Thông tin về Random Seed

Metadata được chỉ định trong tập tin metadata_data.json với các thông tin như sau.

Ảnh 1.

Cấu hình Metadata server

Có hai cách để cấu hình Metadata server như sau:

- Router Network (L3-Agent)

- Isolate Network(DHCP-agent)

Router Network

Trong trường hợp này, các VMs sẽ nằm trên một network được kết nối tới một router. Router này được triển khai trên neutron bằng cách sử dụng công nghệ Network Namspace. Sẽ có một agent cụ thể được chỉ định để xử lý các Routers đó là L3_agent. Trong chế độ router network này L3_agent có chức năng charge of spawning (sinh ra) metadata proxy. 

Đúng như cái tên của nó, metadata proxy giống như một proxy đảm nhiệm chức năng chuyển tiếp các request tới metadata agent sử dụng Unix Domain Socket. Khi một máy ảo gửi một request metadata, request sẽ đến router (vì nó là default gateway). Lúc này tại router namspace sẽ có một iptables rule để redirect traffic tới đích là một metadata server với local port là 9697.

Ảnh 2.

Ảnh 3.

– IP của máy ảo đã gửi request

– Router ID của cái router đã được kết nối tới mạng mà máy ảo đang sử dụng

Sau khi có được các thông tin như trên metadata proxy sẽ thêm các thông tin ( IP của VM và Router ID) vào trong HTTP Header và forward request tới metadata agent. Metadata agent sẽ sử dụng router ID để liệt kê ra tất cả các network đã kết nối tới router và xác định network nào là network mà máy ảo gửi request đang sử dụng. Tại sao lại có bước này, đơn giản bởi vì với công nghệ network namespace mà openstack sử dụng thì các tenant network là hoàn toàn isolate, ta có thể tạo ra các Instances có IP hoàn toàn giống nhau ở các network khác nhau, nên phải ta phải có cơ chế để biết chính xác nguồn gửi request ( Nó là VM nào thuộc network nào).

Tiếp theo, matadata agent sẽ query tới neutron server để lấy instance ID của VM bằng cách sử dụng IP và Network ID để lọc. Cuối cùng nó sẽ thêm instance ID vào HTTP request và forward request tới NOVA. Quy trình sẽ được thể hiện rõ trong hình sau:

Ảnh 4.

Để cấu hình Metadata Service ta cần có các cấu hình chung cho cả hai trường hợp: sử dụng l3-agentdhcp-agent/

Thêm cấu hình tại file /etc/nova/nova.conf:

enabled_apis=osapi_compute,metadata

service_neutron_metadata_proxy = True

neutron_metadata_proxy_shared_secret = vccloud

Thêm cấu hình tại file /etc/neutron/metadata_agent.ini:

[DEFAULT]

auth_url = http://controller3:5000/v3

auth_region = RegionOne

admin_tenant_name = service

admin_user = neutron

admin_password = vccloud

nova_metadata_ip = controller3

metadata_proxy_shared_secret = vccloud

Sử dụng l3-agent ta cấu hình thêm như sau:

Tại file /etc/neutron/dhcp_agent.ini:

enable_metadata_network = True

enable_isolated_metadata = False

Tại file /etc/neutron/l3_agent.ini:

enable_metadata_proxy = true

metadata_port = 9697

Isolated Network

Khi một network không kết nối tới router thì các VM sẽ lấy metadata của nó như thế nào? Lúc này ta cần cấu hình trong file cấu hình của dhcp agent để set tham số enable_isolated_metadata = true. Và dhcp agent sẽ lắng nghe trên port 80:

Ảnh 7.

Ảnh 8.

Cấu hình metadata service với dhcp_agent

Như đã nói ở trên để cấu hình sử dụng metadata service với dhcp_agent ta vẫn cần có các cấu hình chung tại file /etc/nova/nova.conf/etc/neutron/metadata_agent.ini bên cạnh đó cần cấu hình tại tập tin /etc/neutron/dhcp_agent.ini như sau:

enable_isolated_metadata = True

enable_metadata_network = True

Phân biệt giữa Userdata và Metadata

Instance Metadata và Userdata có những điểm khác biệt sau đây:

- Instance Metadata: chủ yếu được sử dụng bơi Nova Instances, và nó thường chứa các thông tin như: Hostnames, SSH Keys …. ( Như đã show đầu bài viết).

Userdata: thường được sử dụng bởi Heat, và thường chứa các thông tin như root password và startup scripts.

>> Tham khảo thêm: Hướng dẫn cài đặt .Net Framework 3.5 cho windows server 2012