Hướng dẫn cài đặt Akabot Center cho mô hình High Availability (HA) trên RedHat v9.x

Người tạo: Akabot Support, Đã sửa đổi vào Wed, 19 Tháng 11 lúc 2:14 CH bởi Akabot Support

1. Trước khi bắt đầu

Tài liệu này hướng dẫn bạn cài đặt Akabot Center theo mô hình High Availability (“Fail Over”) như hình minh họa bên dưới:


Thành phần mô hình:

#Thành phầnMô tả
1Nginx Load BalancerNginx đóng vai trò “điều phối lưu lượng”, định tuyến yêu cầu từ người dùng đến các máy chủ Akabot Center, giúp tối ưu tốc độ, dung lượng và ngăn việc một máy bị quá tải.
2Akabot CenterQuản lý việc tạo, giám sát và triển khai Akabot Agent trong môi trường của bạn.
3ActiveMQ ServiceỨng dụng nhắn tin, hỗ trợ các chức năng liên quan đến hàng đợi (queue) trong Akabot Center.
4ELK StackGiải pháp phân tích log toàn diện giúp tìm kiếm, phân tích và hiển thị log do Akabot Center tạo ra.
5Redis CacheBộ nhớ dữ liệu trong RAM (in-memory), dùng làm cơ sở dữ liệu, bộ nhớ đệm, message broker và engine truyền dữ liệu, giúp giảm tải truy cập cơ sở dữ liệu chính.


Với các mô hình khác hoặc nâng cấp Akabot Center, vui lòng liên hệ điều phối viên dự án (nếu có) hoặc gửi email đến support@akabot.com để được hướng dẫn.


Đội ngũ akaBot luôn ở đây để hỗ trợ bạn cài đặt thành công.


Lưu ý: Hãy đọc kỹ các phần dưới đây và chuẩn bị đầy đủ tài nguyên trước khi bắt đầu để đảm bảo cài đặt thành công.


1.1. Yêu cầu phần cứng
Để cài đặt và sử dụng akaBot Center trong mô hình High Availability, bạn cần chuẩn bị các yêu cầu về phần cứng dưới đây:

#Máy chủSố lượngCPU (Core)RAMỔ SSDGhi chú
1Akabot Center2≥ 8≥ 32GB≥ 500GBMáy chủ để cài Akabot Center
2ActiveMQ2≥ 8≥ 16GB≥ 250GBMáy chủ để cài ActiveMQ
3ELK1≥ 16≥ 16GB≥ 100GBMáy chủ để cài dịch vụ indexing
4Redis Cache1≥ 4≥ 4GB≥ 100GBMáy chủ để cài Redis
5Nginx1≥ 4≥ 4GB≥ 100GBMáy chủ để cài Load Balancer


1.2. Yêu cầu cơ sở dữ liệu

Mô hình này cần 2 cơ sở dữ liệu:

  • 01 database cho Akabot Center

  • 01 database cho ActiveMQ

Hãy đảm bảo rằng các cơ sở dữ liệu này đã sẵn sàng và chuẩn bị thông tin kết nối như bảng sau:

STTThông tinMô tảVí dụ
1DB-SERVERĐịa chỉ IP của cơ sở dữ liệu3.112.124.176
2DB-USERTên người dùng cơ sở dữ liệuAKA_CENTER_01
3DB-PASSWORDMật khẩu của người dùngakaBot123
4DB-PORTCổng kết nối1521
5DB-SID/SERVICE NAMESID hoặc Service Name của cơ sở dữ liệuOrcl


1.3. Yêu cầu lưu trữ tệp

Hãy đảm bảo rằng bạn có một thư mục riêng biệt trên máy chủ lưu trữ tệp (File Storage) để lưu trữ các gói Nuget, và máy chủ Akabot Center có quyền đọc/ghi (Read/Write) vào thư mục này.


Ví dụ:
NFS-NUGET


1.4. Yêu cầu quyền hạn

Tài khoản người dùng thực hiện cài đặt trên từng máy cần có quyền thực thi (Run) với quyền Sudo.


1.5. Chuẩn bị gói cài đặt

Hãy đảm bảo rằng máy chủ Akabot Center có đủ các gói cài đặt sau với đúng phiên bản.

STTNền tảngTên góiPhiên bảnMô tảTải xuống
1JDK/JREopenlogic-openjdk-11.0.16+8-linux-x64-el.rpm11.0.16OpenJDKDownload
2Apache Tomcatapache-tomcat-8.5.57.tar.gz8.5.57Web server Apache TomcatDownload
3ActiveMQapache-activemq-5.15.1-bin.tar.gz5.15.1Dịch vụ hàng đợi ActiveMQ cho Akabot CenterDownload
4Akabot Centerakabot-center-x.x.x.x.war3.0.1.2 hoặc mới hơnGói cài đặt Akabot Center Liên hệ project coordinator hoặc support@akabot.com để nhận
5Oracle JDBC driverojdbc8.jarojdbc8Trình điều khiển JDBC cho OracleDownload
6Nginx Load Balancernginx-1.22.1-1.el8.ngx.x86_64.rpm1.22.1Gói NGINX Load BalancerDownload
7Redis Cacheredis-5.0.3-5.module+el8.4.0+12927+b9845322.x86_64.rpm5.0.3Gói Redis CacheDownload
8Kibanakibana-7.17.12-x86_64.rpm7.17.12Gói Kibana (tùy chọn)Download
9ElasticSearchelasticsearch-7.17.12-x86_64.rpm7.17.12Gói ElasticSearchDownload
10Logstashlogstash-7.17.12-x86_64.rpm7.17.12Nền tảng phân tích logDownload
11Filebeatfilebeat-7.17.12-x86_64.rpm7.17.12Gói FilebeatDownloa

Ghi chú:

  • Nên đặt các gói cài trong thư mục riêng trên từng máy chủ. Trong hướng dẫn này, thư mục được dùng là /apps.

1.6. Các lưu ý khác

Để tránh lỗi trong quá trình cài đặt:

  • Không đặt tên thư mục có dấu cách. Khi chạy lệnh, nên sao chép trực tiếp lệnh từ hướng dẫn này để tránh lỗi cú pháp.

  • Do khác biệt về mã hóa ký tự giữa các môi trường, hãy sao chép lệnh vào Notepad trước khi dán lại vào Akabot center.

  • Khi cập nhật các tệp cấu hình, tuân thủ nghiêm ngặt cú pháp của tệp.


2. Cài đặt

2.1. Cài đặt Redis

Trên máy chủ Redis, hãy làm theo 3 bước đơn giản dưới đây để cài đặt và cấu hình dịch vụ Redis.

2.1.1. Bước 1 – Cài đặt gói Redis

  1. Cập nhật kho lưu trữ của hệ thống

    sudo dnf update -y

  2. Cài đặt gói Redis

    sudo rpm -ivh <package name>


    Ví dụ:
    sudo rpm -ivh redis-5.0.3-5.module+el8.4.0+12927+b9845322.x86_64.rpm

  3. Kiểm tra phiên bản Redis đã được cài đặt

    rpm -q redis
    rpm -qi redis



  4. Khởi động và bật Redis tự động khởi động cùng hệ thống

    sudo systemctl start redis
    sudo systemctl enable redis

  5. Kiểm tra trạng thái dịch vụ Redis

    sudo systemctl status redis


2.1.2. Bước 2 – Cấu hình truy cập từ xa cho Redis

  1. Tắt dịch vụ Redis (nếu đang chạy)

    sudo systemctl stop redis

  2. Mở tệp redis.conf

    sudo vi /etc/redis.conf


  3. Tìm và thay đổi giá trị tham số “bind” từ 127.0.0.1 thành 0.0.0.0



  4. Lưu thay đổi và thoát

    (ấn ESC → gõ :wq)

  5. Khởi động lại dịch vụ Redis

    sudo systemctl start redis


2.1.3. Bước 3 – Cấu hình bảo mật (tùy chọn)

  1. Tắt dịch vụ Redis (nếu đang chạy)

    sudo systemctl stop redis

  2. Mở tệp redis.conf

    sudo vi /etc/redis.conf

  3. Tìm và bỏ dấu “#” để kích hoạt tham số requirepass, sau đó đặt mật khẩu.

  4. Lưu thay đổi và thoát

    (ESC → :wq)

  5. Khởi động lại Redis

    sudo systemctl start redis


2.2. Cài đặt ActiveMQ

Mô hình High Availability yêu cầu 2 máy chủ ActiveMQ để dự phòng cho nhau trong trường hợp xảy ra sự cố (failover).
Hãy lặp lại các bước dưới đây trên 2 máy chủ riêng biệt.


2.2.1. Bước 1 – Giải nén tệp cài đặt

  1. Di chuyển đến thư mục cài đặt

    cd apps/

  2. Tạo thư mục chứa ActiveMQ

    sudo mkdir /opt/activemq

  3. Giải nén gói cài đặt Apache ActiveMQ và chuyển đến thư mục /opt/activemq

    sudo tar -xvzf apache-activemq-*-bin.tar.gz

    sudo mv apache-activemq-5.15.1 /opt/activemq


2.2.2. Bước 2 – Tạo nhóm và người dùng ActiveMQ

Tạo một tài khoản riêng để chạy ActiveMQ, không sử dụng tài khoản root nhằm tránh lỗi quyền truy cập.

  1. Tạo nhóm ActiveMQ

    sudo groupadd activemq

  2. Tạo tài khoản ActiveMQ thuộc nhóm activemq và thư mục home tại /opt/activemq

    sudo useradd -s /bin/false -g activemq -d /opt/activemq activemq

  3. Cấp quyền cho thư mục ActiveMQ

    sudo chown -R activemq:activemq /opt/activemq


2.2.3. Bước 3 – Cấu hình dịch vụ ActiveMQ

  1. Tạo tệp cấu hình dịch vụ systemd

    sudo vi /etc/systemd/system/activemq.service

  2. Thêm nội dung sau vào tệp:

[Unit]

Description=Apache ActiveMQ

After=network.target


[Service]

Type=forking


User=activemq

Group=activemq


ExecStart=/bin/bash /opt/activemq/bin/activemq start

ExecStop=/bin/bash /opt/activemq/bin/activemq stop


[Install]

WantedBy=multi-user.target


  1. Lưu thay đổi và thoát 
    (ESC → :wq)

  2. Tải lại daemon

    sudo systemctl daemon-reload

  3. Khởi động dịch vụ ActiveMQ

    sudo systemctl start activemq

  4. Kích hoạt ActiveMQ tự động chạy khi khởi động

    sudo systemctl enable activemq

  5. Kiểm tra trạng thái dịch vụ

    sudo systemctl status activemq


2.2.4. Bước 4 – Cấu hình bộ nhớ Java Heap cho ActiveMQ

  1. Dừng dịch vụ ActiveMQ

    sudo systemctl stop activemq

  2. Cập nhật giá trị của bộ nhớ Heap Java

    - Mở tệp môi trường

    sudo vi /opt/activemq/bin/env

    - Cập nhật dòng sau:

    ACTIVEMQ_OPTS_MEMORY="-Xms1G -Xmx2G"

Ghi chú:

  • Tham số -Xms: dung lượng bộ nhớ Java tối thiểu (nên ≤ ¼ RAM máy).
     Ví dụ: Nếu máy chủ Akabot Center có RAM = 4GB, đặt -Xms1G.

  • Tham số -Xmx: dung lượng bộ nhớ Java tối đa (nên ≤ ½ RAM máy).
     Ví dụ: Nếu RAM = 4GB, đặt -Xmx2G.

  • Lưu thay đổi và thoát (ESC → :wq)

3. Khởi động lại dịch vụ ActiveMQ

sudo systemctl start activemq

4. Kiểm tra lại trạng thái

sudo systemctl status activemq


2.2.5. Bước 5 – Cấu hình dịch vụ ActiveMQ

  1. Dừng dịch vụ ActiveMQ

    sudo systemctl stop activemq

  2. Sao chép tệp ojdbc8.jar (trình điều khiển JDBC Oracle) vào thư mục thư viện tùy chọn

    cd ~/apps/

    cp ojdbc8.jar /opt/activemq/lib/optional/

  3. Cấu hình tệp activemq.xml

    - Mở tệp cấu hình activemq.xml

    sudo vi /opt/activemq/conf/activemq.xml
    - Thay đổi tên broker (tùy chọn).


    - Thêm đoạn cấu hình nguồn dữ liệu Oracle (DataSource) vào cuối tệp:

<bean id="oracle-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">

              <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>

             <property name="url" value="<DB-URL>"/>

             <property name="username" value="<DB-USER>"/>

            <property name="password" value="<DB-PASSWORD>"/>

            <property name="poolPreparedStatements" value="true"/>

        </bean>

Ghi chú:

  • Nếu cơ sở dữ liệu của bạn dùng SID:
     DB_URL = jdbc:oracle:thin:@<DB-SERVER>:<DB-PORT>:<DB-SID>

  • Nếu dùng Service Name:
    DB_URL = jdbc:oracle:thin:@//<HOST>:<PORT>/<SERVICE NAME>

4. Thay đổi phần cấu hình persistenceAdapter:

<jdbcPersistenceAdapter dataSource="#oracle-ds" createTablesOnStartup="true" /> 


5. Lưu và thoát 
(ESC → :wq!)


6. Khởi động lại dịch vụ ActiveMQ
sudo systemctl start activemq


7. Kiểm tra trạng thái
sudo systemctl status activemq

 2.3. Cài đặt ELK Stack

ELK Stack là giải pháp phân tích log toàn diện, giúp tìm kiếm sâu, phân tích và hiển thị log được tạo bởi các máy chủ Akabot Center.

Các thành phần chính bao gồm:

  • Elasticsearch: Công cụ tìm kiếm phân tán RESTful được xây dựng trên Apache Lucene. Dựa trên Java, nó có khả năng thu thập, tìm kiếm và lập chỉ mục dữ liệu ở nhiều định dạng khác nhau.

  • Logstash: Công cụ thu thập dữ liệu từ nhiều nguồn, chuẩn hóa dữ liệu và phân phối đến nơi lưu trữ.

  • Kibana: Công cụ trực quan hóa dữ liệu mã nguồn mở, chuyên xử lý lượng dữ liệu lớn theo thời gian thực. (Cài đặt tùy chọn)

  • Filebeat: Trình gửi dữ liệu nhẹ, được cài trên máy chủ để thu thập log và gửi đến Elasticsearch hoặc Logstash.

Nguồn tham khảo: https://www.techtarget.com/searchitoperations/definition/Elastic-Stack

Để cài đặt ELK Stack, hãy làm theo các bước dưới đây.

2.3.1. Bước 1 – Cài đặt Elasticsearch

  1. Cài đặt gói Elasticsearch

    cd apps/

    sudo rpm --install elasticsearch-7.17.12-x86_64.rpm

  2. Khởi động dịch vụ Elasticsearch

    sudo rpm --install elasticsearch-7.17.12-x86_64.rpm

  3. Kích hoạt Elasticsearch tự động khởi động cùng hệ thống

    sudo systemctl enable elasticsearch

  4. Kiểm tra trạng thái dịch vụ
    sudo systemctl status elasticsearch

  5. Dừng dịch vụ Elasticsearch

    sudo systemctl stop elasticsearch

  6. Mở tệp cấu hình

    sudo vi /etc/elasticsearch/elasticsearch.yml

  7. Cập nhật các dòng sau:

    network.host: 0.0.0.0
    cluster.initial_master_nodes: ["node-1"]

  8. Lưu thay đổi và thoát

    (nhấn ESC → :wq)


2.3.2. Bước 2 – Cài đặt Logstash

  1. Cài đặt gói Logstash

    cd apps/

    sudo rpm --install logstash-7.17.12-x86_64.rpm

  2. Kích hoạt Logstash tự động khởi động cùng hệ thống

    sudo systemctl enable logstash

  3. Khởi động dịch vụ Logstash

    sudo systemctl start logstash

  4. Kiểm tra Logstash có đang chạy không

    sudo systemctl status logstash

  5. Dừng dịch vụ Logstash

    sudo systemctl stop logstash

  6. Mở tệp cấu hình Logstash

    sudo vi /etc/logstash/conf.d/logstash.conf

  7. Cập nhật nội dung tệp như sau:

input {

  beats {

   port => 5044

   type => "log"

  }

}

filter {

  json {

              source => "message"

              target => "doc"

  }

}

output {

  elasticsearch {

    hosts => "localhost:9200"

    manage_template => false

    index => "%{[@metadata][beat]}-%{+yyyy.ww}"

    document_type => "%{[@metadata][type]}"

  }

}

  1. Lưu thay đổi và thoát

     (ESC → :wq)

  2. Khởi động lại dịch vụ Logstash

    sudo systemctl start logstash 


2.3.3. Bước 3 – Cài đặt Filebeat

  1. Cài đặt gói Filebeat

    cd apps/

    sudo rpm --install filebeat-7.17.12-x86_64.rpm

  2. Kích hoạt Filebeat tự động khởi động cùng hệ thống

    sudo systemctl enable filebeat

  3. Khởi động dịch vụ Filebeat

    sudo systemctl start filebeat

  4. Kiểm tra trạng thái dịch vụ Filebeat

    sudo systemctl status filebeat

  5. Dừng dịch vụ Filebeat

    sudo systemctl stop filebeat

  6. Mở tệp cấu hình Filebeat

    sudo vi /etc/filebeat/filebeat.yml

  7. Cập nhật nội dung tệp như sau:


filebeat.inputs:

       path:

                      - /opt/tomcat/logs/agents/*/*.log

  1. Bỏ dấu “#” để bật cấu hình đầu ra Logstash:

#output.logstash:

              # The Logstash hosts

              #hosts: ["localhost:5044"]

  1. Lưu thay đổi và thoát

     
    (ESC → :wq)

  2. Khởi động lại dịch vụ Filebeat

    sudo systemctl start filebeat


2.3.4. Bước 4 – Cài đặt Kibana (tùy chọn)

  1. Cài đặt gói Kibana

    cd apps/

    sudo rpm --install kibana-7.17.12-x86_64.rpm

  2. Kích hoạt dịch vụ Kibana

    sudo systemctl enable kibana

  3. Khởi động dịch vụ Kibana


    sudo systemctl start kibana

  4. Kiểm tra trạng thái Kibana

    sudo systemctl status kibana

  5. Dừng dịch vụ Kibana (nếu cần)

    sudo systemctl start kibana

  6. Mở tệp cấu hình Kibana

    sudo vi /etc/kibana/kibana.yml

  7. Cập nhật các dòng sau:

    server.port: 5601

    server.host: "0.0.0.0"

  8. Lưu thay đổi và thoát

     (ESC → :wq)

     9.Khởi động lại dịch vụ Kibana

       sudo systemctl start kibana


2.4. Cài đặt Akabot Center

Mô hình High Availability cần 2 máy chủ Akabot Center để dự phòng cho nhau trong tình huống failover.
Vui lòng lặp lại toàn bộ các bước bên dưới để cài đặt và cấu hình dịch vụ Akabot Center trên 2 máy chủ riêng biệt.

2.4.1. Bước 1 - Cài đặt JDK

Ghi chú:

  • Nếu máy Akabot của bạn đã cài JDK: nếu phiên bản nhỏ hơn 11, hãy nâng cấp lên JDK 11; nếu >= 11 thì bỏ qua bước này.

  • Nếu chưa cài, thực hiện các bước sau:

  1. Di chuyển tới thư mục cài đặt:
    cd apps/

  2. Chạy lệnh cài đặt:
    sudo yum install openlogic-openjdk-11.0.16+8-linux-x64-el.rpm

  3. Kiểm tra cài đặt thành công bằng lệnh:
    java -version

2.4.2. Bước 2 - Cài đặt Apache Tomcat Web Server

2.4.2.1. Step 1: Giải nén tệp cài đặt

  1. Di chuyển tới thư mục cài đặt:
    cd apps/

  2. Tạo thư mục /opt/tomcat:
    sudo mkdir /opt/tomcat

  3. Giải nén gói Apache Tomcat:
    sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1

2.4.2.2. Step 2: Tạo group và user Tomcat

Bạn nên tạo tài khoản riêng để chạy Tomcat (không dùng root) để tránh lỗi quyền.

  1. Tạo group tomcat:
    sudo groupadd tomcat 

  2. Tạo user tomcat thuộc group tomcat, home link: /opt/tomcat:
    sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat 

  3. Cấu hình account Tomcat để có thể lấy Machine code cho việc kích hoạt license Akabot Center:
    Mở vi editor
            sudo visudo /etc/sudoers
    Thêm dòng sau vào cuối file:
        tomcat ALL= NOPASSWD: ALL
    Lưu và thoát (Press ESC, gõ :wq)

  4. Thêm user hiện tại (dùng SSH tới máy) vào group tomcat:
    sudo usermod -g tomcat [current_user_logged] 

2.4.2.3. Step 3: Cấu hình quyền truy cập thư mục

  1. Thay đổi chủ sở hữu thư mục Tomcat:

    cd /opt

    sudo chown tomcat:tomcat tomcat

    ls -l

  2. Cấu hình quyền truy cập:

    cd /opt/tomcat

    sudo chgrp -R tomcat /opt/tomcat

    sudo chmod -R g+r conf

    sudo chmod g+x conf

    sudo chown -R tomcat webapps/ work/ temp/ logs/

    ls -l

2.4.2.4. Step 4: Cấu hình service Tomcat

  1. Lấy thư mục cài Java:
    sudo update-alternatives --list | grep java

Kết quả ví dụ:
%JAVA_HOME% = /usr/lib/jvm/openlogic-openjdk-11-hotspot (WITHOUT /bin/java)

  1. Tạo file tomcat.service:
    sudo vi /etc/systemd/system/tomcat.service 

  2. Sao chép nội dung sau vào file:

[Unit]

Description=Apache Tomcat Web Application Container

After=network.target

[Service]

Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/openlogic-openjdk-11-hotspot

Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid

Environment=CATALINA_HOME=/opt/tomcat

Environment=CATALINA_BASE=/opt/tomcat

Environment='CATALINA_OPTS=-Xms1G -Xmx2G -server -XX:+UseParallelGC'

Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

WorkingDirectory=/opt/tomcat

ExecStart=/opt/tomcat/bin/startup.sh

ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat

Group=tomcat

RestartSec=10

Restart=always

[Install]

WantedBy=multi-user.target

  1. Cập nhật biến JAVA_HOME nếu cần:
    Environment=JAVA_HOME=%JAVA_HOME%
    Hoặc đặt cụ thể: Environment=JAVA_HOME=/usr/lib/jvm/openlogic-openjdk-11-hotspot

  2. Thay đổi kích thước Java Heap (nếu cần):
    Environment='CATALINA_OPTS=-Xms1G -Xmx2G -server -XX:+UseParallelGC'
    Ghi chú về tham số:

  • -Xms: bộ nhớ heap khởi tạo, nên ≤ 1/4 RAM.
    Ví dụ: RAM 4G → -Xms1G.

  • -Xmx: bộ nhớ heap tối đa, nên ≤ 1/2 RAM.
    Ví dụ: RAM 4G → -Xmx2G.

  1. Lưu và thoát

2.4.2.5 Step 5: Cấu hình log Tomcat

  1. Mở file /opt/tomcat/conf/logging.properties

  2. Thêm thuộc tính maxDays để chỉ định số ngày tối đa giữ file log đã rotate trước khi xóa cho các log catalina, localhost, host-manager, manager. Nếu không chỉ định, giá trị mặc định là -1 (không bao giờ xóa). Ví dụ giữ 10 ngày lịch sử:

Ví dụ:

1catalina.org.apache.juli.AsyncFileHandler.maxDays = 10

2localhost.org.apache.juli.AsyncFileHandler.maxDays = 10

3manager.org.apache.juli.AsyncFileHandler.maxDays = 10

4host-manager.apache.juli.AsyncFileHandler.maxDays = 10

  1. Lưu và thoát.

  2. Mở file /opt/tomcat/conf/server.xml

  3. Bỏ comment dòng cấu hình log để bật log.

  4. .Thêm thuộc tính maxDays để chỉ định số ngày tối đa mà nhật ký truy cập đã luân chuyển sẽ được lưu giữ trước khi bị xóa đối với nhật ký catalina, localhost, host-manager, manager. Nếu không chỉ định, giá trị mặc định -1 sẽ được sử dụng, nghĩa là không bao giờ xóa các tệp cũ. Ví dụ: giữ lại lịch sử trong 10 ngày.
    (ví dụ maxDays="10").

  5. Lưu và thoát.

  6. Tải lại daemon:
    sudo systemctl daemon-reload 

  7. Khởi động Tomcat:
    Lưu ý: Vui lòng đảm bảo rằng chỉ có thư mục ROOT trong thư mục /opt/tomcat/webapps trước khi khởi động dịch vụ Tomcat.
    sudo systemctl start tomcat 

  8. Bật tự động khởi động:
    sudo systemctl enable tomcat 

  9. Kiểm tra trạng thái Tomcat:
    sudo systemctl status tomcat 



curl localhost:8080

  1. Đảm bảo owner/group của thư mục logs:

    sudo chown -R tomcat /opt/tomcat/logs

    sudo chgrp -R tomcat /opt/tomcat/logs

2.4.3. Step 3 - Cài gói Akabot Center

2.4.3.1. Giải nén gói cài đặt

  1. Dừng Tomcat (nếu đang chạy):
    sudo systemctl stop tomcat 

  2. Xóa tất cả thư mục bên trong /opt/tomcat/webapps:
    sudo rm -rf /opt/tomcat/webapps/* 

  3. Sao chép file akabot-center-x.x.x.x.war vào /opt/tomcat/webapps/ và đổi tên thành ROOT.war.
    Lưu ý: x.x.x.x là phiên bản Akabot Center.

    cd ~/apps

    sudo cp akaBot-center-3.0.1.2.war /opt/tomcat/webapps/ROOT.war

  4. Khởi động Tomcat và chờ Tomcat giải nén ROOT.war ra thành thư mục ROOT:

    sudo systemctl start tomcat

    cd /opt/tomcat/webapps

    ls –l

  5. Dừng Tomcat và xóa file ROOT.war:

    sudo systemctl stop tomcat

    sudo rm /opt/tomcat/webapps/ROOT.war

2.4.3.2. Cấu hình Akabot Center

Để Akabot Center tương tác với database, cache, queue, ELK..., cần chỉnh các file cấu hình như sau:

A. Cấu hình file quartz.properties

  1. Mở file quartz.properties:
    sudo vi /opt/tomcat/webapps/ROOT/WEB-INF/classes/quartz.properties 

  2. Tùy theo loại database bạn dùng (Oracle, MSSQL, MySQL), thực hiện:

  • Bật cài đặt kiểu cơ sở dữ liệu của bạn bằng cách bỏ chú thích dòng biến driverDelegateClass của kiểu cơ sở dữ liệu của bạn:


    Ví dụ: Bạn sử dụng cơ sở dữ liệu Oracle, sau đó bỏ chú thích dòng Oracle:

  • Vô hiệu hóa cài đặt của các loại cơ sở dữ liệu khác bằng cách chú thích các dòng của biến driverDelegateClass của các loại cơ sở dữ liệu khác:

  1. Lưu và thoát
     (ESC → :wq)

B. Cấu hình Logback

  1. Mở file logback-spring.xml:
    sudo vi /opt/tomcat/webapps/ROOT/WEB-INF/classes/logback-spring.xml 

  2. Thay đổi đường dẫn log Akabot Center:
    Thay
    ${application.home:-.}/logs/center/akaCenter.%d{yyyy-MM-dd}.%i.log
    Thành
    /opt/tomcat/logs/center/akaCenter.%d{yyyy-MM-dd}.%i.log 

  3. Thay đổi đường dẫn log Agents:
    Thay
    ${application.home:-.}/logs/agents/${agentName}/BotAgent.%d{yyyy-MM-dd}.%i.log 
    thành
    /opt/tomcat/logs/agents/${agentName}/BotAgent.%d{yyyy-MM-dd}.%i.log 

  4. Thay đổi mức log nếu cần (ví dụ: ERROR)

  5. Thay đổi các cấu hình khác nếu cần:

  • maxFileSize: giới hạn kích thước mỗi file (ví dụ 100MB).

  • maxHistory: số file lưu trữ tối đa (ví dụ 20).

  • totalSizeCap: dung lượng tối đa cho tất cả file lưu trữ (ví dụ 20GB).

  1. Lưu và thoát
    (ESC → :wq)

C. Cấu hình kết nối Database

  1. Mở file application-prod.yml:

    cd /opt/tomcat/webapps/ROOT/WEB-INF/classes/config/

    sudo vi application-prod.yml

  2. Tùy database (Oracle hoặc MSSQL hoặc MySQL), cập nhật:

Ví dụ nếu dùng Oracle:

a. Cập nhật URL database:

+ Bỏ chú thích dòng URL của cơ sở dữ liệu và cập nhật URL tương ứng.


+ Bỏ chú thích dòng URL của các cơ sở dữ liệu khác.

Lưu ý:


Định dạng URL Oralce:


+ Nếu bạn sử dụng SID của dịch vụ, thì định dạng URL phải là:
   url: jdbc:oracle:thin:@<DB-SERVER>:<DB-PORT>:<DB-SID>

+ Nếu bạn sử dụng tên dịch vụ, thì định dạng URL JDBC phải là:

     url: jdbc:oracle:thin:@//<DB-SERVER>:<PORT>/<SERVICE NAME>

Định dạng MSSQL URL
   url: jdbc:sqlserver://<DB-SERVER>:<DB-PORT>;databaseName=<DB- NAME>;encrypt=true;trustServerCertificate=true;
 Định dạng MySQL URL
   url: jdbc:mysql://< DB-SERVER >:<DB-PORT>/<DB-NAME> 

b. Cập nhật username và password

c. Cập nhật driverClassName

+ Bỏ chú thích dòng biến driverClassName của loại cơ sở dữ liệu của bạn.


+ Bỏ chú thích dòng biến driverClassName của loại cơ sở dữ liệu khác.

d. Cập nhật database-platform và database variable (uncomment cho loại database bạn dùng; comment các loại khác)

+ Bỏ chú thích dòng biến driverClassName của loại cơ sở dữ liệu của bạn.


+ Bỏ chú thích dòng biến driverClassName của loại cơ sở dữ liệu khác.

e. Lưu và thoát (ESC → :wq)

  1. Cấu hình tương tự cho file application-dev.yml:

    a. Mở tệp application-dev.yml


    sudo vi application-dev.yml


    b. Lặp lại từ bước 2 đến bước 3 để cấu hình tệp application-dev.yml

D. Cấu hình kết nối ActiveMQ

  1. Mở file application.yml:

    cd /opt/tomcat/webapps/ROOT/WEB-INF/classes/config/

    sudo vi application.yml

  2. Cập nhật giá trị brokerURL:
    brokerURL: failover:(tcp://<IP-ACTIVEMQ-01>:61616,tcp://<IP-ACTIVEMQ-02>:61616)?randomize=false&jms.messagePrioritySupported=true&nested.wireFormat.maxInactivityDurationInitalDelay=30000 

Trong đó:

  • <IP-ACTIVEMQ-01>: IP của ActiveMQ server 01

  • <IP-ACTIVEMQ-02>: IP của ActiveMQ server 02

  1. Lưu và thoát (ESC → :wq)

E. Cấu hình kết nối Redis Cache

  1. Mở file application-prod.yml:

    cd /opt/tomcat/webapps/ROOT/WEB-INF/classes/config/

    sudo vi application-prod.yml

  2. Cập nhật:

  • Update mode value về 1

  • Update server variable:
    Nếu Redis yêu cầu mật khẩu, cấu hình:

     then server variable’s value is:

                           server: redis://:<REDIS-PASSWD>@<REDIS-IP>:6379

              otherwise, server variable’s value is:

    server: redis://<REDIS-IP>:6379

  1. Lưu và thoát
     (ESC → :wq)

  2. Lặp lại cho file application-dev.yml

    a. Mở tệp application-dev.yml


    sudo vi application-dev.yml


    b. Lặp lại từ bước 2 đến bước 3 để cấu hình tệp application-dev.yml

F. Cấu hình ElasticSearch (ELK)

  1. Mở file application.yml:

    cd /opt/tomcat/webapps/ROOT/WEB-INF/classes/config/

    sudo vi application.yml

  2. Thêm đoạn sau vào cuối file:

elasticsearch:

       enabled: true

       clustername: elasticsearch

       index: filebeat-*

       host: <IP_ES>

       port: 9200

       user:

       password:

       index-max-result-window: 20000000

Trong đó: <IP_ES> là địa chỉ IP của server ElasticSearch.


  1. Lưu và thoát
    (ESC → :wq)

G. Cấu hình đường dẫn lưu Nuget packages

  1. Mở file application-prod.yml:
    cd /opt/tomcat/webapps/ROOT/WEB-INF/classes/config/
    sudo vi application-prod.yml

  2. Comment đoạn cấu hình mặc định của Tomcat (để tắt)

  3. Uncomment đoạn cấu hình ElasticSearch (để bật)

  4. Cập nhật dòng:
    hibernate.search.backend.host: <IP_ES>:9200 

Trong đó: <IP_ES> là IP của ElasticSearch server.

  1. Lưu và thoát
    (ESC → :wq)

  2. Lặp lại cho file application-dev.yml

    a. Mở tệp application-dev.yml


    sudo vi application-dev.yml


    b. Lặp lại từ bước 2 đến bước 5 để cấu hình tệp application-dev.yml

2.4.3.3. Step 3 – Khởi động Tomcat và kiểm tra Akabot Center

  1. Khởi động Tomcat:
    sudo systemctl start tomcat 

  2. Kiểm tra Akabot Center chạy thành công:
    curl localhost:8080 

Trường hợp thành công: ứng dụng trả về nội dung (giao diện / endpoint sẵn sàng).
Nếu không thành công: làm theo phần 3 Troubleshoot để tự khắc phục.

2.5. Cài NGINX Load Balancer

2.5.1. Step 1 - Cài đặt Nginx

  1. Di chuyển tới thư mục cài đặt:

    cd apps/

    sudo rpm -ivh <package name>

    Ví dụ:sudo rpm -ivh nginx-1.22.1-1.el8.ngx.x86_64.rpm

  2. Cài Nginx:

    sudo systemctl enable nginx

    sudo systemctl start nginx

3. Kiểm tra phiên bản Nginx

nginx -v

sudo systemctl status nginx


2.5.2. Bước 2 - Cấu hình dịch vụ Nginx

2.5.2.1. Cấu hình Nginx Load Balancing

  1. Dừng dịch vụ Nginx (nếu đang chạy)
     sudo systemctl stop nginx 

  2. Mở tệp cấu hình
    sudo vi /etc/nginx/sites-available/default 

  3. Sao chép đoạn mã dưới đây vào tệp:

upstream akaBotCenter {

  server <IP-SRV-CENTER-01>:8080;

  server <IP-SRV-CENTER-02>:8080;

}

# Máy chủ này chấp nhận tất cả lưu lượng đến cổng 80 và chuyển tiếp đến upstream.

Lưu ý rằng tên upstream và proxy_pass cần trùng nhau.


server {

  listen 80;

  server_name  <YOUR-DOMAIN>;

  client_max_body_size 200M; 

  location / {

        proxy_pass http://akaBotCenter;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # WebSocket support (nginx 1.4)

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";

  }

}

  1. Cập nhật các biến trong tệp:
    <IP-SRV-CENTER-01>: địa chỉ IP của máy chủ akaBot Center 01
    <IP-SRV-CENTER-02>: địa chỉ IP của máy chủ akaBot Center 02
    <YOUR-DOMAIN>: tên miền akaBot Center

  2. Thiết lập chế độ cân bằng tải (Load Balancing Mode)

Để phân phối yêu cầu của người dùng đến máy chủ akaBot Center phù hợp, bạn cần thiết lập chế độ cân bằng tải của Nginx theo một trong các chế độ dưới đây:

  • Chế độ Round robin: các yêu cầu sẽ được phân phối lần lượt cho từng máy chủ.
    Bạn không cần thay đổi cấu hình, chỉ cần chuyển sang bước 6 để lưu và thoát.

  • Chế độ Weighted round robin: dựa vào khả năng xử lý và độ ưu tiên của từng máy chủ, bạn có thể gán trọng số (weight). Các yêu cầu sẽ được phân phối theo mức ưu tiên.
    Thêm thiết lập trọng số sau địa chỉ máy chủ trong phần cấu hình upstream như sau:

upstream akaBotCenter {

server <IP-SRV-CENTER-01>:8080;

server <IP-SRV-CENTER-02>:8080 weight:2;

}

Trong ví dụ này, lượng truy cập đến máy chủ akaBot Center 02 sẽ gấp đôi so với máy chủ 01.

  • Chế độ Least Connections: yêu cầu sẽ được phân phối cho máy chủ có ít kết nối hoạt động nhất. Để sử dụng, thêm dòng lệnh sau vào cấu hình upstream:

upstream akaBotCenter {

least_conn;

server <IP-SRV-CENTER-01>:8080;

server <IP-SRV-CENTER-02>:8080;

}

  • Chế độ IP Hash: sử dụng địa chỉ IP nguồn của yêu cầu làm khóa băm (hashing key) để đảm bảo yêu cầu từ cùng một client sẽ luôn được gửi đến cùng một máy chủ backend (nếu còn khả dụng).
    Để sử dụng, thêm dòng lệnh sau vào cấu hình upstream:

upstream akaBotCenter {

ip_hash;

server <IP-SRV-CENTER-01>:8080;

server <IP-SRV-CENTER-02>:8080;

}

  1. Lưu thay đổi và thoát
    Nhấn ESC và gõ: :wq!

2.5.2.2. Cấu hình SSL cho Nginx

Nếu bạn sử dụng dịch vụ SSL từ nhà cung cấp, vui lòng làm theo hướng dẫn của họ để cài đặt và cấu hình.

Nếu không, hãy làm theo các bước sau để triển khai chứng chỉ SSL tự ký (Self-Signed SSL).

  1. Tạo chứng chỉ SSL tự ký

    sudo mkdir /etc/ssl/private

    sudo chmod 700 /etc/ssl/private

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

  2. Tạo Diffie-Hellman
    sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 

  3. Tạo tệp cấu hình
    sudo vi /etc/nginx/conf.d/default.conf 

  4. Sao chép đoạn mã dưới đây vào tệp cấu hình:


server {

    listen 443 http2 ssl;

    listen [::]:443 http2 ssl;

    server_name <YOUR-DOMAIN>;

    client_max_body_size 200M;

    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;

    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

    ssl_dhparam /etc/ssl/certs/dhparam.pem;

########################################################################

    # from https://cipherlist.eu/                                            #    ########################################################################

    ssl_protocols TLSv1.3;# Requires nginx >= 1.13.0 else use TLSv1.2

    ssl_prefer_server_ciphers on;

    ssl_ciphers EECDH+AESGCM:EDH+AESGCM;

    ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0

    ssl_session_timeout  10m;

    ssl_session_cache shared:SSL:10m;

    ssl_session_tickets off; # Requires nginx >= 1.5.9

    ssl_stapling on; # Requires nginx >= 1.3.7

    ssl_stapling_verify on; # Requires nginx => 1.3.7

    resolver 8.8.8.8 8.8.4.4 valid=300s;

    resolver_timeout 5s;

    # Disable preloading HSTS for now.  You can use the commented out header line that includes

    # the "preload" directive if you understand the implications.

    #add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";

    add_header X-Frame-Options DENY;

    add_header X-Content-Type-Options nosniff;

    add_header X-XSS-Protection "1; mode=block";

    ##################################

    # END https://cipherlist.eu/ BLOCK #

    ##################################

  location / {

        proxy_pass http://akaBotCenter;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # WebSocket support (nginx 1.4)

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";

  }

}

  1. Cập nhật biến server_name trong tệp với tên miền akaBot Center của bạn:
    server_name <YOUR-DOMAIN>; 

  2. Cấu hình chuyển hướng từ HTTP sang HTTPS (tùy chọn):

server {

    listen 80;

    listen [::]:80;

    server_name <YOUR-DOMAIN>;

    return 301 https://$host$request_uri;

}

  1. Lưu thay đổi và thoát
    Nhấn ESC và gõ: :wq!

  2. Kiểm tra và khởi động lại Nginx để áp dụng thay đổi:

    sudo nginx -t

    sudo systemctl restart nginx

2.6. Cấu hình Catalina.out

Theo mặc định, Tomcat ghi log vào tệp catalina.out, có thể khiến tệp này phình to và làm giảm hiệu suất.
Để dừng việc này, hãy thay đổi cấu hình như sau:

  1. Mở tệp:
    sudo vi /opt/tomcat/bin/catalina.sh 

  2. Nhấn ESC rồi gõ: “:229” để nhảy đến dòng 229

  3. Ghi chú (comment) dòng sau để dừng ghi log vào catalina.out:
    #CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out 

  4. Thêm dòng bên dưới:
    CATALINA_OUT=/dev/null 

  5. Lưu và thoát tệp
    Nhấn ESC rồi gõ: “:wq”

HOÀN TẤT!!!
Bạn đã cài đặt và cấu hình thành công akaBot Center ở mô hình High Availability.
Chúc bạn có trải nghiệm tuyệt vời cùng akaBot Center trong hành trình tự động hóa!


3. Khắc phục sự cố (Troubleshoot Issues)

Trong quá trình cài đặt, có thể gặp nhiều sự cố do môi trường hệ thống khác nhau, quyền truy cập tài khoản, hoặc các chính sách của tổ chức.
Phần này giúp bạn tự khắc phục một số lỗi phổ biến (được cập nhật liên tục) và cung cấp thông tin liên hệ đội ngũ akaBot.

3.1. Tự khắc phục sự cố

Nếu gặp vấn đề trong quá trình cài đặt, hãy thực hiện các bước sau:

3.1.1. Bước 1 - Phát hiện sự cố

Sử dụng các tệp log để xác định nguyên nhân:

  • Sự cố liên quan đến việc khởi động dịch vụ Tomcat:
    /opt/tomcat/logs/catalina.out

  • Sự cố liên quan đến akaBot Center:
    /opt/tomcat/logs/center/akaCenter.yyyy-mm-dd.0.log

Các bước thực hiện:

  1. Xóa log cũ bằng cách vào thư mục log và xóa toàn bộ tệp.

  2. Khởi động lại dịch vụ để sinh log mới.

  3. Mở log để tìm nguyên nhân lỗi.

3.1.2. Bước 2 – Khắc phục sự cố

Vấn đề 1: Could not commit with auto-commit

Nguyên nhân: Lỗi hiển thị như hình bên dưới.

Giải pháp:

  1. Ở bước 2.2.4 (Bước 4: Cấu hình dịch vụ Tomcat), thêm tùy chọn sau vào biến JAVA-OPTS trong tệp cấu hình dịch vụ:
    -Doracle.jdbc.autoCommitSpecCompliant=false

  2. Tiếp tục các bước còn lại trong hướng dẫn.

3.2. Liên hệ đội ngũ akaBot để được hỗ trợ chuyên sâu

Nếu việc tự khắc phục không thành công, đội ngũ Akabot luôn sẵn sàng hỗ trợ bạn hoàn tất cài đặt thành công

.
Bạn có thể liên hệ qua:



Bài viết này có hữu ích không?

Thật tuyệt!

Cám ơn phản hồi của bạn

Rất tiếc là chúng tôi không giúp được nhiều!

Cám ơn phản hồi của bạn

Hãy cho chúng tôi biết làm thế nào chúng tôi có thể cải thiện bài viết này!

Chọn ít nhất một trong những lý do
Yêu cầu xác minh CAPTCHA.

Đã gửi phản hồi

Chúng tôi đánh giá cao nỗ lực của bạn và sẽ cố gắng sửa bài viết