Quick Start BlackHole Core
Phần này hướng dẫn cài đặt BlackHole Single Node
Tài liệu hướng dẫn cho bản cài Tarball.
1. Yêu cầu tối thiểu
Yêu cầu mỗi VM tối thiểu 2GB RAM, 50 GB Disk.
Danh sách các port bao gồm:
| Port | Thành phần |
|---|---|
| 9200 | BlackHole REST API |
| 9300 | Giao tiếp giữa các node (internal), cross cluster search |
| 9600 | Performance Analyzer |
2. Cài đặt BlackHole Core (Ubuntu 24.04)
Bước 1: Tải và giải nén BlackHole Core
Sử dụng câu lệnh sau để tải xuống file cài đặt:
bash
sudo wget https://docs-blackhole.glabs.one/downloads/blackhole-core/blackhole-core-linux.tar.gz -o /opt/blackhole.tar.gzGiải nén:
bash
sudo cd /opt
sudo tar -xvf blackhole.tar.gz
sudo mv blackhole-3.1.0 blackholeBước 2: Cấu hình thiết lập hệ thống
Trên tất cả các VM thực hiện:
- Tắt swap để cải thiện hiệu suất:
bash
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab- Tăng số lượng memory maps cho BlackHole:
bash
sudo echo "vm.max_map_count=262144" >> /etc/sysctl.confReload và xác minh:
bash
# Reload cấu hình
sudo sysctl -p
# Xác minh thay đổi
cat /proc/sys/vm/max_map_count- Cấu hình JVM heap (nên set RAM bằng 1/2 RAM của VM):
bash
sed -i 's/^-Xms1g/-Xms2g/' /opt/blackhole/config/jvm.options
sed -i 's/^-Xmx1g/-Xmx2g/' /opt/blackhole/config/jvm.optionsBước 3: Gen Cert
Script sau sẽ sinh cert
bash
#!/bin/bash
set -e
BASE_DIR="$(pwd)/certs"
DAYS=3650
NODES=(
"blackhole-aio"
)
mkdir -p ${BASE_DIR}/{ca,admin,nodes}
echo "[1/6] Create Root CA..."
openssl genrsa -out ${BASE_DIR}/ca/root-ca-key.pem 4096
openssl req -x509 -new -nodes \
-key ${BASE_DIR}/ca/root-ca-key.pem \
-sha256 -days ${DAYS} \
-out ${BASE_DIR}/ca/root-ca.pem \
-subj "/C=VN/O=BlackHole/OU=PKI/CN=BlackHole-Root-CA"
echo "[2/6] Create Admin certificate..."
openssl genrsa -out ${BASE_DIR}/admin/admin-key.pem 4096
openssl req -new \
-key ${BASE_DIR}/admin/admin-key.pem \
-out ${BASE_DIR}/admin/admin.csr \
-subj "/C=VN/O=BlackHole/OU=Security/CN=admin"
openssl x509 -req \
-in ${BASE_DIR}/admin/admin.csr \
-CA ${BASE_DIR}/ca/root-ca.pem \
-CAkey ${BASE_DIR}/ca/root-ca-key.pem \
-CAcreateserial \
-out ${BASE_DIR}/admin/admin.pem \
-days ${DAYS} -sha256
rm -f ${BASE_DIR}/admin/admin.csr
echo "[3/6] Create Node certificates (DNS-only SAN)..."
for NODE in "${NODES[@]}"; do
echo " → ${NODE}"
cat > ${BASE_DIR}/nodes/${NODE}-ext.cnf <<EOF
subjectAltName = @alt_names
extendedKeyUsage = serverAuth, clientAuth
[alt_names]
DNS.1 = ${NODE}
DNS.2 = ${NODE}.blackhole.local
EOF
openssl genrsa -out ${BASE_DIR}/nodes/${NODE}-key.pem 4096
openssl req -new \
-key ${BASE_DIR}/nodes/${NODE}-key.pem \
-out ${BASE_DIR}/nodes/${NODE}.csr \
-subj "/C=VN/O=BlackHole/OU=Infrastructure/CN=${NODE}"
openssl x509 -req \
-in ${BASE_DIR}/nodes/${NODE}.csr \
-CA ${BASE_DIR}/ca/root-ca.pem \
-CAkey ${BASE_DIR}/ca/root-ca-key.pem \
-CAcreateserial \
-out ${BASE_DIR}/nodes/${NODE}.pem \
-days ${DAYS} -sha256 \
-extfile ${BASE_DIR}/nodes/${NODE}-ext.cnf
rm -f ${BASE_DIR}/nodes/${NODE}.csr ${BASE_DIR}/nodes/${NODE}-ext.cnf
done
echo "[6/6] DONE – Certificates ready at: ${BASE_DIR}"Script sẽ sinh ra các cert như kết quả bên dưới:
bash
gcsc@gcsc:/opt/blackhole/config$ bash gen.sh
[1/6] Create Root CA...
[2/6] Create Admin certificate...
Certificate request self-signature ok
subject=C = VN, O = BlackHole, OU = Security, CN = admin
[3/6] Create Node certificates (DNS-only SAN)...
→ blackhole-aio
Certificate request self-signature ok
subject=C = VN, O = BlackHole, OU = Infrastructure, CN = blackhole-aio
[6/6] DONE – Certificates ready at: /opt/blackhole/config/certs
gcsc@gcsc:/opt/blackhole/config$ ls -la certs/nodes/
total 16
drwxrwxr-x 2 gcsc gcsc 4096 Jan 21 06:57 .
drwxrwxr-x 5 gcsc gcsc 4096 Jan 21 06:57 ..
-rw------- 1 gcsc gcsc 3268 Jan 21 06:57 blackhole-aio-key.pem
-rw-rw-r-- 1 gcsc gcsc 2065 Jan 21 06:57 blackhole-aio.pem
gcsc@gcsc:/opt/blackhole/config$ ls -la certs/ca/
total 20
drwxrwxr-x 2 gcsc gcsc 4096 Jan 21 06:57 .
drwxrwxr-x 5 gcsc gcsc 4096 Jan 21 06:57 ..
-rw------- 1 gcsc gcsc 3272 Jan 21 06:57 root-ca-key.pem
-rw-rw-r-- 1 gcsc gcsc 1956 Jan 21 06:57 root-ca.pem
-rw-rw-r-- 1 gcsc gcsc 41 Jan 21 06:57 root-ca.srl
gcsc@gcsc:/opt/blackhole/config$ ls -la certs/admin
total 16
drwxrwxr-x 2 gcsc gcsc 4096 Jan 21 06:57 .
drwxrwxr-x 5 gcsc gcsc 4096 Jan 21 06:57 ..
-rw------- 1 gcsc gcsc 3272 Jan 21 06:57 admin-key.pem
-rw-rw-r-- 1 gcsc gcsc 1826 Jan 21 06:57 admin.pemPhân lại quyền để đảm bảo bảo mật
bash
chmod 600 certs/ca/*
chmod 600 certs/admin/*
chmod 600 certs/nodes/*Bước 4: Cài đặt BlackHole Core
Khởi tạo các biến môi trường
Cài đặt biến môi trường trỏ tới JDK
bashsudo cat >> /etc/environment <<EOF BLACKHOLE_JAVA_HOME=/opt/blackhole/jdk EOF source /etc/environmentĐặt mật khẩu admin khởi tạo
bashexport BLACKHOLE_INITIAL_ADMIN_PASSWORD=<custom-admin-password>Cấu hình file
blackhole.ymlnhư sauBlackHole Core:
bashcat >> /opt/blackhole/config/blackhole.yml << EOF node.name: blackhole-aio discovery.type: single-node bootstrap.memory_lock: false network.host: 0.0.0.0 plugins.security.disabled: false plugins.security.ssl.transport.pemcert_filepath: certs/nodes/blackhole-aio.pem plugins.security.ssl.transport.pemkey_filepath: certs/nodes/blackhole-aio-key.pem plugins.security.ssl.transport.pemtrustedcas_filepath: certs/ca/root-ca.pem plugins.security.ssl.transport.enforce_hostname_verification: false plugins.security.ssl.http.enabled: true plugins.security.ssl.http.pemcert_filepath: certs/nodes/blackhole-aio.pem plugins.security.ssl.http.pemkey_filepath: certs/nodes/blackhole-aio-key.pem plugins.security.ssl.http.pemtrustedcas_filepath: certs/ca/root-ca.pem plugins.security.allow_default_init_securityindex: true plugins.security.authcz.admin_dn: - "CN=admin,OU=Security,O=BlackHole,C=VN" plugins.security.audit.type: internal_blackhole plugins.security.enable_snapshot_restore_privilege: true plugins.security.check_snapshot_restore_write_privileges: true plugins.security.restapi.roles_enabled: [all_access, security_rest_api_access] plugins.security.system_indices.enabled: true EOFKhởi chạy BlackHole Core
bash/opt/blackhole/bin/blackholeTrên một node kiểm tra trạng thái
bashcurl -XGET https://localhost:9200/_cat/nodes?v -u 'admin' --insecure
Bước 4 (Optional): Cài đặt BlackHole dưới dạng Service
- Tạo user blackhole
bash
sudo adduser --system --shell /bin/bash --no-create-home blackhole- Thêm user hiện tại vào group blackhole
bash
sudo usermod -g blackhole blackhole
sudo usermod -aG blackhole $USER- Gán quyền sở hữu thư mục cho user
bash
sudo chown -R blackhole:blackhole /opt/blackhole- Tạo file systemd service trên tất cả các node
bash
sudo cat >> /etc/systemd/system/blackhole.service << EOF
[Unit]
Description=BlackHole Search Engine
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
RuntimeDirectory=blackhole
WorkingDirectory=/opt/blackhole
ExecStart=/opt/blackhole/bin/blackhole -d
User=blackhole
Group=blackhole
StandardOutput=journal
StandardError=inherit
LimitNOFILE=65535
LimitNPROC=4096
LimitAS=infinity
LimitFSIZE=infinity
TimeoutStopSec=0
KillSignal=SIGTERM
KillMode=process
SendSIGKILL=no
SuccessExitStatus=143
TimeoutStartSec=75
[Install]
WantedBy=multi-user.target
EOF- Khởi chạy BlackHole
bash
sudo systemctl daemon-reload
sudo systemctl enable blackhole.service- Kiểm tra trạng thái
bash
sudo systemctl status blackhole- Kiểm tra log
bash
journalctl -u blackhole -f