Triển Khai SolrCloud: Xây Dựng Solr Cluster với Solr 4.10.4

  1. Giới thiệu kiến trúc SolrCloud ===============

  2. Cluster ZooKeeper:

a) ZooKeeper cần đảm bảo tính sẵn sàng cao, do đó cần xây dựng cụm; b) ZooKeeper cần cơ chế bầu cử và bỏ phiếu, tối thiểu cần ba nút; c) Ba nút ZooKeeper, lưu ý thay đổi các cổng khác nhau

  1. Cluster Solr:

a) Cần bốn nút (máy chủ ứng dụng Solr); b) Bốn máy Tomcat triển khai 4 máy chủ ứng dụng solr; c. Toàn bộ Collection được chia thành hai phân mảnh: mỗi phân mảnh đều bao gồm hai bản sao.

  1. Cài đặt môi trường =======

2.1 Thông tin môi trường

  • HĐH: CentOS 7.0
  • JDK: HotSpot(TM) 1.8.0_162
  • Tomcat: 8.0.53
  • ZooKeeper: 3.4.10
  • Solr: 4.10.4

2.2 Triển khai và khởi động cụm ZooKeeper

Cài đặt và triển khai cụm ZooKeeper, tài liệu chi tiết tham khảo ZooKeeper 01 - ZooKeeper là gì + Triển khai cụm ZooKeeper.

2.3 Triển khai dịch vụ Solr đơn

Tham khảo Solr04 - Triển khai dịch vụ Solr đơn trên Jetty và Tomcat, ở đây triển khai dự án Solr thông qua môi trường ảo Tomcat.

(1) Tạo đường dẫn phát hành SolrCloud:

Tạo /data/solr-cloud làm đường dẫn phát hành dự án và cấp quyền đọc ghi:

mkdir -p /data/solr-cloud && cd /data
chmod 644 solr-cloud

(2) Sao chép apache-tomcat-8.0.53.tar.gz vào /data/solr-cloud/tomcat và giải nén:

mkdir -p /data/solr-cloud/tomcat && cd /data/solr-cloud/tomcat
tar -zxf apache-tomcat-8.0.53.tar.gz

(3) Giải nén solr.4.10.4.tgz:

Sao chép solr.4.10.4.tgz vào bất kỳ máy chủ nào ở /data/solr-cloud, sau đó giải nén:

tar -zxf solr-4.10.4.tgz

(4) Tìm file solr.war trong example/webapps của gói cài đặt Solr, giải nén:

cd /data/solr-cloud/solr-4.10.4/example/webapps
# Sử dụng lệnh jar để giải nén
jar -xvf solr.war solr
# Sau khi giải nén, xóa file solr.war để ngăn Tomcat tự động giải nén file này, dẫn đến cấu hình bị ghi đè
rm -rf solr.war

(5) Triển khai dự án Solr: Tạo thư mục chứa ứng dụng Solr và sao chép solr.war đã giải nén vào đây:

cd /data/solr-cloud 
mkdir -p tomcat/display/solr
# Sao chép tất cả các file vào thư mục solr
cp -r solr-4.10.4/example/webapps tomcat/display/solr

(6) Sử dụng thư mục ảo Tomcat để cài đặt: Ở đây không thêm dịch vụ Solr vào thư mục webapps của Tomcat, vì cần sửa file $TOMCAT_HOME/conf/server.xml của Tomcat, thêm đường dẫn dịch vụ Solr:

Lưu ý: Ở đây triển khai dịch vụ Solr tại đường dẫn /data/solr-cloud/tomcat/display/solr.

<Host name="localhost" appBase="webapps" 
      unpackWARs="true" autoDeploy="true">
    <!-- Cấu hình đường dẫn truy cập, kết quả là: http://ip:port/solr -->
    <Context path="/solr" privileged="true"
             docBase="/data/solr-cloud/tomcat/display/solr"> 
        <Environment name="solr/home" type="java.lang.String" override="true"
                     value="/data/solr-cloud/tomcat/solrhome"/> 
    </Context> 
    <!-- ... ... -->
</Host>

Giải thích tham số:

path: Chỉ định tên truy cập ứng dụng Web, tức là phần sau cổng trong http://ip:8080/solr;docBase: Chỉ định đường dẫn file ứng dụng Web, nếu là file war, phải thêm hậu tố; ③ <Environment> là thiết lập thư mục solr/home, dùng để lưu trữ file index của các Collection.

(7) Cấu hình các file khác:

a. Sao chép file log4j.properties từ gói giải nén Solr vào WEB-INF/classes của dịch vụ Solr:

cd /data/solr-cloud
mkdir -p tomcat/display/solr/WEB-INF/classes
cp solr-4.10.4/example/resources/log4j.properties tomcat/display/solr/WEB-INF/classes

b. Sao chép tất cả các file jar trong example/lib/ext của gói giải nén Solr vào WEB-INF/lib của dịch vụ Solr:

cd /data/solr-cloud
cp -r solr-4.10.4/example/lib/ext/* tomcat/display/solr/WEB-INF/lib

c. Sao chép solr.xml trong example/solr của gói giải nén Solr vào solrhome (phải tồn tại, nếu không dịch vụ Solr sẽ không khởi động được):

cd /data/solr-cloud && mkdir -p tomcat/solrhome
cp -r solr-4.10.4/example/solr/solr.xml tomcat/solrhome

d. Sao chép collection1 trong example/solr của gói giải nén Solr vào solrhome trong thư mục tomcat, dùng làm file cấu hình SolrCore:

cd /data/solr-cloud
cp -r solr-4.10.4/examplesolr/collection1 tomcat/solrhome

Sau khi khởi động Tomcat, truy cập http://ip:port/solr, nếu xuất hiện trang quản lý Solr Web, nghĩa là Solr đơn đã triển khai thành công.

2.4 Thêm thư mục index Solr

(1) Trong giao diện quản lý Solr, nhấp vào [Core Admin], sau đó nhấp vào [Add Core], hệ thống báo cáo instanceDir và dataDir phải tồn tại, nếu không sẽ ném ra lỗi sau:

new_core: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load conf for core new_core: Error loading solr config from /data/solr-cloud/tomcat/solrhome/new_core/conf/solrconfig.xml

(2) Đánh vị trí solrhome:

vim /data/solr-cloud/tomcat/display/solr/WEB-INF/web.xml
# Xóa bình luận ở dòng 40 và 46, như sau:

solr/home
/data/solr-cloud/tomcat/solrhome
java.lang.String


(3) Khởi động lại Tomcat, phát hiện SolrCore có tên collection1 đã được tải lên:

Lưu ý khác:

a) Nếu xóa file rm –rf /data/solr-cloud/tomcat/solrhome/collection1/core.properties, sau khi khởi động cluster sẽ không có collection;
b) Lần sau khi tạo SolrCore, có thể sao chép thư mục collection1, sửa file core.properties và thay đổi name.

  1. Triển khai dịch vụ Solr cluster (SolrCloud) =======================

3.1 Khởi động ZooKeeper

Triển khai SolrCloud cần phụ thuộc vào ZooKeeper, cần khởi động tất cả các máy chủ ZooKeeper trước.

3.2 ZooKeeper quản lý file cấu hình

Trong dịch vụ phân tán, thường sử dụng ZooKeeper để quản lý file cấu hình, ở đây Solr sử dụng các file như schema.xml, solrconfig.xml, các nút SolrCloud sử dụng file do ZooKeeper quản lý thống nhất.

(1) Giao file cấu hình của dịch vụ Solr đơn cho ZooKeeper quản lý:

Thực thi lệnh sau để upload file cấu hình trong conf của Solr đơn lên ZooKeeper (đây là một lệnh duy nhất):

cd /data/solr-cloud/solr-4.10.4/example/scripts/cloud-scripts

# Lưu ý: Dưới đây là một lệnh dài, không nên nhấn Enter sớm~
sh zkcli.sh -zkhost 10.0.20.50:2181,10.0.20.51:2181,10.0.20.52:2181 -cmd upconfig -confdir /data/solr-cloud/tomcat/solrhome/collection1/conf -confname myconf

Giải thích lệnh:

zkhost: Chỉ định ip và cổng của cụm ZooKeeper, nhiều cổng cách nhau bằng dấu phẩy;
cmd: Biểu thị sử dụng một lệnh nội bộ, ở đây sử dụng upconfig, tức là cập nhật thông tin cấu hình;
confdir: Vị trí của file cấu hình cần upload;
confname: Tên tùy chỉnh của file cấu hình do ZooKeeper quản lý sau khi upload.

(2) Sử dụng máy chủ ZooKeeper để truy vấn file cấu hình:

cd /data/zookeeper/zookeeper-3.4.10/bin/
sh zkCli.sh

# Thông tin như sau:
......
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[configs, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /configs
[myconf]
[zk: localhost:2181(CONNECTED) 2] ls /configs/myconf
[currency.xml, mapping-FoldToASCII.txt, protwords.txt, scripts.conf, synonyms.txt, stopwords.txt, _schema_analysis_synonyms_english.json, velocity, admin-extra.html, update-script.js, _schema_analysis_stopwords_english.json, solrconfig.xml, admin-extra.menu-top.html, elevate.xml, schema.xml, clustering, mapping-ISOLatin1Accent.txt, _rest_managed.json, xslt, spellings.txt, lang, admin-extra.menu-bottom.html]
[zk: localhost:2181(CONNECTED) 3] quit
Quitting...
2018-10-25 21:27:08,122 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x166a788acfd0001 closed
2018-10-25 21:27:08,126 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@519] - EventThread shut down for session: 0x166a788acfd0001

3.3 Sửa đổi cổng lắng nghe SolrCloud

Sửa đổi file solr.xml của mỗi dịch vụ Solr tại /usr/local/solr-cloud/solr.xml (cổng mặc định là cổng truy cập của container Jetty 8983). Nếu được chỉ định trong catalina.sh, cài đặt ở đây sẽ bị ghi đè.


${host:}
${jetty.port:8080}
${hostContext:solr}
${zkClientTimeout:30000}
${genericCoreNodeNames:true}


3.4 Liên kết Solr với ZooKeeper

Liên kết Tomcat với ZooKeeper, sửa đổi tomcat/bin/catalina.sh của mỗi dịch vụ Solr, chỉ định địa chỉ dịch vụ ZooKeeper:

vim /data/solr-cloud/tomcat/apache-tomcat-8.0.53/bin/catalina.sh
# Trước cygwin=false (khoảng dòng 109), chỉ định địa chỉ và cổng ZooKeeper thông qua tham số -DzkHost:
JAVA_OPTS="$JAVA_OPTS -DzkHost=zoo1:2181,zoo2:2181,zoo3:2181"

Có thể sử dụng chức năng tìm kiếm của vim để tìm vị trí định nghĩa JAVA_OPTS: Nhấn [Esc], trong chế độ lệnh nhập :/cygwin, sau đó Enter, nhấn chữ [n] để tìm tiếp.

3.5 Phân phối dịch vụ SolrCloud

cd /data
scp -r solr-cloud/ 10.0.20.51:/data
scp –r solr-cloud/ 10.0.21.52:/data

3.6 Khởi động tất cả dịch vụ Solr

Sau khi khởi động cụm ZooKeeper, lần lượt khởi động tất cả dịch vụ Solr --- tức là Tomcat.

3.7 Truy cập SolrCloud

Truy cập bất kỳ máy Solr nào, trên menu bên trái sẽ xuất hiện nút chức năng [Cloud], nhấp để xem, xuất hiện thông tin như hình dưới, nghĩa là SolrCloud đã triển khai thành công.

Thẻ: SolrCloud zookeeper Solr Tomcat distributed-search

Đăng vào ngày 16 tháng 6 lúc 19:13