Để triển khai một cụm Elasticsearch 7.14.1 an toàn và hỗ trợ xử lý ngôn ngữ tiếng Việt/Trung, cần tuân thủ nghiêm ngặt tính tương thích phiên bản và cấu hình bảo mật theo chuẩn Elastic Stack.
1. Cài đặt nền tảng
Tải gói RPM phù hợp:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.1-x86_64.rpm
sudo yum install elasticsearch-7.14.1-x86_64.rpm
Vị trí cài đặt tiêu chuẩn:
/etc/elasticsearch/: thư mục cấu hình/usr/share/elasticsearch/: thư mục cài đặt binary
Kiểm tra tài khoản hệ thống:
id elasticsearch
2. Cài đặt bộ phân tích tiếng Trung (IK Analyzer)
Sử dụng plugin chính thức cho phiên bản 7.14.1:
sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch-plugin install \
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.14.1/elasticsearch-analysis-ik-7.14.1.zip
Chỉnh sửa file jvm.options để thiết lập bộ nhớ:
-Xms4g
-Xmx4g
Tạo file cấu hình từ điển mở rộng tại /usr/share/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<comment>Cấu hình mở rộng cho IK Analyzer</comment>
<entry key="ext_dict"></entry>
<entry key="ext_stopwords"></entry>
<entry key="remote_ext_dict">http://192.168.8.241:8000/yida.dic</entry>
</properties>
3. Tối ưu hệ điều hành
Cập nhật giới hạn tài nguyên trong /etc/security/limits.conf:
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
Cấu hình kernel trong /etc/sysctl.conf:
vm.max_map_count=655360
Áp dụng thay đổi:
sudo sysctl -p
4. Thiết lập chứng thực TLS và bảo mật X-Pack
Thực hiện trên một nút chủ (ví dụ: node-1), sau đó sao chép sang các nút còn lại:
- Tạo chứng chỉ CA:
sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch-certutil ca
→ tạo fileelastic-stack-ca.p12 - Tạo chứng chỉ cho cluster:
sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 - Lưu mật khẩu keystore:
sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
Sau bước này, ba file bắt buộc phải có trong /etc/elasticsearch/ là:
elastic-stack-ca.p12, elastic-certificates.p12, elasticsearch.keystore
Phân quyền đúng cho các file chứng chỉ:
sudo chown elasticsearch:elasticsearch /etc/elasticsearch/*.p12 /etc/elasticsearch/elasticsearch.keystore
sudo chmod 640 /etc/elasticsearch/*.p12 /etc/elasticsearch/elasticsearch.keystore
5. Cấu hình cluster và bảo mật
File /etc/elasticsearch/elasticsearch.yml trên mỗi nút cần chứa:
cluster.name: my-es-cluster
node.name: node-1
network.host: 192.168.8.228
http.port: 9277
transport.port: 9300
# Cấu hình discovery cho cụm 3 nút
discovery.seed_hosts: ["192.168.8.228:9300", "192.168.8.241:9300", "192.168.8.229:9300"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
# Bật bảo mật
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
# Kích hoạt HTTP SSL (tuỳ chọn)
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: elastic-certificates.p12
xpack.security.http.ssl.truststore.path: elastic-certificates.p12
Lưu ý: Nếu cài qua yum, file elasticsearch.keystore có thể bị tạo sai — nên xoá và tạo lại bằng lệnh elasticsearch-keystore như trên.
6. Khởi tạo tài khoản quản trị
Chỉ cần chạy một lần trên bất kỳ nút nào (tự động đồng bộ toàn cụm):
sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
7. Kiểm tra trạng thái cụm
Sau khi khởi động dịch vụ (systemctl start elasticsearch):
curl -u elastic:'mật_khẩu' http://192.168.8.228:9277/_cat/health?v
curl -u elastic:'mật_khẩu' http://192.168.8.228:9277/_cat/nodes?v
8. Ghi chú vận hành quan trọng
- Các cổng:
9277(HTTP API),9300(giao tiếp nội bộ) — đảm bảo mở đúng trong firewall và security group. - Trên môi trường cloud (như China Unicom Cloud), các máy trong cùng security group vẫn cần rule tường lửa rõ ràng cho phép kết nối chéo.
- Mỗi nút phải có cùng phiên bản plugin, cùng cấu hình chứng chỉ và cùng quyền truy cập vào thư mục dữ liệu (
/var/lib/elasticsearch) và cấu hình. - Nếu xảy ra split-brain, xóa thư mục
/var/lib/elasticsearch/*trên các nút lỗi trước khi khởi động lại. - Từ điển từ xa (remote_ext_dict) giúp đồng bộ từ vựng mà không cần cập nhật thủ công từng nút.