1. Chuẩn bị môi trường và cài đặt JDK
Trước khi cấu hình đa thực thể (multi-instance) cho Tomcat, hệ thống cần được cài đặt Java Development Kit (JDK). Đầu tiên, hãy tắt tường lửa và chuyển các gói cài đặt cần thiết vào thư mục /opt.
# Tắt Firewall và SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
# Giải nén và cài đặt JDK (Ví dụ sử dụng bản rpm)
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm
# Thiết lập biến môi trường Java
cat <<EOF > /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/lib/dt.jar
export PATH=\$JAVA_HOME/bin:\$PATH
EOF
source /etc/profile.d/java.sh
java -version
2. Cài đặt các bản ghi Tomcat
Chúng ta sẽ tạo ra hai thư mục riêng biệt để chạy hai thực thể Tomcat độc lập.
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mkdir -p /usr/local/tomcat
# Tạo thực thể thứ nhất (Tomcat 1)
mv apache-tomcat-9.0.16 /usr/local/tomcat/node1
# Sao chép thực thể thứ hai (Tomcat 2) từ thực thể thứ nhất
cp -a /usr/local/tomcat/node1 /usr/local/tomcat/node2
3. Cấu hình biến môi trường hệ thống cho Tomcat
Để hệ thống nhận diện được các thực thể khác nhau, ta cần định nghĩa các đường dẫn Home và Base riêng biệt cho mỗi Node.
cat <<EOF > /etc/profile.d/tomcat.sh
# Cấu hình cho Tomcat Node 1
export CATALINA_HOME1=/usr/local/tomcat/node1
export CATALINA_BASE1=/usr/local/tomcat/node1
export TOMCAT_HOME1=/usr/local/tomcat/node1
# Cấu hình cho Tomcat Node 2
export CATALINA_HOME2=/usr/local/tomcat/node2
export CATALINA_BASE2=/usr/local/tomcat/node2
export TOMCAT_HOME2=/usr/local/tomcat/node2
EOF
source /etc/profile.d/tomcat.sh
4. Thay đổi cổng kết nối để tránh xung đột
Mỗi thực thể Tomcat phải sử dụng các cổng kết nối duy nhất. Chúng ta sẽ giữ nguyên cổng mặc định cho Node 1 và thay đổi cổng cho Node 2 trong tệp server.xml.
# Chỉnh sửa tệp cấu hình của Node 2
vi /usr/local/tomcat/node2/conf/server.xml
# Thay đổi các cổng sau:
# 1. Cổng Shutdown (mặc định 8005 -> đổi thành 8006)
<Server port="8006" shutdown="SHUTDOWN">
# 2. Cổng HTTP Connector (mặc định 8080 -> đổi thành 8081)
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
# 3. Cổng AJP Connector (mặc định 8009 -> đổi thành 8010)
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
5. Chỉ định biến môi trường vào mã nguồn khởi động
Để mỗi thực thể sử dụng đúng thư mục của nó khi thực thi lệnh startup.sh và shutdown.sh, ta cần thêm các biến môi trường tương ứng vào đầu mỗi tệp script.
Đối với Node 1:
# Thêm vào đầu file /usr/local/tomcat/node1/bin/startup.sh và shutdown.sh
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1
Đối với Node 2:
# Thêm vào đầu file /usr/local/tomcat/node2/bin/startup.sh và shutdown.sh
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2
6. Khởi động và kiểm tra dịch vụ
Sau khi hoàn tất cấu hình, tiến hành khởi động cả hai dịch vụ và kiểm tra trạng thái cổng kết nối.
# Khởi động Node 1
/usr/local/tomcat/node1/bin/startup.sh
# Khởi động Node 2
/usr/local/tomcat/node2/bin/startup.sh
# Kiểm tra các cổng đang lắng nghe
netstat -natp | grep java
Sử dụng trình duyệt web để truy cập vào hai địa chỉ sau để xác nhận cả hai thực thể đều hoạt động bình thường:
- Thực thể 1:
http://[IP_Server]:8080 - Thực thể 2:
http://[IP_Server]:8081