sách gpt4 ai đã đi

Ba máy chủ sử dụng docker để xây dựng redis với một máy chủ chính, hai máy chủ phụ và ba máy chủ canh gác, khái niệm-xây dựng-tích hợp springboot

In lại Tác giả: Tôi là một chú chim nhỏ Thời gian cập nhật: 2023-01-03 22:31:29 34 4
mua khóa gpt4 Nike

1. Giới thiệu

Redis rất phổ biến trong quá trình phát triển cấp doanh nghiệp của chúng ta, nhưng một redis duy nhất không thể đảm bảo việc sử dụng ổn định, vì vậy chúng ta cần xây dựng một cụm. Redis có hai giải pháp có tính khả dụng cao:

  • Tính khả dụng cao với Redis Sentinel
  • Mở rộng quy mô với Redis Cluster

Đầu tiên là thứ chúng ta sẽ xây dựng lần này, đó là một sentinel có tính khả dụng cao. Nếu redis chính bị treo, sentinel sẽ bỏ phiếu cho failover! Thứ hai là cụm phân mảnh. Một nhược điểm của Sentinel là chỉ có thể có một nút chính và hiệu quả ghi quá thấp. Các cụm phân mảnh giải quyết được vấn đề về lính canh và có thể mở rộng theo chiều ngang để cải thiện hiệu suất của redis! .

Số lượng lính canh tối thiểu là ba, tăng dần theo số lẻ. Cấu hình tối thiểu cho một cụm phân mảnh là ba máy chủ chính và ba máy chủ phụ.

Tôi đã từng viết một bài viết về việc xây dựng nó trên một máy duy nhất. Nếu bạn quan tâm, bạn có thể thử trước. Trong sản xuất thực tế, bạn sẽ không được phép xây dựng nó trên một máy duy nhất; nó cũng vô nghĩa. Nếu máy chủ bị sập, tất cả các cụm cũng sẽ bị sập! ! .

Docker compose xây dựng một cụm redis7.0.4 có tính khả dụng cao với một máy chủ, hai máy phụ, ba máy canh gác và tích hợp SpringBoot.

2. Chuẩn bị

Đầu tiên chúng ta cần chuẩn bị: ba máy chủ (nếu bạn không có điều kiện, hãy thiết lập ba máy ảo). Thật trùng hợp, trình soạn thảo có một máy ảo! .

Sắp xếp IP và tên của ba máy trong một bảng! .

IP tên nút redis Tên nút Sentinel
192.168.239.131 redis-chủ redis-sentinel-1
192.168.239.130 redis-nô lệ-1 redis-sentinel-2
192.168.239.128 redis-nô lệ-2 redis-sentinel-3

3. Khái niệm Sentinel

Redis Sentinel cung cấp tính khả dụng cao cho Redis khi không sử dụng Redis Cluster.

Danh sách đầy đủ các tính năng của Sentinel:

  • màn hình : Sentinel liên tục kiểm tra xem phiên bản chính và phiên bản sao của bạn có hoạt động như mong đợi hay không.
  • thông báo :Sentinel có thể thông báo cho quản trị viên hệ thống hoặc các chương trình máy tính khác thông qua API rằng có sự cố với một trong các phiên bản Redis được theo dõi.
  • Tự động chuyển đổi dự phòng :Nếu máy chủ chính không hoạt động như mong đợi, Sentinel có thể khởi tạo quy trình chuyển đổi dự phòng trong đó một trong các bản sao được thăng cấp thành máy chủ chính, các bản sao bổ sung khác được cấu hình lại để sử dụng máy chủ chính mới và các ứng dụng sử dụng máy chủ Redis sẽ được thông báo địa chỉ mới để sử dụng khi kết nối.
  • Cấu hình cập nhật tự động :Sentinel hoạt động như một nguồn đáng tin cậy để khám phá dịch vụ phía máy khách: máy khách kết nối với Sentinel để yêu cầu địa chỉ của máy chủ Redis hiện tại chịu trách nhiệm cho một dịch vụ nhất định. Nếu xảy ra sự cố chuyển đổi dự phòng, Sentinels sẽ báo cáo địa chỉ mới.

Điều kiện xây dựng Sentinel chính thức:

  • Bạn cần ít nhất Ba trường hợp Sentinel Để cho phép triển khai đáng tin cậy.
  • Ba phiên bản Sentinel phải được đặt trên các máy tính hoặc máy ảo được dự đoán là có thể bị lỗi theo cách riêng biệt. Vì vậy, ví dụ Các máy chủ vật lý hoặc máy ảo khác nhau chạy trong các vùng khả dụng khác nhau .

Giới thiệu chi tiết và cách sử dụng: Vui lòng xem trang web chính thức ---> Tài liệu chi tiết về trang web chính thức.

4. Một chủ và hai nô lệ

Không cần phải nói thêm nữa, chúng ta hãy bắt đầu xây dựng thôi! .

1. Tạo thư mục gắn kết

Tạo một thư mục mới trên ba máy: Đầu tiên, chúng ta mở ba cửa sổ xshell, sau đó vận hành ba cửa sổ để tạo cùng lúc, rồi chọn Gửi đến tất cả các cửa sổ ở góc dưới bên trái! .

                        
                          đĩa CD /

                        
                      
                        
                          mkdir dữ liệu của tôi

                        
                      
                        
                          cd /dữ liệu của tôi

                        
                      
                        
                          mkdir redis

                        
                      
                        
                          đĩa cd redis

                        
                      
                        
                          dữ liệu mkdir

                        
                      
                        
                          mkdir cấu hình

                        
                      
                        
                          cd cấu hình

                        
                      

2. Trong 192.168.239.131 Chỉnh sửa các tập tin trên máy

                        
                          vim redis.conf

                        
                      

Nhập thông tin sau:

                        
                          # Bất kỳ ai cũng có thể kết nối với redis bind 0.0.0.0 # Cấu hình mật khẩu chính requirepass 123456 # Sau khi máy chủ gặp sự cố, nó trở thành mật khẩu để kết nối với masterauth 123456 # Bật persistence appendonly yes

                        
                      

chèn mô tả hình ảnh ở đây

3. Trong 192.168.239.130 Chỉnh sửa các tập tin trên máy

                        
                          vim redis.conf

                        
                      

Nhập thông tin sau:

                        
                          # Cấu hình IP và số cổng của máy chủ sao chép 192.168.239.131 6379 # Bất kỳ ai cũng có thể kết nối đến redis bind 0.0.0.0 # Mật khẩu sau khi trở thành máy chủ yêu cầu pass 123456 # Mật khẩu máy chủ kết nối masterauth 123456 # Bật persistence appendonly yes

                        
                      

chèn mô tả hình ảnh ở đây

4. Trong 192.168.239.128 Chỉnh sửa các tập tin trên máy

                        
                          vim redis.conf

                        
                      

Nhập thông tin sau:

                        
                          # Cấu hình IP và số cổng của máy chủ sao chép 192.168.239.131 6379 # Bất kỳ ai cũng có thể kết nối đến redis bind 0.0.0.0 # Mật khẩu sau khi trở thành máy chủ yêu cầu pass 123456 # Mật khẩu máy chủ kết nối masterauth 123456 # Bật persistence appendonly yes

                        
                      

5. 192.168.239.131 Bắt đầu redis

                        
                          docker chạy -p 6379:6379 --tên redis-master \ -v /mydata/redis/dữ liệu:/usr/local/etc/redis/data \ -v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -d redis redis-server /usr/local/etc/redis/redis.conf

                        
                      

Xem nhật ký khởi động:

                        
                          docker logs -f redis-master

                        
                      

chèn mô tả hình ảnh ở đây

6. 192.168.239.130 Bắt đầu redis

                        
                          docker chạy -p 6379:6379 --tên redis-slave-1 \ -v /mydata/redis/dữ liệu:/usr/local/etc/redis/data \ -v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -d redis máy chủ redis /usr/local/etc/redis/redis.conf

                        
                      

Bạn có thể thấy rằng bạn đã kết nối với nút chính! .

7. 192.168.239.128 Bắt đầu redis

                        
                          docker chạy -p 6379:6379 --tên redis-slave-2 \ -v /mydata/redis/dữ liệu:/usr/local/etc/redis/data \ -v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -d redis máy chủ redis /usr/local/etc/redis/redis.conf

                        
                      

chèn mô tả hình ảnh ở đây

8. Nhập 192.168.239.130 Chế độ xem Container

Chúng tôi kiểm tra nhật ký chính và có thể thấy rằng hai nút phụ đã tham gia! .

Chúng ta vào container và xem lại:

                        
                          docker exec -it redis-master /bin/bash


                        
                      

Kết nối với redis:

                        
                          redis-cli

                        
                      

Đăng nhập vào redis.

                        
                          xác thực 123456

                        
                      

chèn mô tả hình ảnh ở đây

Xem các nút phụ:

                        
                          thông tin

                        
                      

Bạn cũng có thể thấy có hai nút phụ! .

chèn mô tả hình ảnh ở đây

5. Xây dựng ba lính canh

1. Tạo thư mục gắn kết

Hoặc tạo ba máy ảo cùng nhau.

                        
                          lính gác mkdir

                        
                      
                        
                          cd lính gác

                        
                      
                        
                          vim sentinel.conf

                        
                      

Nhập thông tin sau:

                        
                          cổng 26379 sentinel giám sát redis-master 192.168.239.131 6379 2 sentinel auth-pass redis-master 123456 sentinel ngừng hoạt động sau mili giây redis-master 6000 sentinel đồng bộ song song redis-master 1 sentinel thời gian chờ chuyển đổi dự phòng redis-master 6000

                        
                      

Dòng thứ hai: Redis giám sát một cụm redis có tên là redis-master, chúng ta có thể viết theo ý muốn; sau đây là địa chỉ IP, có thể là địa chỉ IP của máy chủ của chúng ta, và cổng là cổng của redis master; 2 là số phiếu bầu cho các sentinel. Khi redis master ngừng hoạt động, redis phải được hai trong ba sentinel bầu chọn sẽ trở thành master! ! Dòng thứ ba: cấu hình mật khẩu chính. Dòng thứ tư: thời gian cần thiết để Sentinel xác định trạng thái ngoại tuyến chủ quan của phiên bản, tính bằng mili giây. Dòng 5: Giới hạn số lượng nút khởi tạo hoạt động sao chép sang nút chính mới cùng lúc sau khi chuyển đổi dự phòng. Giới hạn càng lớn thì hiệu quả càng chậm. Dòng 6: Nếu quá trình chuyển đổi dự phòng không hoàn tất trong thời gian quy định, quá trình chuyển đổi dự phòng sẽ không thành công.

chèn mô tả hình ảnh ở đây

2. Chạy 192.168.239.131 lính canh

                        
                          docker chạy -p 26379:26379 --tên redis-sentinel-1 \ -v /mydata/redis/sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf \ -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf

                        
                      

3. Chạy 192.168.239.130 lính canh

                        
                          docker chạy -p 26379:26379 --tên redis-sentinel-2 \ -v /mydata/redis/sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf \ -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf

                        
                      

3. Chạy 192.168.239.128 lính canh

                        
                          docker chạy -p 26379:26379 --tên redis-sentinel-3 \ -v /mydata/redis/sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf \ -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf

                        
                      

4. Các vấn đề cần giải quyết

Có ba lính canh được tạo ở đây, nhưng có bốn khi kiểm tra. Tôi không biết vấn đề là gì. Tôi đã thay đổi máy ảo nhưng vẫn không hoạt động! Nếu ai biết, hãy chia sẻ nhé! ! .

chèn mô tả hình ảnh ở đây

6. Kiểm tra master-slave và failover

1. Kiểm tra sao chép chủ-tớ

Nút chính tạo ra một cặp khóa-giá trị:

                        
                          đặt ab

                        
                      

chèn mô tả hình ảnh ở đây

Kiểm tra xem khóa có tồn tại không:

                        
                          có được một

                        
                      

Không có vấn đề gì giữa chủ và tớ cả! .

2. Kiểm tra lỗi chuyển đổi

Chúng tôi dừng thuyền trưởng lại và kiểm tra nhật ký của lính canh:

                        
                          docker dừng redis-master

                        
                      
                        
                          docker logs -f redis-sentinel-1 

                        
                      

Chúng ta thấy rằng 192.168.239.130 đã trở thành số chính! .

Khởi động lại bản gốc

                        
                          docker khởi động lại redis-master 

                        
                      

chèn mô tả hình ảnh ở đây

Chuyển đổi dự phòng thành công! ! .

7. Tích hợp springboot

1. Nhập phụ thuộc

Phiên bản springboot của trình soạn thảo là: 2.7.4.

                        
                           org.springframework.boot spring-boot-starter-data-redis   org.springframework.boot spring-boot-starter-web 

                        
                      

2. cấu hình yml

Mật khẩu phải cùng cấp với sentinel, nếu không thì không thể tìm thấy mật khẩu và quá trình xác minh sẽ không thành công.

                        
                          server: port: 8087 spring: redis: # Mật khẩu ở cùng cấp độ với sentinel, nếu không thì không tìm thấy mật khẩu và xác minh sẽ không thành côngpassword: 123456 sentinel: # Tên cụm trong sentinel.confmaster: my-master # Chúng ta chỉ cần kết nối đến sentinel và sentinel sẽ giúp chúng ta tìm các nút redis: - 192.168.239.131:26379 - 192.168.239.130:26379 - 192.168.239.128:26379

                        
                      

3. Cấu hình tuần tự hóa JSON

                        
                          /** * @author wangzhenjun * @date 2022/11/24 10:37 */ @Configuration public class RedisConfig { @Bean @SuppressWarnings(value = { "unchecked", "rawtypes" }) public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate<>(); template.setConnectionFactory(connectionFactory); Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class); // Sử dụng StringRedisSerializer để tuần tự hóa và hủy tuần tự hóa các giá trị khóa redis ​​template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(serializer); // Các khóa băm cũng được tuần tự hóa bằng StringRedisSerializer template.setHashKeySerializer(new StringRedisSerializer()); mẫu.setHashValueSerializer(serializer); mẫu.afterPropertiesSet(); trả về mẫu; } }

                        
                      

4. Tạo một bài kiểm tra bộ điều khiển mới

                        
                          /** * @author wangzhenjun * @date 2022/11/24 10:37 */ @RestController public class TestController { @Autowired private RedisTemplate redisTemplate; @GetMapping("/redis") public void saveRedis(){ redisTemplate.opsForValue().set("test","Seeing me succeeded"); } }

                        
                      

5. Kiểm tra

http://localhost:8087/test/redis .

chèn mô tả hình ảnh ở đây

6. Xem redis

chèn mô tả hình ảnh ở đây

8. Tóm tắt

Sau một ngày thi công, cuối cùng cũng hoàn thành. Mặc dù chưa hoàn hảo nhưng chức năng tổng thể thì ổn! Nhưng nó không ảnh hưởng đến khả năng chuyển đổi dự phòng và sao chép chủ-tớ! .

Điều đáng tiếc duy nhất là: có ba lính canh, nhưng khi tôi kiểm tra thì chỉ có bốn! Với việc thêm lính canh thứ ba, con số sẽ là 4! .

Nếu hữu ích với bạn, xin đừng keo kiệt với sự giúp đỡ của bạn. Ba cú nhấp chuột của bạn là động lực để tôi viết. Cảm ơn mọi người! ! .


Bạn có thể kiểm tra tài khoản WeChat công khai của biên tập viên tiếp theo để đọc bản phát hành đầu tiên của bài viết. Hoan nghênh bạn theo dõi và giao lưu với chúng tôi! !

Cuối cùng, bài viết này về việc sử dụng docker để xây dựng redis với một master, hai slave và ba sentinels trên ba máy chủ, concept-building-integration of springboot ở đây. Nếu bạn muốn biết thêm về việc sử dụng docker để xây dựng redis với một master, hai slave và ba sentinels trên ba máy chủ, concept-building-integration of springboot, vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

34 4 0
Tôi là một chú chim nhỏ
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com