Thứ năm, 16/07/2015 | 00:00 GMT+7

Cách cấu hình cụm Redis trên Ubuntu 14.04

Redis là một repository dữ liệu key-value open-souce , sử dụng mô hình lưu trữ trong bộ nhớ với chức năng ghi đĩa tùy chọn để duy trì sự bền bỉ. Nó có các tính năng giao dịch, pub / sub và chuyển đổi dự phòng tự động, cùng các chức năng khác. Ta khuyên bạn nên sử dụng Redis với Linux cho môi trường production , nhưng các nhà phát triển cũng đề cập đến OS X như một nền tảng mà họ phát triển và thử nghiệm. Redis có các khách hàng được viết bằng hầu hết các ngôn ngữ, với các ngôn ngữ được đề xuất có trên trang web của họ .

Đối với môi trường production , sao chép dữ liệu qua ít nhất hai nút được coi là phương pháp hay nhất. Dự phòng cho phép khôi phục trong trường hợp môi trường bị lỗi, điều này đặc biệt quan trọng khi cơ sở user ứng dụng của bạn phát triển.

Đến cuối hướng dẫn này, ta sẽ cài đặt hai Redis Server trên DigitalOcean, như sau:

  • một server cho server chính Redis
  • một server cho server slaver Redis

Ta cũng sẽ trình bày cách chuyển sang server slaver và cài đặt nó như một server tạm thời.

Hãy cài đặt nhiều hơn một server slaver .

Bài viết này tập trung vào việc cài đặt một cụm Redis chủ- slaver ; để tìm hiểu thêm về Redis nói chung và cách sử dụng cơ bản của nó làm database , hãy xem hướng dẫn sử dụng này .

Yêu cầu

Mặc dù điều này có thể hoạt động trên các bản phát hành trước đó và các bản phân phối Linux khác, ta khuyên bạn nên sử dụng Ubuntu 14.04.

Đối với mục đích thử nghiệm, ta sẽ sử dụng các version nhỏ vì không có dung lượng công việc thực sự cần xử lý, nhưng môi trường production có thể yêu cầu server lớn hơn.

  • Ubuntu 14.04 LTS
  • Hai server , với bất kỳ kích thước nào bạn cần; một chủ và một hoặc nhiều slaver
  • Truy cập vào máy của bạn qua SSH với user không phải root có quyền sudo như được giải thích trong Cài đặt server ban đầu với Ubuntu 14.04

Bước 1 - Cài đặt Redis

Bắt đầu với những server rằng sẽ tổ chức server của chương trình của ta , bước đầu tiên của ta là để cài đặt Redis. Trước tiên, ta cần thêm repository Redis của Chris Lea (như mọi khi, hãy hết sức thận trọng khi thêm repository của bên thứ ba; ta đang sử dụng repository này vì người duy trì nó là một nhân vật có uy tín):

  • sudo add-apt-repository ppa:chris-lea/redis-server

Nhấn ENTER để chấp nhận repository .

Chạy lệnh sau để cập nhật các gói của ta :

  • sudo apt-get update

Cài đặt server Redis:

  • sudo apt-get install redis-server

Kiểm tra xem Redis có đang hoạt động hay không:

  • redis-benchmark -q -n 1000 -c 10 -P 5

Lệnh trên nói rằng ta muốn redis-benchmark chạy ở chế độ yên tĩnh, với tổng số 1000 yêu cầu, 10 kết nối song song và 5 yêu cầu đường ống. Để biết thêm thông tin về cách chạy điểm chuẩn cho Redis, nhập redis-benchmark --help trong terminal của bạn sẽ in ra thông tin hữu ích kèm theo các ví dụ.

Để điểm chuẩn chạy. Sau khi hoàn tất, bạn sẽ thấy kết quả tương tự như sau:

Output
PING_INLINE: 166666.67 requests per second PING_BULK: 249999.98 requests per second SET: 249999.98 requests per second GET: 499999.97 requests per second INCR: 333333.34 requests per second LPUSH: 499999.97 requests per second LPOP: 499999.97 requests per second SADD: 499999.97 requests per second SPOP: 499999.97 requests per second LPUSH (needed to benchmark LRANGE): 499999.97 requests per second LRANGE_100 (first 100 elements): 111111.12 requests per second LRANGE_300 (first 300 elements): 27777.78 requests per second LRANGE_500 (first 450 elements): 8333.33 requests per second LRANGE_600 (first 600 elements): 6369.43 requests per second MSET (10 keys): 142857.14 requests per second

Bây giờ lặp lại phần này cho server slaver Redis. Nếu bạn đang cấu hình nhiều Server hơn, bạn có thể cài đặt nhiều server slaver nếu cần.

Đến đây, Redis đã được cài đặt và chạy trên hai nút của ta . Nếu kết quả của bất kỳ nút nào không giống với những gì được hiển thị ở trên, hãy lặp lại quá trình cài đặt một cách cẩn thận và kiểm tra xem tất cả các yêu cầu đã được đáp ứng chưa

Bước 2 - Cấu hình Redis Master

Bây giờ Redis đã cài đặt và chạy trên cụm hai server của ta , ta phải chỉnh sửa file cấu hình của chúng. Như ta sẽ thấy, có những khác biệt nhỏ giữa việc cấu hình server chính và server phụ.

Đầu tiên hãy bắt đầu với sư phụ của ta .

Mở /etc/redis/redis.conf bằng editor yêu thích của bạn:

  • sudo nano /etc/redis/redis.conf

Chỉnh sửa các dòng sau.

Đặt một giá trị hợp lý cho bộ đếm thời gian lưu giữ cho TCP:

/etc/redis/redis.conf
tcp-keepalive 60 

Làm cho server có thể truy cập được cho bất kỳ ai trên web bằng cách comment dòng này:

/etc/redis/redis.conf
#bind 127.0.0.1 

Với bản chất của Redis và tốc độ rất cao của nó, kẻ tấn công có thể cưỡng bức password mà không gặp nhiều vấn đề. Đó là lý do tại sao ta khuyên bạn nên bỏ comment requirepass và thêm một password phức tạp (tốt nhất là một passphrase (password bảo vệ) phức tạp):

/etc/redis/redis.conf
requirepass your_redis_master_password 

Tùy thuộc vào tình huống sử dụng của bạn, bạn có thể thay đổi dòng sau hoặc không. Đối với mục đích của hướng dẫn này, ta giả định không được xóa khóa. Bỏ comment này và đặt nó như sau:

/etc/redis/redis.conf
maxmemory-policy noeviction 

Cuối cùng, ta muốn áp dụng các thay đổi sau, cần thiết cho việc backup dữ liệu. Bỏ ghi chú và / hoặc đặt các dòng này như được hiển thị:

/etc/redis/redis.conf
appendonly yes appendfilename redis-staging-ao.aof 

Lưu các thay đổi .

Khởi động lại dịch vụ Redis để reload các thay đổi cấu hình của ta :

  • sudo service redis-server restart

Nếu bạn muốn đi xa hơn, bạn có thể thêm một số nội dung độc đáo vào database chính theo các phần Hoạt động của Redis trong hướng dẫn này , để sau này ta có thể xem cách nó được sao chép sang server slaver .

Bây giờ ta đã có server chính, hãy chuyển sang server của ta .

Bước 3 - Cấu hình Redis Slave

Ta cần thực hiện một số thay đổi để cho phép server slaver của ta kết nối với version chính của ta :

Mở /etc/redis/redis.conf bằng editor yêu thích của bạn:

  • sudo nano /etc/redis/redis.conf

Chỉnh sửa các dòng sau; một số cài đặt sẽ tương tự như cài đặt root .

Làm cho server có thể truy cập được cho bất kỳ ai trên web bằng cách comment dòng này:

/etc/redis/redis.conf
#bind 127.0.0.1 

Server slaver cũng cần password để ta có thể cung cấp cho nó các lệnh (chẳng hạn như INFO ). Bỏ comment này và đặt password server :

/etc/redis/redis.conf
requirepass your_redis_slave_password 

Bỏ comment này và cho biết địa chỉ IP nơi có thể truy cập server chính , tiếp theo là cổng được đặt trên máy đó. Theo mặc định, cổng là 6379:

/etc/redis/redis.conf
slaveof your_redis_master_ip 6379 

Bỏ comment masterauth và cung cấp password / passphrase (password bảo vệ) bạn đã cài đặt trước đó trên server chính :

/etc/redis/redis.conf
masterauth your_redis_master_password 

Bây giờ hãy lưu những thay đổi này và thoát khỏi file . Tiếp theo, khởi động lại dịch vụ giống như ta đã làm trên server chính:

  • sudo service redis-server restart

Thao tác này sẽ khởi động lại Redis và tải các file đã sửa đổi của ta .

Kết nối với Redis:

  • redis-cli -h 127.0.0.1 -p 6379

Cấp quyền bằng mật khẩu của server slaver :

  • AUTH your_redis_slave_password

Đến đây, ta đang chạy một cụm Redis master-slave chức năng, với cả hai máy được cấu hình đúng.

Bước 4 - Xác minh Bản sao Master-Slave

Việc kiểm tra cài đặt của ta sẽ cho phép ta hiểu rõ hơn về hành vi của Redis Server, khi ta muốn bắt đầu hành vi chuyển đổi dự phòng tập lệnh. Những gì ta muốn làm bây giờ là đảm bảo cấu hình của ta đang hoạt động chính xác và chủ nhân của ta đang nói chuyện với các cá thể Redis slaver .

Đầu tiên, ta kết nối với Redis thông qua terminal của ta , trên server chính :

Đầu tiên hãy kết nối với version local , chạy theo mặc định trên cổng 6379. Trong trường hợp bạn đã thay đổi cổng, hãy sửa đổi lệnh cho phù hợp.

  • redis-cli -h 127.0.0.1 -p 6379

Bây giờ xác thực với Redis bằng password bạn đã đặt khi cấu hình chính:

  • AUTH your_redis_master_password

Và bạn sẽ nhận được một câu trả lời là OK . Bây giờ, bạn chỉ phải chạy:

  • INFO

Bạn sẽ thấy mọi thứ bạn cần biết về server Redis chính. Ta đặc biệt quan tâm đến phần #Replication , phần này sẽ giống như kết quả sau:

Output
. . . # Replication role:master connected_slaves:1 slave0:ip=111.111.111.222,port=6379,state=online,offset=407,lag=1 master_repl_offset:407 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:406 . . .

Lưu ý dòng connected_slaves:1 , cho biết version khác của ta đang nói chuyện với Server chính. Bạn cũng có thể thấy rằng ta nhận được địa chỉ IP slaver , cùng với cổng, trạng thái và thông tin khác.

Bây giờ ta hãy xem phần #Replication trên máy slaver của ta . Quá trình này giống như đối với server chính của ta . Đăng nhập vào version Redis, ra lệnh INFO và xem kết quả:

Output
. . . # Replication role:slave master_host:111.111.111.111 master_port:6379 master_link_status:up master_last_io_seconds_ago:3 master_sync_in_progress:0 slave_repl_offset:1401 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 . . .

Ta có thể thấy rằng cỗ máy này có role slaver , đang giao tiếp với server Redis chính và không có slaver của riêng nó.

Bước 5 - Chuyển sang slaver

Xây dựng kiến trúc này nghĩa là ta cũng muốn các lỗi được xử lý theo cách mà ta đảm bảo tính toàn vẹn của dữ liệu và ít thời gian chết nhất có thể cho ứng dụng của ta . Bất kỳ slaver nào cũng có thể được thăng cấp làm chủ. Đầu tiên, hãy thử chuyển đổi thủ công.

Trên máy slaver , ta nên kết nối với version Redis:

  • redis-cli -h 127.0.0.1 -p 6379

Bây giờ xác thực với Redis bằng password bạn đã đặt khi cấu hình slaver

  • AUTH your_redis_slave_password

Tắt hành vi slaver :

  • SLAVEOF NO ONE

Câu trả lời phải là OK . Bây giờ gõ:

  • INFO

Tìm phần # Replication để tìm kết quả sau:

Output
. . . # Replication role:master connected_slaves:0 master_repl_offset:1737 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 . . .
  • SLAVEOF your_redis_master_ip 6379

Nếu bạn chạy lại lệnh INFO , bạn sẽ thấy ta đã trở lại cài đặt ban đầu.

Kết luận

Ta đã cài đặt đúng cách một môi trường bao gồm hai server , một server hoạt động như Redis master và một server sao chép dữ liệu khác như một server . Bằng cách này, nếu server chính offline hoặc mất dữ liệu của ta , ta biết cách chuyển sang một trong các slaver của ta để khôi phục cho đến khi vấn đề được xử lý.

Các bước tiếp theo có thể bao gồm viết kịch bản quy trình chuyển đổi dự phòng tự động hoặc đảm bảo liên lạc an toàn giữa tất cả các Server bằng cách sử dụng các giải pháp VPN như OpenVPN hoặc Tinc . Ngoài ra, các thủ tục và tập lệnh kiểm tra cũng rất quan trọng để xác thực cấu hình của bạn.

Ngoài ra, bạn nên đề phòng khi triển khai loại cài đặt này trong môi trường production . Trang Tài liệu Redis nên được nghiên cứu và bạn phải hiểu rõ về mô hình bảo mật nào phù hợp cho ứng dụng của bạn. Ta thường sử dụng Redis làm nơi lưu trữ phiên và thông tin mà nó chứa có thể có giá trị đối với kẻ tấn công. Thực tế phổ biến là chỉ có thể truy cập những máy này qua mạng riêng và đặt chúng đằng sau nhiều lớp bảo mật.

Đây là một điểm khởi đầu đơn giản mà trên đó kho dữ liệu có thể được xây dựng; không nghĩa là một hướng dẫn đầy đủ về cách cài đặt Redis để sử dụng kiến trúc chủ-tớ. Nếu có bất cứ điều gì mà bạn cho rằng hướng dẫn này nên đề cập, vui lòng để lại comment bên dưới. Để biết thêm thông tin và trợ giúp về chủ đề này, DigitalOcean Q&A là một nơi tốt để tham khảo .


Tags:

Các tin liên quan

Cách cấu hình bộ đệm Redis để tăng tốc WordPress trên Ubuntu 14.04
2014-12-15
Cách cấu hình giám sát Sensu, RabbitMQ và Redis trên Ubuntu 14.04
2014-09-29