Cấu hình phần cứng tối thiểu cho kiến trúc Greenplum Hybrid
Greenplum Database (GPDB) hoạt động dựa trên kiến trúc Massively Parallel Processing (MPP). Đối với mô hình Hybrid OLTP/OLAP, yêu cầu phần cứng cần cân bằng giữa tốc độ I/O ngẫu nhiên (OLTP) và băng thông đọc hàng loạt (OLAP).
Node Master (Primary/Standby) chịu trách nhiệm quản lý metadata, phân phối query và lưu trữ catalog. Node Segment chịu trách nhiệm lưu trữ dữ liệu thực tế và thực thi tính toán song song.
- Master Node (1-2 máy): Tối thiểu 8 vCPU, 32GB RAM, 500GB SSD NVMe (dành cho catalog và log). Không lưu trữ dữ liệu nghiệp vụ lớn.
- Segment Node (3+ máy): Tối thiểu 16 vCPU, 128GB RAM, 4TB+ SSD NVMe (dành cho data disk). RAM cần lớn để caching dữ liệu thường xuyên truy cập.
- Mạng (Network): Bắt buộc sử dụng mạng 10Gbps trở lên giữa các node. Jumbo Frames (MTU 9000) được khuyến nghị để tăng throughput cho OLAP.
Verify cấu hình hiện tại bằng lệnh:
cat /proc/cpuinfo | grep processor | wc -l && free -h && lsblk -o NAME,SIZE,TYPE
Kết quả mong đợi: Số lượng core CPU, tổng dung lượng RAM và danh sách disk phải khớp với yêu cầu trên. Đảm bảo disk dữ liệu là loại NVMe hoặc SSD tốc độ cao.
Cài đặt và cập nhật Ubuntu 24.04 LTS
Khởi tạo hệ điều hành mới
Thực hiện cài đặt Ubuntu Server 24.04 LTS từ ISO image chính thức. Trong quá trình cài đặt, chọn "Minimal install", bỏ chọn "OpenSSH server" (sẽ cấu hình thủ công sau để kiểm soát port và key), và phân vùng disk theo kiến trúc MPP.
Ngay sau khi boot lên hệ điều hành mới, thực hiện cập nhật toàn bộ repository và nâng cấp các gói hệ thống lên phiên bản mới nhất để đảm bảo tính tương thích với các thư viện C++ và kernel của Greenplum.
sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y
Kết quả mong đợi: Hệ thống thông báo "X packages upgraded, 0 newly installed" hoặc tương tự, không có lỗi dependency conflict. Phiên bản kernel và glibc đã được cập nhật.
Cấu hình Hostname và Static IP
Trong kiến trúc Cluster, mỗi node cần có một hostname cố định và địa chỉ IP tĩnh để các node khác có thể định tuyến traffic chính xác. Tên miền (domain) nên được đặt là tên cluster, ví dụ: `gp-cluster.local`.
Sửa file cấu hình netplan để gán Static IP cho giao diện mạng chính (thường là `ens192` hoặc `eth0`). Thay thế `192.168.10.X` bằng IP thực tế của node.
Đường dẫn file: /etc/netplan/00-installer-config.yaml
network:
version: 2
ethernets:
ens192:
dhcp4: no
addresses:
- 192.168.10.10/24
routes:
- to: default
via: 192.168.10.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
renderer: networkd
Áp dụng cấu hình mạng:
sudo netplan apply
Đặt hostname cho từng node. Master node đặt tên `gp-master`, Segment node đặt `gp-seg-01`, `gp-seg-02`... kèm domain `gp-cluster.local`.
sudo hostnamectl set-hostname gp-master.gp-cluster.local
Restart network service để đảm bảo hostname được áp dụng ngay lập tức nếu netplan chưa reload đủ nhanh:
sudo systemctl restart networking
Verify kết quả: Chạy lệnh `ip addr show` để xem IP đã gán đúng và `hostname` để xem tên máy đã thay đổi.
Cấu hình file /etc/hosts cho Cluster
Greenplum Database sử dụng file `/etc/hosts` để giải quyết tên miền nội bộ trước khi gọi ra DNS. Đây là bước bắt buộc để Master có thể liên lạc với tất cả Segment nodes và ngược lại.
Tất cả các node trong cluster (Master và Segments) phải có nội dung file `/etc/hosts` giống hệt nhau. File này cần ánh xạ IP của Master, Standby (nếu có) và tất cả Segments.
Đường dẫn file: /etc/hosts
127.0.0.1 localhost
127.0.1.1 gp-master.gp-cluster.local gp-master
192.168.10.10 gp-master.gp-cluster.local gp-master
192.168.10.11 gp-seg-01.gp-cluster.local gp-seg-01
192.168.10.12 gp-seg-02.gp-cluster.local gp-seg-02
# Thêm các node segment khác ở đây nếu cần
Sau khi ghi nội dung, copy file này sang tất cả các Segment nodes bằng lệnh `scp` hoặc dùng công cụ phân phối file như Ansible. Ở đây giả sử ta đã copy sang node segment.
Verify kết quả: Chạy lệnh `ping` từ Master sang Segment và ngược lại bằng hostname thay vì IP.
ping -c 3 gp-seg-01.gp-cluster.local
Kết quả mong đợi: Trả về địa chỉ IP 192.168.10.11 và thông báo "3 packets transmitted, 3 received, 0% packet loss". Nếu ping không ra, kiểm tra lại firewall hoặc IP table.
Tắt Firewall và Cấu hình SSH Keyless Login
Vô hiệu hóa Firewall (UFW)
Greenplum sử dụng nhiều cổng động cho giao tiếp giữa các Segment nodes (thường là dải cổng cao). Cấu hình firewall thủ công cho từng cổng động rất phức tạp và dễ gây lỗi kết nối. Trong môi trường lab hoặc network trust, cách an toàn nhất là tắt UFW.
sudo ufw disable
Kết quả mong đợi: Thông báo "Firewall is not active".
Cài đặt SSH và tạo Key
Greenplum yêu cầu quyền truy cập không cần mật khẩu (passwordless SSH) từ Master đến tất cả Segment nodes và từ Segment này đến Segment khác để thực thi các lệnh khởi động, sao lưu và phân phối dữ liệu.
Cài đặt gói OpenSSH server trên tất cả các node:
sudo apt install -y openssh-server
Tạo cặp key SSH loại RSA (hoặc Ed25519) trên tài khoản người dùng cài đặt (thường là `gpadmin` hoặc `root`). Ở đây ta sử dụng user `gpadmin`.
sudo -i -u gpadmin ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
Thông số `-N ""` để không đặt passphrase. Nếu có passphrase, Greenplum sẽ không thể tự động chạy các tác vụ.
Phân phối Public Key
Sử dụng công cụ `ssh-copy-id` để gửi public key từ Master đến tất cả Segment nodes. Thực hiện lệnh này trên Master node.
Thay thế `gp-seg-01` bằng hostname của từng node segment:
sudo -i -u gpadmin ssh-copy-id gp-seg-01.gp-cluster.local
Lặp lại lệnh trên cho `gp-seg-02` và các node khác. Khi được hỏi "yes/no", gõ `yes`.
Ngoài ra, Greenplum cũng cần phân phối key từ Segment này sang Segment khác (nếu cấu hình MPP phức tạp) hoặc từ Master sang Standby. Để đơn giản hóa, ta có thể dùng lệnh vòng lặp để copy key từ Master sang tất cả nodes đã định nghĩa trong file hosts.
for node in gp-seg-01.gp-cluster.local gp-seg-02.gp-cluster.local; do sudo -i -u gpadmin ssh-copy-id $node; done
Kết quả mong đợi: Thông báo "Number of key(s) added: 1".
Verify SSH Keyless Login
Thử nghiệm kết nối SSH từ Master đến Segment mà không nhập mật khẩu. Đây là bước kiểm tra quan trọng nhất trước khi cài đặt Greenplum.
sudo -i -u gpadmin ssh gp-seg-01.gp-cluster.local "echo 'SSH Connection Success' && whoami"
Kết quả mong đợi: In ra dòng "SSH Connection Success" và tên user "gpadmin" ngay lập tức mà không yêu cầu nhập password. Nếu bị treo hoặc hỏi password, kiểm tra lại file `~/.ssh/authorized_keys` trên node đích.
Cũng cần kiểm tra quyền truy cập giữa các Segment nodes nếu kiến trúc yêu cầu (thường không bắt buộc cho bước đầu nhưng tốt hơn nên có):
sudo -i -u gpadmin ssh gp-seg-02.gp-cluster.local "echo 'Cross-Segment Check' && whoami"
Điều hướng series:
Mục lục: Series: Triển khai Database Hybrid OLTP/OLAP với Greenplum trên Ubuntu 24.04
Phần 2: Cài đặt các thành phần phụ thuộc và trình biên dịch cho Greenplum »