Giới thiệu về Metadata Service trong Openstack
Metadata service là gì, và có ứng dụng như thế nào trong Openstack. Trong bài viết này, Bizfly Cloud xin 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.
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.
- 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:
Để 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-agent và dhcp-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:
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 và /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.
Theo Bizfly Cloud chia sẻ
>> Tham khảo thêm: Metadata - Siêu dữ liệu là gì? 9 ví dụ về metadata
Bizfly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.
Bizfly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.
Độc giả quan tâm đến các giải pháp của Bizfly Cloud có thể truy cập tại đây.
DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud