Cách cài đặt OpenSearch thông qua Docker trên Ubuntu 22.04

theanh

Administrator
Nhân viên
OpenSearch là một dự án do cộng đồng Amazon thúc đẩy và là một nhánh của Elasticsearch và Kibana. Đây là một công cụ tìm kiếm và bộ phân tích mã nguồn mở hoàn toàn với nhiều tính năng phong phú và chức năng sáng tạo. Thành phần chính của dự án OpenSearch là OpenSearch (một nhánh của Elasticsearch) và OpenSearch Dashboards (một nhánh của Kibana). Cả hai thành phần đều cung cấp các tính năng như bảo mật doanh nghiệp, cảnh báo, học máy, SQL, quản lý trạng thái chỉ mục, v.v.

OpenSearch là 100% mã nguồn mở và được cấp phép theo giấy phép Apache 2.0. Nó cho phép bạn dễ dàng thu thập, bảo mật, tìm kiếm, tổng hợp, xem và phân tích dữ liệu cho một số trường hợp sử dụng như phân tích nhật ký, tìm kiếm ứng dụng, tìm kiếm doanh nghiệp, v.v.

Trong hướng dẫn này, bạn sẽ cài đặt và thiết lập OpenSearch - một công cụ tìm kiếm và bộ phân tích mã nguồn mở - và OpenSearch Dashboards - một công cụ trực quan hóa mã nguồn mở - thông qua Docker trên máy chủ Ubuntu 22.04. Bạn sẽ triển khai một cụm OpenSearch với nhiều container và một Bảng điều khiển OpenSearch duy nhất thông qua Docker và Docker Compose. Bạn cũng sẽ bảo mật triển khai của mình bằng chứng chỉ TLS tùy chỉnh và xác thực và ủy quyền được bật.

Hướng dẫn này sử dụng máy chủ Ubuntu chung mới, vì vậy hướng dẫn này bao gồm cài đặt công cụ Docker và Docker Compose trên hệ thống Ubuntu 22.04.

Điều kiện tiên quyết​

Để hoàn thành hướng dẫn này, bạn phải có các yêu cầu sau:
  • Máy chủ Ubuntu 22.04 có RAM tối thiểu 4-8GB - Ví dụ này sử dụng máy chủ Ubuntu có tên máy chủ '' và địa chỉ IP ''.
  • Người dùng không phải root có quyền quản trị viên sudo/root.
Khi các yêu cầu này đã sẵn sàng, giờ bạn có thể bắt đầu cài đặt OpenSearch.

Thiết lập hệ thống​

Trong bước đầu tiên này, bạn sẽ chuẩn bị hệ thống Ubuntu của mình để triển khai OpenSearch. Bạn sẽ cần vô hiệu hóa SWAP và phân trang, sau đó bạn sẽ tăng bản đồ bộ nhớ tối đa thông qua tệp '/etc/sysctl.conf'.

Chạy lệnh bên dưới để vô hiệu hóa hoán đổi trên hệ thống của bạn. Lệnh 'sed' ở đây sẽ vô hiệu hóa hoán đổi vĩnh viễn thông qua tệp '/etc/fstab' bằng cách thêm chú thích '#' vào đầu dòng cấu hình hoán đổi. Lệnh 'swapoff' sẽ vô hiệu hóa hoán đổi trong phiên hiện tại.
Mã:
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
Tiếp theo, xác minh trạng thái hoán đổi thông qua lệnh bên dưới. Nếu bị vô hiệu hóa, bạn sẽ nhận được kết quả đầu ra '0' trong phần hoán đổi.
Mã:
free -m
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22198%22%3E%3C/svg%3E


Cuối cùng, bạn sẽ thêm cấu hình vào Tệp '/etc/sysctl.conf' để tăng bản đồ bộ nhớ tối đa trên hệ thống Ubuntu của bạn.

Chạy lệnh bên dưới để thêm tham số 'vm.max_map_count=262144' vào cuối dòng của tệp '/etc/sysctl.conf'. Sau đó, áp dụng các thay đổi thông qua lệnh 'sysctl -p'.
Mã:
sudo echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sudo sysctl -p
Bây giờ hãy xác minh các bản đồ bộ nhớ tối đa bằng cách chạy lệnh bên dưới. Nếu thành công, bản đồ bộ nhớ tối đa của bạn sẽ là '262144'.
Mã:
cat /proc/sys/vm/max_map_count
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22723%22%20height=%22197%22%3E%3C/svg%3E


Khi chức năng hoán đổi bị vô hiệu hóa và bản đồ bộ nhớ tối đa tăng lên '262144', Tiếp theo, bạn sẽ bắt đầu cài đặt Docker engine và Docker Compose.

Cài đặt Docker CE và Docker Compose​

Có nhiều cách để triển khai và cài đặt OpenSearch, bạn có thể cài đặt OpenSearch theo cách truyền thống trên máy ảo hoặc cài đặt trong môi trường chứa.

Nếu bạn thích cài đặt theo cách truyền thống trên máy ảo, bạn có thể cài đặt OpenSearch theo cách thủ công qua Tarball hoặc qua trình quản lý gói (đối với các bản phân phối dựa trên RHEL). Đối với triển khai chứa, bạn có thể cài đặt OpenSearch bằng Docker và Kubernetes.

Trong ví dụ này, bạn sẽ cài đặt OpenSearch trên môi trường chứa thông qua Docker engine và Docker compose. Bây giờ, bạn sẽ cài đặt các gói Docker từ kho lưu trữ Docker chính thức.

Để bắt đầu, hãy chạy lệnh apt bên dưới để cài đặt các phụ thuộc cơ bản. Nhập y khi được nhắc và nhấn ENTER để tiếp tục.
Mã:
sudo apt install ca-certificates curl gnupg lsb-release
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22704%22%20height=%22259%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh bên dưới để thêm khóa GPG và kho lưu trữ cho các gói Docker.
Mã:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Mã:
echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22128%22%3E%3C/svg%3E


Sau đó, hãy cập nhật và làm mới chỉ mục gói Ubuntu của bạn thông qua lệnh apt bên dưới.
Mã:
sudo apt update
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22685%22%20height=%22191%22%3E%3C/svg%3E


Sau khi thêm kho lưu trữ Docker, giờ đây bạn có thể cài đặt công cụ Docker và plugin Docker Compose bằng lệnh apt bên dưới. Khi được nhắc, hãy nhập y, sau đó nhấn ENTER để tiếp tục.
Mã:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22228%22%3E%3C/svg%3E


Dịch vụ Docker sẽ tự động khởi động và kích hoạt. Bạn có thể xác minh dịch vụ Docker thông qua tiện ích lệnh systemctl sau.
Mã:
sudo systemctl is-enabled docker
sudo systemctl status docker
Bạn sẽ nhận được thông báo dịch vụ Docker đã được bật và sẽ tự động chạy khi khởi động. Và trạng thái của dịch vụ Docker đang chạy.

Cuối cùng, để cho phép người dùng không phải root chạy vùng chứa Docker, bạn phải thêm người dùng của mình vào nhóm 'docker'. Chạy lệnh usermod bên dưới để thêm người dùng của bạn vào nhóm 'docker'. Ngoài ra, hãy đảm bảo thay đổi tên người dùng bằng tên người dùng của bạn.
Mã:
sudo usermod -aG docker alice
Bây giờ bạn có thể đăng nhập với tư cách là người dùng của mình và chạy vùng chứa Docker thông qua lệnh bên dưới.
Mã:
su - alice
docker run hello-world
Khi thành công, bạn sẽ nhận được thông báo hello-world từ vùng chứa Docker như ảnh chụp màn hình sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22736%22%20height=%22548%22%3E%3C/svg%3E

Tải xuống hình ảnh OpenSearch Docker​

Trong bước này, bạn sẽ tải xuống hình ảnh OpenSearch và OpenSearch Dashboards từ DockerHub. Sau đó, bạn cũng sẽ chạy một vùng chứa OpenSearch mới cho mục đích thử nghiệm.

Chạy lệnh sau để tải xuống hình ảnh OpenSearch và OpenSearch Dashboards.
Mã:
docker pull opensearchproject/opensearch:latest
docker pull opensearchproject/opensearch-dashboards:latest
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22181%22%3E%3C/svg%3E



data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22203%22%3E%3C/svg%3E


Sau khi tải xuống xong, hãy chạy lệnh bên dưới để kiểm tra danh sách hình ảnh Docker trên hệ thống của bạn. Bạn sẽ thấy hình ảnh OpenSearch và OpenSearch Dashboards có sẵn trên hệ thống của bạn.
Mã:
docker images
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22144%22%3E%3C/svg%3E


Tiếp theo, bạn cũng có thể chạy OpenSearch qua Docker trực tiếp bằng lệnh bên dưới. Lệnh này sẽ tạo và chạy container OpenSearch ở chế độ duy nhất và hiển thị cổng TCP mặc định là 9200 và 9600 trên máy chủ.
Mã:
docker run -d -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" opensearchproject/opensearch:latest
Kiểm tra danh sách container đang chạy thông qua lệnh 'docker ps' bên dưới.
Mã:
docker ps
Bạn sẽ nhận được kết quả như sau this - Container OpenSearch đã được tạo và đang chạy. Các cổng TCP 92009600 đã được hiển thị trên cả container và máy chủ Docker.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22110%22%3E%3C/svg%3E


Bạn có thể truy cập container OpenSearch của mình thông qua lệnh curl bên dưới. Tên người dùng và mật khẩu mặc định cho vùng chứa OpenSearch là 'admin'.
Mã:
curl https://localhost:9200 -ku 'admin:admin'
Khi thành công, bạn sẽ nhận được kết quả như thế này - Vùng chứa OpenSearch đang chạy và có thể truy cập thông qua máy chủ Docker.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22618%22%20height=%22393%22%3E%3C/svg%3E


Bây giờ bạn có thể chạy lệnh 'docker' bên dưới để dừng và xóa vùng chứa OpenSearch. Bởi vì ở bước tiếp theo, bạn sẽ tạo một cụm OpenSearch thông qua Docker Compose. Hãy đảm bảo thay đổi tên vùng chứa trong lệnh sau.
Mã:
docker stop container-name or container-id
docker rm container-name or container-id
Để đảm bảo rằng vùng chứa OpenSearch đã bị xóa, hãy chạy lệnh 'docker ps' với tùy chọn bổ sung '-a'. Thao tác này sẽ hiển thị cho bạn các container có sẵn với cả hai trạng thái, đang chạy và đã thoát.
Mã:
docker ps -a
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22223%22%3E%3C/svg%3E

Thiết lập thư mục dự án​

Đăng nhập vào người dùng của bạn bằng lệnh sau. Ví dụ này sử dụng người dùng 'alice', vì vậy hãy đảm bảo thay đổi tên người dùng trong lệnh bên dưới.
Mã:
su - alice
Bây giờ hãy tạo một thư mục dự án mới 'opensearch-project' sẽ được sử dụng làm thư mục gốc chính của dự án của bạn và thư mục 'certs' sẽ được sử dụng để lưu trữ TLS tùy chỉnh chứng chỉ.
Mã:
mkdir -p ~/opensearch-project/certs; cd ~/opensearch-project
Trong thư mục 'opensearch-project', hãy chạy lệnh bên dưới để tạo các tệp mới sẽ được sử dụng để tạo các vùng chứa OpenSearch và Bảng điều khiển OpenSearch.
Mã:
touch docker-compose.yml opensearch.yml opensearch_dashboards.yml internal_users.yml

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22143%22%3E%3C/svg%3E


Danh sách các tệp:
  • docker-compose.yml - cấu hình chính của Docker Compose cho dự án OpenSearch.
  • opensearch.yml - cấu hình tùy chỉnh cho các vùng chứa OpenSearch.
  • opensearch_dashbaords.yml - cấu hình tùy chỉnh cho vùng chứa OpenSearch Dashboards.
  • internal_users.yml - xác thực và ủy quyền người dùng tùy chỉnh cho OpenSearch và OpenSearch Dashboards.

Tạo chứng chỉ SSL/TLS​

Trong bước này, bạn sẽ tạo nhiều chứng chỉ TLS sẽ được sử dụng để bảo mật triển khai OpenSearch của bạn. Bạn sẽ tạo các chứng chỉ sau:
  • Chứng chỉ CA gốc: Các chứng chỉ này sẽ được sử dụng để ký các chứng chỉ khác.
  • Chứng chỉ quản trị: Các chứng chỉ này sẽ được sử dụng để có được quyền quản trị để thực hiện tất cả các tác vụ liên quan đến plugin bảo mật.
  • Chứng chỉ Bảng điều khiển OpenSearch: Các chứng chỉ này sẽ được sử dụng để bảo mật Bảng điều khiển OpenSearch và cho phép bạn có thể truy cập Bảng điều khiển OpenSearch qua kết nối HTTPS.
  • Chứng chỉ Nút và Máy khách: Các chứng chỉ này sẽ được sử dụng bởi các nút và máy khách trong cụm OpenSearch.
Để bắt đầu, hãy chạy lệnh bên dưới để tạo các thư mục mới sẽ được sử dụng cho chuỗi TLS chứng chỉ.
Mã:
mkdir -p certs/{ca,os-dashboards}
Tạo biến môi trường mới 'MYDN' sẽ được sử dụng để tạo chứng chỉ TLS mới. Hãy đảm bảo thay đổi các chi tiết với thông tin của bạn.
Mã:
export MYDN="/C=CA/ST=ONTARIO/L=TORONTO/O=HWDOMAIN"
Bây giờ bạn đã sẵn sàng tạo chứng chỉ TLS cho triển khai OpenSearch của mình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22159%22%3E%3C/svg%3E

Tạo chứng chỉ CA​

Tạo khóa riêng cho chứng chỉ CA gốc bằng cách sử dụng lệnh bên dưới.
Mã:
openssl genrsa -out certs/ca/ca.key 2048
Bây giờ hãy tạo chứng chỉ CA gốc tự ký thông qua lệnh bên dưới. Giá trị của tham số '-subj' đang sử dụng biến môi trường 'MYDN' mà bạn đã tạo trên phiên hiện tại của mình.
Mã:
openssl req -new -x509 -sha256 -days 1095 -subj "$MYDN/CN=CA" -key certs/ca/ca.key -out certs/ca/ca.pem
Với điều này, bạn sẽ nhận được khóa riêng CA gốc 'ca.key' và chứng chỉ CA gốc 'ca.pem'. Bạn có thể xác minh chứng chỉ CA mà bạn đã tạo thông qua lệnh sau.
Mã:
ls certs/ca/
Đầu ra - Bạn sẽ nhận được khóa riêng CA 'ca.key' và tệp chứng chỉ CA 'ca.pem'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2292%22%3E%3C/svg%3E

Tạo chứng chỉ quản trị​

Tạo khóa riêng chứng chỉ quản trị viên mới 'admin-temp.key' và chuyển đổi chứng chỉ đã tạo thành thuật toán tương thích với PKCS#12 (3DES). Với thuật toán này, khóa riêng quản trị viên của bạn sẽ là 'admin.key'.
Mã:
openssl genrsa -out certs/ca/admin-temp.key 2048
openssl pkcs8 -inform PEM -outform PEM -in certs/ca/admin-temp.key -topk8 -nocrypt -v1 PBE-SHA1-3DES -out certs/ca/admin.key
Tiếp theo, chạy lệnh bên dưới để tạo CSR (Yêu cầu ký chứng chỉ) của quản trị viên từ khóa riêng 'admin.key'. CSR bạn tạo bây giờ phải là tệp 'admin.csr'.
Mã:
openssl req -new -subj "$MYDN/CN=ADMIN" -key certs/ca/admin.key -out certs/ca/admin.csr
Bây giờ hãy chạy lệnh bên dưới để ký CSR quản trị bằng chứng chỉ CA gốc và khóa riêng. Đầu ra của chứng chỉ quản trị là tệp 'admin.pem'.
Mã:
openssl x509 -req -in certs/ca/admin.csr -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out certs/ca/admin.pem
Cuối cùng, hãy xác minh danh sách chứng chỉ của bạn thông qua lệnh sau.
Mã:
ls certs/ca/
Đầu ra - Bạn sẽ thấy các tệp chứng chỉ quản trị 'admin.pem' và khóa riêng 'admin.key'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22140%22%3E%3C/svg%3E

Tạo chứng chỉ bảng điều khiển OpenSearch​

Tạo chứng chỉ mới sẽ được sử dụng cho bảng điều khiển OpenSearch.

Chạy lệnh sau để tạo khóa riêng 'os-dashboards-temp.key' và chuyển đổi chứng chỉ đã tạo thành thuật toán tương thích với PKCS#12 (3DES). Với lệnh này, khóa riêng tư của quản trị viên sẽ là 'os-dashboards.key'.
Mã:
openssl genrsa -out certs/os-dashboards/os-dashboards-temp.key 2048
openssl pkcs8 -inform PEM -outform PEM -in certs/os-dashboards/os-dashboards-temp.key -topk8 -nocrypt -v1 PBE-SHA1-3DES -out certs/os-dashboards/os-dashboards.key
Tiếp theo, hãy chạy lệnh bên dưới để tạo CSR (Yêu cầu ký chứng chỉ) cho Bảng điều khiển OpenSearch. CSR bạn tạo bây giờ phải là tệp 'os-dashboards.csr'.
Mã:
openssl req -new -subj "$MYDN/CN=os-dashboards" -key certs/os-dashboards/os-dashboards.key -out certs/os-dashboards/os-dashboards.csr
Bây giờ hãy chạy lệnh bên dưới để ký CSR của Bảng điều khiển OpenSearch bằng chứng chỉ CA gốc và khóa riêng. Đầu ra của chứng chỉ quản trị là tệp 'os-dashboards.pem'.
Mã:
openssl x509 -req -in certs/os-dashboards/os-dashboards.csr -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out certs/os-dashboards/os-dashboards.pem
Cuối cùng, hãy chạy lệnh sau để xóa tệp CSR của Bảng điều khiển OpenSearch và xác minh danh sách chứng chỉ của bạn cho Bảng điều khiển OpenSearch.
Mã:
rm certs/os-dashboards/os-dashboards-temp.key certs/os-dashboards/os-dashboards.csr
ls certs/os-dashboards/
Đầu ra - Bạn sẽ thấy các tệp chứng chỉ của Bảng điều khiển OpenSearch 'os-dashboards.pem' và khóa riêng 'os-dashboards.key'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22137%22%3E%3C/svg%3E

Tạo chứng chỉ cho các nút OpenSearch​

Chạy lệnh sau để tạo chứng chỉ nút. Với lệnh này, bạn sẽ tạo nhiều thư mục trong thư mục 'certs' và tạo chứng chỉ TLS cho nhiều máy chủ.
Mã:
for NODE_NAME in "os01" "os02" "os03"
do
 mkdir "certs/${NODE_NAME}"
 openssl genrsa -out "certs/$NODE_NAME/$NODE_NAME-temp.key" 2048
 openssl pkcs8 -inform PEM -outform PEM -in "certs/$NODE_NAME/$NODE_NAME-temp.key" -topk8 -nocrypt -v1 PBE-SHA1-3DES -out "certs/$NODE_NAME/$NODE_NAME.key"
 openssl req -new -subj "$MYDN/CN=$NODE_NAME" -key "certs/$NODE_NAME/$NODE_NAME.key" -out "certs/$NODE_NAME/$NODE_NAME.csr"
 openssl x509 -req -extfile
 
Back
Bên trên