Cấu hình cụm Elasticsearch 7.14.1 với bảo mật X-Pack và phân tích tiếng Trung

Để 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:

  1. Tạo chứng chỉ CA:
    sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch-certutil ca
    → tạo file elastic-stack-ca.p12
  2. Tạo chứng chỉ cho cluster:
    sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
  3. 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.

Thẻ: Elasticsearch x-pack ik-analyzer tls linux-security

Đăng vào ngày 30 tháng 5 lúc 21:51