Một bộ bản sao [một bộ bản sao] là một nhóm các thể hiện [ví dụ]
root:~# docker network create my-mongo-cluster
9, các thể hiện này lưu trữ bộ dữ liệu [bộ dữ liệu] giống nhauNội dung chính Hiển thị
- Bộ bản sao Mongo
- Chạy bản sao mongo được đặt trên Docker
- Một điều nữa [@@]
Trong môi trường sản phẩm có tính dự phòng và tính sẵn sàng cao [dư thừa và khả dụng cao] mà mongo replica set cung cấp là hết sức cần thiết. Không giống như khi chúng ta chạy thử với môi trường
root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
0 hoặc root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
1 thì chỉ cần một root:~# docker network create my-mongo-cluster
9 chạy là đủMột bộ bản sao mongo sẽ chứa các nút mang dữ liệu [
root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
3] và có thể có một nút trọng tài [root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
4], riêng root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
4 không mang dữ liệu cho nhiệm vụ duy nhất của nó dành cho bình bầuTrong số các
root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
3 có duy nhất một nút root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
7 có quyền ghi dữ liệu. Trong quá trình ghi dữ liệu chính của nút này, ghi lại toàn bộ bộ thay đổi dữ liệu của nó trong nhật ký hoạt động hoặc còn gọi oplogTrong
root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
3 bên ngoài root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
7 sẽ còn lại các nút root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
10, các root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
11 này sao chép root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
12 của chính và thao tác trên bộ dữ liệu của mình, đó là cách các nút lưu trữ bộ dữ liệu giống nhauChuyển đổi dự phòng tự động. is when
root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
7 node down. Các root:~# docker network ls | grep my
d4b0ed47349c my-mongo-cluster bridge local
11 còn lại sẽ bình bầu để một nút lên làm chính. Chúng ta sẽ không thể ghi dữ liệu cho đến khi quá trình này hoàn tất. Bộ bản sao có thể tiếp tục đọc dữ liệu của máy chủ nếu được cấu hình chạy trên phụ khi chính ngoại tuyếnViết quan tâm. Nút mô tả số cần xác nhận việc ghi dữ liệu hoàn tất trước khi việc ghi dữ liệu được thông báo lại phía máy khách là thành công [ mặc định 1]
Hoạt động đọc [Đánh đổi]. Có tất cả 5 tùy chọn cho việc đọc dữ liệu và đây là một sự thay đổi mà chúng ta nên xem xét để có cấu hình phù hợp với ứng dụng của mình nhất
7. Mặc định luôn là đọc dữ liệu từ nútroot:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
7. Giao dịch nhiều tài liệu giao dịch thao tác trên nhiều bản ghi có chứa thao tác đọc phải sử dụng đọc từ chính. Các thao tác trong một giao dịch cần được thực hiện trên cùng một nút. [Giao dịch vừa có thao tác đọc, ghi cần thao tác trên cùng nút B. Cannot read on node B, write on node C]root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
17. Thông thường sẽ đọc từ nút chính nhưng nếu ngoại tuyến chính thì có thể đọc từroot:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
11root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
10. Luôn đọc từ các nút phụroot:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
10. Mặc định sẽ đọc từ nút phụ nhưng nếu không có nút nào khả dụng thì sẽ đọc từ nút chínhroot:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
11. Sẽ đọc từ nút gần nó nhất. Trong mongo replica set. Các nút sẽ được lưu trữ trên các Trung tâm dữ liệu khác nhau [theo thiết kế] thậm chí cả các khu vực địa lý [châu Âu, châu Á]. Tùy chọn này sẽ cho phép khách hàng lấy dữ liệu từ nút mà nó kết nối mạng nhanh nhấtroot:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
Nhận xét [quan điểm cá nhân]
Chỉ đặt chỉ đọc chính có thể tăng tải trên nút chính [vừa đọc vừa ghi]. If original down is not only not write data at this job read data also now not done [ for to when the primary new up]
17. Vẫn là tăng tải trên chính [ vừa đọc vừa ghi], giải quyết được khi hạ cấp chính [ sẽ chuyển qua đọc từ phụ]root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
If read from secondaries down load for primmay node [ at this only need to write], tuy nhiên có thể xảy ra trường hợp dữ liệu chưa được cập nhật. [dữ liệu đã thay đổi trên chính nhưng chưa cập nhật trên phụ]
Chạy bản sao mongo được đặt trên Docker
Phần này mình sẽ chạy thử 1 replica set đơn giản trên docker
Dĩ nhiên trên PC của mình đã cài đặt docker
Kiểm tra đã có hình ảnh của
13 [ như bên dưới phiên bản mongo mới nhất còn sản phẩm chúng ta sẽ chỉ rõ phiên bản nào [cung] ].root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
5root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
Tạo mạng bằng lệnh
root:~# docker network create my-mongo-cluster
Chắc chắn chúng ta đã có
root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
Chúng ta bắt đầu, cùng chạy
14 đầu tiênroot:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
1root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
15. Bắt đầu một vùng chứa từ một hình ảnhroot:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
16. set name for the container first this is.root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
14root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
18. thêm vùng chứa này vào mạngroot:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
19root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
13. file image to run the containerroot:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
61. tham gia mongo1 vào replSet có tênroot:~# docker network create my-mongo-cluster
62root:~# docker network create my-mongo-cluster
Được. Giờ con thứ 2 và thứ 3 sẽ được chạy [tại đây mình chạy trên 3 cửa sổ terminal khác nhau]
1root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
Sau khi chạy chúng ta có thể thấy log thông báo chưa cấu hình replSet
6root:~# docker network create my-mongo-cluster
Cùng kiểm tra ip các container này đã có [nếu muốn xem toàn bộ thông tin mạng thì bỏ cái grep thôi
].
0root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
Ok thấy ip rồi connect vào rồi setup replSet thoai
[ thiết bị đầu cuối bên dưới đang kết nối với mongo1 theo IP như hiển thị ở trên]
1root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
Add cấu hình cho replica set
2root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
ReplSet part is start replSet thôi. Vẫn đang trên con mongo1 nhé. Sau khi bắt đầu thay thế, nó sẽ chuyển sang trạng thái Thứ cấp và đợi 1 lát nó sẽ trở thành Chính như bên dưới
3root:~# docker network ls | grep my d4b0ed47349c my-mongo-cluster bridge local
Phần dưới đây lần với con mongo2 và mongo3
0root:~# docker network create my-mongo-cluster
Có thể sẽ có câu hỏi tại sao phần này không thấy cổng ra như 1 số hướng dẫn [?]
63. Mình nghĩ nếu hiểu mô hình khai triển bạn sẽ thấy việc làm port hơi thừaroot:~# docker network create my-mongo-cluster
Một điều nữa [@@]
Phần trên đã chạy thành công replica set nhưng nếu gom lại 1 file docker-compose thì sẽ nhanh hơn
Ghi chú
1root:~# docker network create my-mongo-cluster
Mình xóa hết các container trước đó đã tạo đi. Trước
2root:~# docker network create my-mongo-cluster
Sau
3root:~# docker network create my-mongo-cluster
Mạng được tạo ở trên vẫn còn nhé
4root:~# docker network create my-mongo-cluster
Tệp
64 như bên dướiroot:~# docker network create my-mongo-cluster
5root:~# docker network create my-mongo-cluster
Time cd into the directory contains file
65 run command.root:~# docker network create my-mongo-cluster
66 lên thôi nếu bị như dưới là không có quyền nhé.root:~# docker network create my-mongo-cluster
67 lênroot:~# docker network create my-mongo-cluster
6root:~# docker network create my-mongo-cluster
Chúng ta sẽ có log ntn
7root:~# docker network create my-mongo-cluster
Kiểm tra lại các container đã chạy
8root:~# docker network create my-mongo-cluster
Kiểm tra lại IP và chạy các lệnh cấu hình như phần trên là chúng ta sẽ có bộ thay thế cục bộ để kiểm tra. Điểm lợi của docker-compose is when running the
68 tự động các container được tạo bởiroot:~# docker network create my-mongo-cluster
66 cũng sẽ bị xóa luôn. Gom các cấu hình vào trong tập tin. yml luôn thay thế chính xác hơn là chạy lệnh thiết bị đầu cuối như phần trênroot:~# docker network create my-mongo-cluster
p/s
Phần trên chỉ là ghi chú lại phần tìm hiểu của mình về bản sao mongo được đặt trên docker và thử chạy nó với docker-compose. Còn tồn tại nhiều vấn đề cần phải thực hiện thêm trước khi chạy sản phẩm
Bảo mật mạng với docker [chỉ các máy chủ mới có thể truy cập vào các bản sao của mongo]
Trình soạn thảo tệp docker nên thêm 1 bước chạy tự cấu hình - phần trên vẫn đang làm bằng tay[ cái này đã được nhìn thấy trên mạng có - nhưng chưa thử
]Định làm ứng dụng nodejs nhỏ kiểm tra khi chính xuống và vẫn đọc ghi được sau khi 1 phụ lên. [có thể bổ sung sau]