Đối với hầu hết , tên máy chủ trong trường không bao giờ thay đổi. Tuy nhiên, nếu nhu cầu của tổ chức thay đổi, bạn có thể cần di chuyển một số hoặc tất cả các tên máy chủ
Ghi chú
Luôn sử dụng tên máy chủ có thể phân giải cho giá trị của trường trong cấu hình bộ sao chép để tránh nhầm lẫn và phức tạp
Mẹo
Khi có thể, hãy sử dụng tên máy chủ DNS hợp lý thay vì địa chỉ IP, đặc biệt khi định cấu hình thành viên bộ bản sao hoặc thành viên cụm phân đoạn. Việc sử dụng tên máy chủ DNS hợp lý tránh thay đổi cấu hình do thay đổi địa chỉ IP
Tổng quan
Tài liệu này cung cấp hai quy trình riêng biệt để thay đổi tên máy chủ trong trường. Sử dụng một trong các cách tiếp cận sau
- Cách tiếp cận này đảm bảo các ứng dụng của bạn sẽ luôn có thể đọc và ghi dữ liệu vào bộ bản sao, nhưng cách tiếp cận này có thể mất nhiều thời gian và có thể gây ra thời gian ngừng hoạt động ở lớp ứng dụng
Nếu bạn sử dụng quy trình đầu tiên, bạn phải định cấu hình các ứng dụng của mình để kết nối với bộ bản sao ở cả vị trí cũ và mới, thường yêu cầu khởi động lại và cấu hình lại ở lớp ứng dụng và điều này có thể ảnh hưởng đến tính khả dụng của các ứng dụng của bạn. Cấu hình lại các ứng dụng nằm ngoài phạm vi của tài liệu này
- Phương pháp này có thời gian bảo trì ngắn hơn nhưng bộ bản sao sẽ không khả dụng trong quá trình vận hành
Xem thêm
,Triển khai Bộ bản sao và Thêm thành viên vào Bộ bản sao
giả định
Đưa ra một với ba thành viên
9 [cái ]- mongo --port 27017
0- cfg = rs.conf[]
- cfg.members[1].host = "mongodb1.example.net:27017"
- rs.reconfig[cfg]
1- cfg = rs.conf[]
- cfg.members[1].host = "mongodb1.example.net:27017"
- rs.reconfig[cfg]
Và với đầu ra sau
- {
- "_id" : "rs",
- "version" : 3,
- "members" : [
- {
- "_id" : 0,
- "host" : "database0.example.com:27017"
- },
- {
- "_id" : 1,
- "host" : "database1.example.com:27017"
- },
- {
- "_id" : 2,
- "host" : "database2.example.com:27017"
- }
- ]
- }
Các quy trình sau đây thay đổi tên máy chủ của thành viên như sau
3 [chính]- cfg = rs.conf[]
- cfg.members[1].host = "mongodb1.example.net:27017"
- rs.reconfig[cfg]
4- cfg = rs.conf[]
- cfg.members[1].host = "mongodb1.example.net:27017"
- rs.reconfig[cfg]
5- cfg = rs.conf[]
- cfg.members[1].host = "mongodb1.example.net:27017"
- rs.reconfig[cfg]
Sử dụng quy trình thích hợp nhất cho việc triển khai của bạn
Thay đổi tên máy chủ trong khi duy trì tính khả dụng của bộ bản sao
Thủ tục này sử dụng trên
Đối với mỗi trong bộ bản sao, hãy thực hiện chuỗi thao tác sau
Dừng thứ cấp
Khởi động lại thứ cấp tại vị trí mới
Mở trình bao được kết nối với bộ bản sao'chính. Trong ví dụ của chúng tôi, chính chạy trên cổng
7, vì vậy bạn sẽ đưa ra lệnh sau- cfg = rs.conf[]
- cfg.members[1].host = "mongodb1.example.net:27017"
- rs.reconfig[cfg]
- mongo --port 27017
- Sử dụng để cập nhật tài liệu cấu hình bộ bản sao với tên máy chủ mới
Ví dụ: chuỗi lệnh sau cập nhật tên máy chủ cho phụ tại chỉ số mảng
9 của mảng
- cfg = rs.conf[]
- cfg.members[1].host = "mongodb1.example.net:27017"
- rs.reconfig[cfg]
0 [i. e.
- rs.stepDown[]
1] trong tài liệu cấu hình thiết lập bản sao
- rs.stepDown[]
- cfg = rs.conf[]
- cfg.members[1].host = "mongodb1.example.net:27017"
- rs.reconfig[cfg]
Để biết thêm thông tin về cách cập nhật tài liệu cấu hình, hãy xem
- Đảm bảo rằng các ứng dụng khách của bạn có thể truy cập tập hợp tại vị trí mới và ứng dụng thứ cấp có cơ hội bắt kịp với các thành viên khác của tập hợp
Lặp lại các bước trên cho từng thành viên không phải là thành viên chính của tập hợp
- Mở một trình bao được kết nối với trình bao chính và giảm dần trình bao chính bằng phương thức
- rs.stepDown[]
Bộ bản sao chọn một thành viên khác để trở thành chính
Khi bước xuống thành công, hãy tắt chế độ chính cũ
Bắt đầu phiên bản sẽ trở thành phiên bản chính mới ở vị trí mới
Kết nối với nút chính hiện tại vừa được chọn và cập nhật tài liệu cấu hình bộ bản sao với tên máy chủ của nút sẽ trở thành nút chính mới
Ví dụ: nếu chính cũ ở vị trí
5 và tên máy chủ của chính mới là
- rs.stepDown[]
3, bạn sẽ chạy
- cfg = rs.conf[]
- cfg.members[1].host = "mongodb1.example.net:27017"
- rs.reconfig[cfg]
- cfg = rs.conf[]
- cfg.members[0].host = "mongodb0.example.net:27017"
- rs.reconfig[cfg]
Mở trình bao được kết nối với trình bao chính mới
Để xác nhận cấu hình mới, hãy gọi trong shell
Đầu ra của bạn sẽ giống
- {
- "_id" : "rs",
- "version" : 4,
- "members" : [
- {
- "_id" : 0,
- "host" : "mongodb0.example.net:27017"
- },
- {
- "_id" : 1,
- "host" : "mongodb1.example.net:27017"
- },
- {
- "_id" : 2,
- "host" : "mongodb2.example.net:27017"
- }
- ]
- }
Thay đổi tất cả tên máy chủ cùng một lúc
Thủ tục này sử dụng trên
điều kiện tiên quyết
Quy trình sau đây đọc và cập nhật bộ sưu tập
0 trong cơ sở dữ liệu
- cfg = rs.conf[]
- cfg.members[0].host = "mongodb0.example.net:27017"
- rs.reconfig[cfg]
1
- cfg = rs.conf[]
- cfg.members[0].host = "mongodb0.example.net:27017"
- rs.reconfig[cfg]
Nếu triển khai của bạn thực thi kiểm soát truy cập, thì người dùng thực hiện quy trình phải có và các hành động đặc quyền đối với bộ sưu tập_______16_______0
Để tạo một vai trò cung cấp các đặc quyền cần thiết
- Đăng nhập với tư cách người dùng có đặc quyền để quản lý người dùng và vai trò, chẳng hạn như người dùng có vai trò. Quy trình sau đây sử dụng
6 được tạo trong Kích hoạt Kiểm soát Truy cập- cfg = rs.conf[]
- cfg.members[0].host = "mongodb0.example.net:27017"
- rs.reconfig[cfg]
- mongo --port 27017 -u myUserAdmin --authenticationDatabase 'admin' -p
- Tạo vai trò người dùng cung cấp các đặc quyền cần thiết trên bộ sưu tập
0 trong cơ sở dữ liệu- cfg = rs.conf[]
- cfg.members[0].host = "mongodb0.example.net:27017"
- rs.reconfig[cfg]
1- cfg = rs.conf[]
- cfg.members[0].host = "mongodb0.example.net:27017"
- rs.reconfig[cfg]
- db.adminCommand[ {
- createRole: "systemreplsetRole",
- privileges: [
- { resource: { db: "local", collection: "system.replset" }, actions: ["find","update"] }
- ],
- roles: []
- } ];
- Cấp vai trò cho người dùng sẽ thực hiện quy trình đổi tên. Ví dụ: phần sau giả sử người dùng hiện có_______16_______9 trong cơ sở dữ liệu
0- {
- "_id" : "rs",
- "version" : 4,
- "members" : [
- {
- "_id" : 0,
- "host" : "mongodb0.example.net:27017"
- },
- {
- "_id" : 1,
- "host" : "mongodb1.example.net:27017"
- },
- {
- "_id" : 2,
- "host" : "mongodb2.example.net:27017"
- }
- ]
- }
- use admin
- db.grantRolesToUser[ "userPerformingRename", [ { role: "systemreplsetRole", db: "admin" } ] ];
Thủ tục
Dừng tất cả các thành viên trong
Khởi động lại từng thành viên trên một cổng khác và không sử dụng tùy chọn thời gian chạy. Thay đổi Số cổng trong quá trình bảo trì sẽ ngăn khách hàng kết nối với máy chủ này trong khi bạn thực hiện bảo trì. Sử dụng thông thường của thành viên, mà trong ví dụ này là
3. Sử dụng một lệnh giống như sau- {
- "_id" : "rs",
- "version" : 4,
- "members" : [
- {
- "_id" : 0,
- "host" : "mongodb0.example.net:27017"
- },
- {
- "_id" : 1,
- "host" : "mongodb1.example.net:27017"
- },
- {
- "_id" : 2,
- "host" : "mongodb2.example.net:27017"
- }
- ]
- }
Cảnh báo
Trước khi liên kết với một máy chủ không phải máy chủ cục bộ [e. g. có thể truy cập công khai] địa chỉ IP, đảm bảo bạn đã bảo vệ cụm của mình khỏi bị truy cập trái phép. Để biết danh sách đầy đủ các đề xuất bảo mật, hãy xem Danh sách kiểm tra bảo mật. Ở mức tối thiểu, hãy xem xét và củng cố cơ sở hạ tầng mạng