Trước đây mình có viết bài “Tăng tốc cho WordPress với LiteSpeed Memcached (LSMCD)” và có giới thiệu qua LSMCD hay LiteSpeed Memcached là một phần của hệ sinh thái LiteSpeed mà mình đang sử dụng cho trang WordPress.
Gần đây mình đã quyết định chuyển sang sử dụng Docker thay vì chạy trực tiếp trên máy chủ do sự tiện lợi và linh động của docker trong việc thay đổi máy chủ cho trang blog của mình. Tuy nhiên, trong khi triển trai trang WordPress bằng OpenLiteSpeed Docker, mình đã không thể tìm ra phiên bản Docker của LSMCD để có thể chạy cùng OpenLiteSpeed Docker. Do đó, mình đã quyết định tự tạo ra phiên bản LSMCD Docker để sử dụng cho trang blog của mình, đồng thời hy vọng có thể giúp những người có cùng nhu cầu sử dụng LSMCD Docker như mình.
Sau hơn nữa ngày tìm hiểu về cách tạo file ảnh docker cho LSMCD, mình đã thành công tạo ra phiên bản LSMCD Docker dựa trên mã nguồn mở của LSMCD trên GitHub.
Hiện LSMCD Docker đã có thể được truy cập tại các kho lưu trữ sau:
- GitHub: https://github.com/workleast/lsmcd-docker
- Docker Hub: https://hub.docker.com/r/workleast/lsmcd
Sau đây mình xin trình bày cách cài đặt và cấu hình LSMCD Docker phiên bản “cây nhà lá vườn” của mình.
1. Điều kiện tiên quyết
Để có thể cài đặt LiteSpeed Memcached – LSMCD Docker, phải thoả các điều kiện sau:
2. Cài đặt LSMCD Docker
Sau khi đăng nhập vào máy chủ Ubuntu, thực hiện các lệnh sau:
$ git clone https://github.com/workleast/lsmcd-docker.git
$ cd lsmcd-docker
$ docker compose up -d
[+] Running 1/2
⠧ Network lsmcd-docker_default Created 0.8s
✔ Container lsmcd-docker-lsmcd-1 Started 0.7s
3. Kiểm tra kết nối đến LSMCD Docker
Để xác thực LSMCD container đã hoạt đông, thực hiện các lệnh sau:
$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
$ stats
STAT pid 27
STAT version 1.0.0
...
STAT auth_errors 0
END
$ quit
4. Thay đổi cấu hình của LSMCD
Container LSMCD sẽ sử dụng file cấu hình mặc định. Để có thể thay đổi cấu hình file này, bạn có thể chỉnh sửa file “docker-compose.yml” như sau:
$ nano docker-compose.yml
volumes:
- ./conf:/usr/local/lsmcd/conf
Sau đó khởi động lại container LSMCD bằng lệnh:
$ docker compose down
$ docker compose up -d
5. Thay đổi nơi lưu trữ dữ liệu đệm
Mặc định thì LSMCD container sử dụng bộ nhở chia sẻ để lưu dữ liệu đệm (cache data) tại ‘/dev/shm’. Có nghĩa là LSMCD sẽ lưu trữ dữ liệu đệm vào bộ nhớ vật lý (RAM) của máy chủ. Đối với các máy chủ có dung lượng bộ nhớ lớn (2GB+) thì có thể tiếp tục sử dụng bộ nhớ chia sẻ để có được hiệu suất tốt nhất. Tuy nhiên vì được lưu trữ ở RAM nên dữ liệu này sẽ mất đi sau khi tắt container. Dung lượng bộ nhớ chia sẻ mình thiết lập mặc định là 512MBk, nếu bạn muốn thay đổi dung lượng này có thể thay đổi trong file “docker-compose.yml” như sau:
$ nano docker-compose.yml
shm_size: "<SIZE>"
// Ví dụ:
shm_size: "1Gb"
Ngược lại, nếu dung lượng bộ nhớ máy chủ ít hoặc nếu bạn không muốn mất đi dữ liệu đệm sau khi tắt container thì có thể cấu hình cho LSMCD lưu dữ liệu đệm xuống ổ đĩa lưu trữ, nhưng chỉ nên sử dụng trên SSD hoặc tốt nhất là NVMe. Để thay đổi thiết lập này, bạn có thể cấu hình lại file “conf/node.conf” và “docker-compose.yml” như sau:
$ nano conf/node.conf
#Cached.ShmDir=/dev/shm/lsmcd
Cached.ShmDir=/usr/local/lsmcd/data
$ nano docker-compose.yml
volumes:
- ./conf:/usr/local/lsmcd/conf
- ./data:/usr/local/lsmcd/data
Sau đó khởi động lại container LSMCD bằng lệnh:
$ docker compose down
$ docker compose up -d
6. Sử dụng Unix Socket thay cho TCP/IP
Trong bài trươc mình có đề cập đến việc sử dụng Unix Socket thay cho giao thức TCP/IP để có được tốc độ nhanh hơn cho các trang web chỉ sử dụng 1 máy chủ duy nhất cho tất cả các dịch vụ web. Để cấu hình cho LSMCD sử dụng giao thức Unix Socket, bạn có thể cấu hình file “conf/node.conf” và file “docker-compose.yml” như sau:
$ nano conf/node.conf
#CACHED.ADDR=0.0.0.0:11211
CACHED.ADDR=UDS:///tmp/lsmcd.sock
$ nano docker-compose.yml
volumes:
- ./conf:/usr/local/lsmcd/conf
- ./tmp:/tmp
#ports:
#- "11211:11211"
Sau đó khởi động lại container LSMCD bằng lệnh:
$ docker compose down
$ docker compose up -d
Sau đó bạn có thể kiểm tra lại kết nối đến Unix Socket bằng lệnh:
$ nc -U tmp/lsmcd.sock -C
$ stats
$ quit
Chúc bạn thành công!