Cài đặt và cấu hình Active Directory (Samba) trên Ubuntu 24.04
Cài đặt gói Samba và các công cụ hỗ trợ
Bước đầu tiên là cài đặt gói Samba để biến máy chủ Ubuntu thành Domain Controller (DC) và các công cụ quản lý AD.
Thực hiện lệnh cập nhật kho và cài đặt các gói cần thiết.
sudo apt update && sudo apt install -y samba winbind libpam-winbind libpam-ldapd sssd dnsutils
Kết quả mong đợi: Hệ thống báo cáo "Successfully installed" cho các gói samba, winbind, sssd và dnsutils mà không có lỗi.
Cấu hình file smb.conf cho Domain Controller
Cần cấu hình file chính của Samba để định nghĩa vai trò Domain Controller, phạm vi tên miền và vùng lưu trữ.
Thay thế toàn bộ nội dung file cấu hình tại /etc/samba/smb.conf bằng nội dung dưới đây. Thay thế YOURDOMAIN.COM bằng tên miền thực tế của bạn.
[global]
workgroup = YOURDOMAIN
realm = YOURDOMAIN.COM
server role = active directory domain controller
dns forwarder = 8.8.8.8
rodc support = no
kerberos method = secrets
winbind use default domain = yes
log level = 3
log file = /var/log/samba/%m.log
max log size = 50
Kết quả mong đợi: File được ghi đè thành công, không có cảnh báo cú pháp.
Khởi tạo Domain Controller
Sử dụng công cụ samba-tool để khởi tạo cơ sở dữ liệu AD, tạo file secrets và cấu hình DNS tích hợp.
Thực hiện lệnh khởi tạo. Hệ thống sẽ yêu cầu nhập mật khẩu cho tài khoản Administrator. Hãy nhập mật khẩu mạnh (ví dụ: Admin@123) và xác nhận lại.
sudo samba-tool domain provision --use-rfc2307 --interactive
Kết quả mong đợi: Xuất hiện thông báo "Domain setup complete" và các dòng xác nhận về việc tạo file /var/lib/samba/private.
Khởi động và cấu hình DNS
Cần khởi động dịch vụ Samba và cấu hình hệ thống để sử dụng chính nó làm DNS resolver cho các client tham gia vào miền.
Khởi động dịch vụ và cấu hình file resolver của hệ thống.
systemctl enable --now smbd nmbd winbind
echo "nameserver 127.0.0.1" > /etc/resolv.conf
chmod 644 /etc/resolv.conf
Kết quả mong đợi: Dịch vụ smbd, nmbd, winbind chuyển sang trạng thái "active (running)". File resolv.conf chỉ trỏ về localhost.
Verify kết quả Active Directory
Để kiểm tra xem DC đã hoạt động, thử ping theo tên miền và tra cứu DNS.
samba-tool dcstatus
ping -c 3 YOURDOMAIN.COM
Kết quả mong đợi: Lệnh dcstatus trả về trạng thái "healthy" và lệnh ping trả về địa chỉ IP của server.
Quản lý Active Directory: Tạo OU và Tài khoản Máy chủ
Tạo Organizational Unit (OU)
Tạo một OU riêng biệt để chứa các tài khoản máy chủ SQL Server, giúp quản lý GPO và quy định bảo mật dễ dàng hơn.
Thay thế YOURDOMAIN.COM bằng tên miền thực tế.
sudo samba-tool OU create "OU=SQLServers,DC=YOURDOMAIN,DC=COM"
Kết quả mong đợi: Thông báo "OU created: SQLServers" được hiển thị.
Tạo tài khoản máy chủ (Computer Account)
Trong môi trường Always On, mỗi node SQL Server cần có một tài khoản máy chủ riêng trong AD. Giả sử chúng ta có 2 node: SQL01 và SQL02.
Thực hiện lệnh tạo tài khoản máy chủ và đặt chúng vào OU vừa tạo.
sudo samba-tool user add --posix sql01$ --unix-home=/home/sql01 --shell=/bin/bash --userou="OU=SQLServers,DC=YOURDOMAIN,DC=COM"
sudo samba-tool user add --posix sql02$ --unix-home=/home/sql02 --shell=/bin/bash --userou="OU=SQLServers,DC=YOURDOMAIN,DC=COM"
Kết quả mong đợi: Thông báo "User created: sql01$" và "User created: sql02$". Lưu ý ký tự $ ở cuối tên là đặc thù của tài khoản máy chủ.
Verify tài khoản trong AD
Liệt kê các tài khoản trong OU để xác nhận chúng đã được tạo đúng vị trí.
sudo samba-tool user list --query="OU=SQLServers,DC=YOURDOMAIN,DC=COM"
Kết quả mong đợi: Danh sách hiển thị sql01$ và sql02$.
Cài đặt SQL Server 2022 từ Repository Microsoft
Cấu hình Repository Microsoft cho Ubuntu 24.04
Ubuntu 24.04 (Noble Numbat) yêu cầu repository mới. Cần thêm kho lưu trữ chính thức của Microsoft để cài bản Enterprise.
Tải file cấu hình repository và thêm vào nguồn APT.
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
curl -fsSL https://packages.microsoft.com/config/ubuntu/24.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
Kết quả mong đợi: File keyring được tạo và file list được ghi vào thư mục sources.list.d.
Cài đặt SQL Server 2022 Enterprise
Thực hiện cập nhật cache repository và cài đặt gói SQL Server Enterprise Edition.
Lệnh này sẽ cài đặt gói mssql-server2022 (Enterprise) thay vì bản Standard mặc định.
sudo apt update
sudo ACCEPT_EULA=Y apt install -y mssql-server2022
Kết quả mong đợi: Quá trình cài đặt chạy, không có lỗi thiếu package. Dịch vụ mssql-server được cài đặt.
Cấu hình SQL Server khởi động và chạy
SQL Server không tự động chạy ngay sau cài đặt, cần khởi động dịch vụ và cấu hình bảo mật cơ bản.
sudo systemctl enable --now mssql-server
Kết quả mong đợi: Dịch vụ mssql-server chuyển sang trạng thái "active (running)".
Cấu hình tính năng Always On Availability Groups
Bước quan trọng nhất: SQL Server cần được cấu hình để kích hoạt tính năng Always On. Điều này được thực hiện bằng cách chỉnh sửa file cấu hình mssql.conf.
Chỉnh sửa file /var/opt/mssql/mssql.conf. Thêm dòng always_on vào phần [mssqlserver].
sudo tee -a /var/opt/mssql/mssql.conf
Kết quả mong đợi: File được ghi thêm dòng cấu hình.
Khởi động lại SQL Server để áp dụng Always On
Thay đổi cấu hình Always On yêu cầu khởi động lại dịch vụ để có hiệu lực.
sudo systemctl restart mssql-server
Kết quả mong đợi: Dịch vụ khởi động lại thành công. Chờ khoảng 30 giây để dịch vụ ổn định.
Verify cài đặt SQL Server và Always On
Truy cập vào SQL Server để kiểm tra phiên bản và trạng thái tính năng Always On.
Thực hiện lệnh kết nối và chạy query kiểm tra.
sudo /opt/mssql/bin/mssql-conf show
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q "SELECT SERVERPROPERTY('Edition') AS Edition, SERVERPROPERTY('IsHadrClusterNode') AS IsHadrNode;"
Kết quả mong đợi:
- Lệnh mssql-conf show hiển thị always_on=1.
- Lệnh sqlcmd trả về:
- Edition: Enterprise
- IsHadrNode: 1 (Biểu thị tính năng Always On đã được kích hoạt và nhận diện node).
Tham gia SQL Server vào Active Directory
Cài đặt công cụ quản lý Kerberos/SSSD
Để SQL Server chạy dưới tài khoản miền (Domain Account) thay vì Local SA, cần cấu hình SSSD để machine có thể xác thực với AD.
Cấu hình file /etc/sssd/sssd.conf để trỏ về domain của Samba.
sudo tee /etc/sssd/sssd.conf
Kết quả mong đợi: File được ghi và cấp quyền 600 (bắt buộc để SSSD chạy).
Khởi động lại SSSD và Winbind
Khởi động lại các dịch vụ để áp dụng cấu hình mới.
sudo systemctl restart sssd winbind
Kết quả mong đợi: Các dịch vụ chạy mà không có lỗi trong log.
Tham gia máy chủ vào Domain (Join Domain)
Thay vì dùng lệnh realm join phức tạp trên Ubuntu 24.04, chúng ta sử dụng kinit để xác thực và sau đó cấu hình SQL Server chạy dưới tài khoản máy chủ miền.
Trước tiên, kiểm tra khả năng liên lạc với DC qua Kerberos.
kinit sql01\$@YOURDOMAIN.COM
Hệ thống sẽ yêu cầu nhập mật khẩu của tài khoản sql01$ (mật khẩu này được tạo tự động khi dùng samba-tool user add, thường là chuỗi ngẫu nhiên hoặc bạn có thể đặt lại bằng samba-tool user setpass sql01$). Nếu bạn chưa đặt lại, hãy đặt lại mật khẩu trước.
sudo samba-tool user setpass sql01$
# Nhập mật khẩu mới, ví dụ: SQL@123
Thử lại lệnh kinit với mật khẩu mới vừa đặt.
kinit sql01\$@YOURDOMAIN.COM
Kết quả mong đợi: Không có lỗi, lệnh trả về Principal: sql01$@YOURDOMAIN.COM.
Cấu hình SQL Server chạy dưới tài khoản Domain
Để Always On hoạt động tốt, SQL Server nên chạy dưới tài khoản máy chủ miền (Machine Account) để tự động quản lý chứng chỉ Kerberos.
Cấu hình thông tin đăng nhập cho SQL Server.
sudo /opt/mssql/bin/mssql-conf set machine user sql01$
sudo /opt/mssql/bin/mssql-conf set machine password "SQL@123"
Kết quả mong đợi: Thông báo "Restarting service..." hoặc yêu cầu restart thủ công.
Khởi động lại SQL Server với quyền Domain
Khởi động lại dịch vụ để nó chạy với user mới.
sudo systemctl restart mssql-server
Kết quả mong đợi: Dịch vụ khởi động thành công. Kiểm tra log /var/opt/mssql/log/errorlog không có lỗi "Login failed for user".
Verify SQL Server chạy dưới Domain User
Chạy query để xác nhận SQL Server đang chạy dưới tài khoản miền.
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q "SELECT SYSTEM_USER AS CurrentLogin, SUSER_SNAME() AS DomainUser;"
Kết quả mong đợi:
- CurrentLogin: YOURDOMAIN\SQL01$
- DomainUser: YOURDOMAIN\SQL01$
Điều hướng series:
Mục lục: Series: Triển khai Database SQL Server Always On với Ubuntu 24.04
« Phần 1: Chuẩn bị môi trường Ubuntu 24.04 và yêu cầu phần cứng cho SQL Server
Phần 3: Cấu hình Cluster Linux (WSFC) cho Always On »