Hướng dẫn cài đặt và cấu hình Redis trên CentOS 8


1. Giới thiệu

Redis là một cơ sở dữ liệu dạng key-value lưu trữ trong bộ nhớ. Bạn có thể sử dụng Redis như một thay thế cho Memcached để lưu trữ các cặp key-value đơn giản, như một cơ sở dữ liệu NoSQL, hoặc thậm chí là một message broker với kiến trúc Pub-Sub.

Hướng dẫn này sẽ hướng dẫn các bước cài đặt, cấu hình, tinh chỉnh và bảo mật Redis trên CentOS 8 chi tiết.

2. Các bước chuẩn bị

Để thực hiện hướng dẫn này, bạn cần chuẩn bị sẵn:

  • Một máy chủ CentOS 8 với dung lượng bộ nhớ tự do đủ lớn cho ứng dụng Redis. Khoảng 1 triệu cặp Key-Value nhỏ sử dụng 85 MB.
  • Người dùng quyền sudo.
  • Hệ thống CentOS đã được cập nhật.

3. Cài đặt Redis

Có 2 cách chính để cài đặt Redis trên CentOS 8:

Cách 1: Sử dụng gói từ kho lưu trữ chính thức của CentOS

$ sudo dnf install redis

Nhược điểm là phiên bản Redis trong kho này thường lỗi thời.

Cách 2: Sử dụng gói Redis mới nhất từ repo Remi

Repo Remi’s RPM là một repo đáng tin cậy và được cộng đồng sử dụng lâu dài cho CentOS. Gói Redis của nó thường mới hơn so với gói Redis của CentOS.

Các bước cài đặt:

  • Bước 1: Kích hoạt repo Remi
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
  • Bước 2: Liệt kê các phiên bản Redis có sẵn trong repo
$ dnf module list redis

Kết quả sẽ hiển thị các phiên bản Redis chính, ví dụ:

redis     5 [d]        common [d]     Redis persistent key-value database
redis     remi-5.0     common [d]     Redis persistent key-value database
redis     remi-6.0     common [d]     Redis persistent key-value database
  • Bước 3: Cài đặt phiên bản mới nhất, ví dụ 6.0

Copy code

$ sudo dnf module install redis:remi-6.0 -y

Như vậy là đã cài đặt xong Redis mới nhất từ repo Remi.

Tiếp theo, cho phép dịch vụ Redis khởi động cùng hệ thống:

$ sudo systemctl enable redis.service

Khởi động dịch vụ Redis:

$ sudo systemctl start redis.service

4. Cấu hình Redis

File cấu hình mặc định của Redis nằm tại /etc/redis.conf. Sử dụng editor (ví dụ nano) để mở và chỉnh sửa file này:

$ sudo nano /etc/redis.conf

Các thiết lập cấu hình quan trọng cần lưu ý bao gồm:

4.1 Cấu hình bộ nhớ

Để thiết lập dung lượng bộ nhớ tối đa mà Redis được sử dụng, tìm tới dòng maxmemory và thiết lập giá trị phù hợp. Ví dụ:

maxmemory 128mb

Khi đạt ngưỡng maxmemory, Redis sẽ ngừng lưu dữ liệu mới. Để khắc phục việc này, bạn cần cấu hình chính sách xóa dữ liệu tự động.

4.2 Cấu hình chính sách lưu trữ

Có 2 cài đặt cơ bản liên quan tới chính sách lưu trữ của Redis:

  • maxmemory-policy: Chính sách xóa dữ liệu khi đạt ngưỡng maxmemory. Giá trị phổ biến là allkeys-lru hoặc volatile-lru.
  • save: Chính sách lưu dữ liệu xuống đĩa. Mặc định Redis sẽ lưu theo chu kỳ thời gian hoặc số lượng write.

Ví dụ cấu hình:

maxmemory-policy allkeys-lru

save 900 1
save 300 10 
save 60 10000

Nếu bạn không muốn Redis lưu dữ liệu xuống đĩa, hãy comment những dòng save.

4.3 Các thiết lập khác

Các thiết lập khác có thể cân nhắc bao gồm:

  • bind: địa chỉ IP mà Redis sẽ lắng nghe và trả lời request. Mặc định là tất cả các interface.
  • protected-mode: cho phép truy cập Redis từ các host khác ngoài localhost.
  • port: cổng mặc định là 6379.
  • tcp-backlog: tăng giá trị mặc định 511 lên cao hơn.

Sau khi thiết lập xong các tùy chọn cấu hình, nhớ lưu lại file và khởi động lại Redis để các thay đổi có hiệu lực.

$ sudo systemctl restart redis.service

5. Tinh chỉnh hiệu năng hệ thống cho Redis

Để tối ưu hóa hiệu năng cho Redis, một số thiết lập cần điều chỉnh bao gồm:

  • Tăng giới hạn kết nối TCP:
echo 'net.core.somaxconn = 512' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
  • Enable overcommit memory:
echo 'vm.overcommit_memory = 1' | sudo tee -a /etc/sysctl.conf  
sudo sysctl -p
  • Disable transparent huge pages:

Tạo script disable-transparent-hugepage.sh:

#!/bin/bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
exit 0

Phân quyền và chỉnh sửa systemd service để chạy script này khi khởi động.

Copy code

sudo chown root:root /usr/bin/disable-transparent-hugepage.sh
sudo chmod 770 /usr/bin/disable-transparent-hugepage.sh 

sudo nano /etc/systemd/system/disable-transparent-hugepage.service
# Thêm nội dung service

sudo systemctl enable disable-transparent-hugepage.service

6. Kiểm tra hoạt động của Redis

Sau khi cài đặt và cấu hình xong, cần kiểm tra lại xem Redis có hoạt động đúng hay không:

  • Khởi động lại máy chủ để áp dụng các thay đổi
  • Kiểm tra file log Redis /var/log/redis/redis.log, đảm bảo không có lỗi hay cảnh báo nào.
  • Sử dụng redis-cli để kết nối và thử nghiệm Redis:
$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ping

PONG

Nếu Redis hoạt động bình thường, các lệnh SET, GET, INCR… sẽ thực thi thành công.

7. Cấu hình truy cập Redis qua mạng riêng (tùy chọn)

Trong trường hợp triển khai Redis cho ứng dụng Production với nhiều máy chủ, bạn nên cấu hình Redis sử dụng mạng riêng để đảm bảo an toàn.

Các bước cơ bản bao gồm:

  • Thiết lập mạng riêng cho các máy chủ cần truy cập Redis.
  • Cập nhật firewalld cho phép kết nối từ mạng riêng tới Redis:
sudo firewall-cmd --permanent --zone=trusted --change-interface=ens7
  • Chỉnh sửa cấu hình Redis để bind cả IP public và IP trong mạng riêng:
bind 127.0.0.1 192.168.1.100
  • Tạo systemd service để trì hoãn khởi động Redis cho tới khi mạng riêng sẵn sàng.
  • Khởi động lại Redis và kiểm tra kết nối từ máy chủ ứng dụng tới Redis.

Như vậy là đã hoàn thành chi tiết các bước hướng dẫn cài đặt và cấu hình Redis trên CentOS 8.