Bạn có thể xem cập nhật mới nhất của tôi trong blog của tôi ở đây https. //Trung bình. com/@calvin. hsieh/các bước cài đặt-mongodb-on-aws-ec2-instance-62db66981218
Tín dụng
- https. //eladnava. com/triển khai-a-highly-available-mongodb-replica-set-on-aws/
- http. //www. máy chủ. ca/tutorials/linux/database-servers/how-to-create-mongodb-replication-cluster/
Xin chân thành cảm ơn Elad Nava và Shane Rainville đã viết những bài báo trên cho phép tôi thực hiện hướng dẫn này. Nếu bằng mọi cách mà tôi vi phạm bản quyền của bài đăng gốc, vui lòng liên hệ với tôi
từ chối trách nhiệm
- Ít nhất bạn nên đọc bài viết của Elad trước phần Bắt đầu
- Bạn nên có một số kiến thức cơ bản về bản chất của AWS và MongoDB trước khi tiếp tục hướng dẫn này
Tại sao phải tạo một hướng dẫn khác nếu đã có những hướng dẫn tốt như hai hướng dẫn trên?
Tôi thấy mình đã lặp đi lặp lại nhiều lần trong nhiều ngày về cách định cấu hình MongoDB đúng cách với bộ bản sao và bật xác thực. Rất nhiều tìm kiếm trên Google ở đây và ở đó trong nhiều ngày và cuối cùng đã tìm ra giải pháp. Không có xác thực và tường lửa, MongoDB cực kỳ dễ bị tấn công
Bài viết đầu tiên hướng dẫn bạn từng bước rõ ràng về cách thiết lập MongoDB trên AWS EC2. Tuy nhiên, MongoDB đã trải qua một số cập nhật và thay đổi. Vì vậy, tôi đã bao gồm những thay đổi trong bài viết của mình
Bài viết thứ hai hướng dẫn bạn cách tích hợp xác thực nội bộ giữa các thành viên bộ bản sao đúng cách và kích hoạt xác thực
Tôi thấy cần phải kết hợp chúng thành một hướng dẫn, vì vậy tôi hy vọng tôi có thể tiết kiệm thời gian của bạn nếu bạn chuẩn bị thiết lập máy chủ MongoDB, đặc biệt là khi bạn muốn bật xác thực
Cài đặt AWS EC2
Trước tiên, hãy chuẩn bị các phiên bản AWS EC2 để chạy MongoDB và để đảm bảo rằng bạn có tên miền của riêng mình
1. Khởi chạy các phiên bản
- Ra mắt 3 Ubuntu Server 16 hoàn toàn mới. 04 phiên bản LTS trong bảng điều khiển EC2
- Chọn phiên bản i3 nếu cần phiên bản được tối ưu hóa NoSQL;
- Đảm bảo mỗi phiên bản nằm trong vùng khả dụng khác nhau
- Tạo nhóm bảo mật mới,
7* soft nproc 32000 * hard nproc 32000
- Định cấu hình cả ba phiên bản để sử dụng nó
- Chỉ cho phép SSH trên cổng 22 từ IP của bạn
- Cho phép cổng 27017 từ nhóm bảo mật
7 và IP của bạn* soft nproc 32000 * hard nproc 32000
- Vì vậy, cả IP của bạn và các thành viên trong bộ bản sao đều có quyền truy cập vào quy trình mongod của nhau đang lắng nghe trên cổng 27017
- Gắn nhãn cho từng phiên bản bạn đã tạo như sau [thay ví dụ. com với tên miền của riêng bạn]
- Dữ liệu - db1. ví dụ. com
- Dữ liệu - db2. ví dụ. com
- trọng tài - trọng tài1. ví dụ. com
2. Yêu cầu 3 IP đàn hồi
Đính kèm các IP được yêu cầu vào từng phiên bản để các thành viên bản sao của bạn sẽ duy trì cùng một IP công khai trong suốt thời gian tồn tại
3. Thiết lập Bản ghi DNS
Chuyển đến bảng điều khiển DNS của miền của bạn và thêm bản ghi
* soft nproc 32000
* hard nproc 32000
9 cho db1, db2, arbiter1. Đối với mỗi bản ghi, hãy nhập tên máy chủ DNS công khai của từng phiên bản, hiển thị trong bảng điều khiển phiên bản EC2Cấu hình máy chủ
Chúng tôi sẽ cần sửa đổi máy chủ thành HĐH cơ bản để nó hoạt động tốt với MongoDB
1. Đặt tên máy chủ
SSH vào từng máy chủ và đặt tên máy chủ của nó để khi chúng tôi khởi tạo bộ bản sao, các thành viên sẽ có thể hiểu cách liên hệ với nhau
sudo bash -c 'echo db1.example.com > /etc/hostname && hostname -F /etc/hostname'
Đảm bảo sửa đổi db1. ví dụ. com và đặt nó thành tên máy chủ DNS của mỗi máy chủ
2. Tăng giới hạn hệ điều hành
MongoDB cần có khả năng tạo bộ mô tả tệp khi máy khách kết nối và sinh ra một số lượng lớn quy trình để hoạt động hiệu quả. Các giới hạn quy trình và tệp mặc định được cung cấp cùng với Ubuntu không áp dụng cho MongoDB
Sửa đổi chúng bằng cách chỉnh sửa tệp
sudo nano /etc/init.d/disable-transparent-hugepages
0sudo nano /etc/security/limits.conf
Thêm các dòng sau vào cuối tệp
________số 8Tiếp theo, tạo một tệp có tên
sudo nano /etc/init.d/disable-transparent-hugepages
1 trong sudo nano /etc/init.d/disable-transparent-hugepages
2* soft nproc 32000
* hard nproc 32000
1Dán các dòng sau vào tệp
* soft nproc 32000
* hard nproc 32000
3. Vô hiệu hóa các trang lớn trong suốt
Các trang lớn trong suốt [THP] là một hệ thống quản lý bộ nhớ Linux giúp giảm chi phí tra cứu Bộ đệm tra cứu dịch thuật [TLB] trên các máy có dung lượng bộ nhớ lớn bằng cách sử dụng các trang bộ nhớ lớn hơn
Tuy nhiên, khối lượng công việc cơ sở dữ liệu thường hoạt động kém với THP, vì chúng có xu hướng có các mẫu truy cập bộ nhớ thưa thớt hơn là liền kề. Bạn nên tắt THP để đảm bảo hiệu suất tốt nhất với MongoDB
Chạy các lệnh sau để tạo tập lệnh init sẽ tự động tắt THP khi khởi động hệ thống
sudo nano /etc/init.d/disable-transparent-hugepages
Dán phần sau vào bên trong nó
* soft nproc 32000
* hard nproc 32000
4Làm cho nó có thể thực thi được
* soft nproc 32000
* hard nproc 32000
5Đặt nó để bắt đầu tự động khi khởi động
* soft nproc 32000
* hard nproc 32000
64. Định cấu hình hệ thống tệp
Linux theo mặc định sẽ cập nhật thời gian truy cập cuối cùng khi tệp được sửa đổi. Khi MongoDB thực hiện ghi thường xuyên vào hệ thống tệp, điều này sẽ tạo ra sự suy giảm hiệu suất và chi phí hoạt động không cần thiết. Chúng tôi có thể tắt tính năng này bằng cách chỉnh sửa tệp
sudo nano /etc/init.d/disable-transparent-hugepages
3* soft nproc 32000
* hard nproc 32000
8Thêm cờ
sudo nano /etc/init.d/disable-transparent-hugepages
4 ngay sau sudo nano /etc/init.d/disable-transparent-hugepages
5sudo nano /etc/security/limits.conf
0Ngoài ra, cài đặt đọc trước đĩa mặc định trên EC2 không được tối ưu hóa cho MongoDB. Số khối để đọc trước phải được điều chỉnh thành khoảng 32 khối [hoặc 16 KB] dữ liệu. Chúng ta có thể đạt được điều này bằng cách thêm một mục crontab sẽ thực thi khi hệ thống khởi động
sudo nano /etc/security/limits.conf
1Chọn
sudo nano /etc/init.d/disable-transparent-hugepages
6 bằng cách nhấn sudo nano /etc/init.d/disable-transparent-hugepages
7 nếu đây là lần đầu tiên bạn chỉnh sửa crontab, sau đó thêm phần sau vào cuối tệpsudo nano /etc/security/limits.conf
25. khởi động lại
Khởi động lại phiên bản
sudo nano /etc/security/limits.conf
36. Lặp lại các bước 1 - 5
Lặp lại các bước từ 1 đến 5 cho tất cả các thành viên của bộ bản sao
Xác minh cấu hình máy chủ
Sau khi khởi động lại, bạn có thể kiểm tra xem tên máy chủ mới có hiệu lực hay không bằng cách chạy
sudo nano /etc/security/limits.conf
4Kiểm tra xem các giới hạn của hệ điều hành đã được tăng lên bằng cách chạy
sudo nano /etc/security/limits.conf
5Lệnh đầu tiên sẽ xuất ra
sudo nano /etc/init.d/disable-transparent-hugepages
8, lệnh thứ hai là sudo nano /etc/init.d/disable-transparent-hugepages
9Kiểm tra xem tính năng Trang lớn trong suốt có bị vô hiệu hóa thành công hay không bằng cách ban hành các lệnh sau
sudo nano /etc/security/limits.conf
6Đối với cả hai lệnh, đầu ra chính xác giống như
sudo nano /etc/security/limits.conf
7Kiểm tra xem
sudo nano /etc/init.d/disable-transparent-hugepages
4 đã được cấu hình thành công chưasudo nano /etc/security/limits.conf
8Nó sẽ in một dòng tương tự như
sudo nano /etc/security/limits.conf
9Ngoài ra, hãy xác minh rằng giá trị đọc trước của đĩa là chính xác bằng cách chạy
* soft nofile 64000
* hard nofile 64000
* soft nproc 32000
* hard nproc 32000
0Nó sẽ in
* soft nproc 32000
* hard nproc 32000
41Xác minh cấu hình cho tất cả các thành viên của bộ bản sao
Cài đặt MongoDB
Chạy các lệnh sau để cài đặt 3 ổn định mới nhất. 4. phiên bản x của MongoDB
* soft nofile 64000
* hard nofile 64000
* soft nproc 32000
* hard nproc 32000
1Các lệnh này cũng sẽ tự động khởi động
* soft nproc 32000
* hard nproc 32000
42, daemon MongoDB. Lặp lại bước này trên tất cả các thành viên của bộ bản saoLặp lại cho tất cả các thành viên của bộ bản sao
Thiết lập MongoDB
Tạo * soft nproc 32000
* hard nproc 32000
43
* soft nproc 32000
* hard nproc 32000
* soft nproc 32000
* hard nproc 32000
43 lưu trữ mật khẩu được sử dụng bởi mỗi nút. Mật khẩu cho phép mỗi nút xác thực với nhau, cho phép chúng sao chép các thay đổi lẫn nhau. Mật khẩu này phải dài và rất phức tạp. Chúng tôi sẽ sử dụng lệnh openssl để đảm bảo mật khẩu của chúng tôi phức tạp* soft nofile 64000
* hard nofile 64000
* soft nproc 32000
* hard nproc 32000
2Tạo thư mục nơi khóa sẽ được lưu trữ
* soft nofile 64000
* hard nofile 64000
* soft nproc 32000
* hard nproc 32000
3Sao chép tập tin vào thư mục mới
* soft nofile 64000
* hard nofile 64000
* soft nproc 32000
* hard nproc 32000
4Đặt quyền sở hữu của tệp khóa thành mongodb
* soft nofile 64000
* hard nofile 64000
* soft nproc 32000
* hard nproc 32000
5Đặt quyền truy cập tệp thích hợp
* soft nofile 64000
* hard nofile 64000
* soft nproc 32000
* hard nproc 32000
6Sao chép
* soft nproc 32000
* hard nproc 32000
45 cho tất cả các thành viên của bộ bản saoThiết lập * soft nproc 32000
* hard nproc 32000
46
* soft nproc 32000
* hard nproc 32000
Bây giờ là lúc cấu hình MongoDB để hoạt động ở chế độ replica set, cũng như cho phép truy cập từ xa vào máy chủ
* soft nofile 64000
* hard nofile 64000
* soft nproc 32000
* hard nproc 32000
7Tìm và xóa
* soft nproc 32000
* hard nproc 32000
47 hoặc đặt trước nó bằng một * soft nproc 32000
* hard nproc 32000
48 để nhận xét nó* soft nofile 64000
* hard nofile 64000
* soft nproc 32000
* hard nproc 32000
8Tìm phần
* soft nproc 32000
* hard nproc 32000
49 đã nhận xét và bỏ ghi chú. Sử dụng đường dẫn của keyFile đã tạo trước đó* soft nofile 64000
* hard nofile 64000
* soft nproc 32000
* hard nproc 32000
9Tìm phần
* soft nproc 32000
* hard nproc 32000
50 đã nhận xét và bỏ ghi chú. Thêm phần sau bên dưới, thay thế * soft nproc 32000
* hard nproc 32000
51 bằng tên cho bộ bản sao của bạn* soft nproc 32000
* hard nproc 32000
10QUAN TRỌNG sử dụng cùng một
* soft nproc 32000
* hard nproc 32000
52 cho TẤT CẢ các thành viên bản saoTạo
* soft nproc 32000
* hard nproc 32000
53* soft nproc 32000
* hard nproc 32000
11Viết phần sau vào tệp
* soft nproc 32000
* hard nproc 32000
12Kích hoạt
* soft nproc 32000
* hard nproc 32000
53* soft nproc 32000
* hard nproc 32000
13Khởi động lại MongoDB để áp dụng các thay đổi của chúng tôi
* soft nproc 32000
* hard nproc 32000
14Lặp lại cho tất cả các thành viên của bộ bản sao
Khởi tạo bộ bản sao
Hãy chắc chắn rằng bạn đã thiết lập mọi thứ đúng cách trong tất cả các thành viên của bộ bản sao vào thời điểm này
Kết nối với một trong các phiên bản MongoDB [tốt nhất là
* soft nproc 32000
* hard nproc 32000
55] bằng SSH để khởi tạo bộ bản sao và khai báo các thành viên của nó. Lưu ý rằng bạn chỉ phải chạy các lệnh này trên một trong các thành viên. MongoDB sẽ tự động đồng bộ hóa cấu hình bộ bản sao cho tất cả các thành viên khácKết nối với MongoDB thông qua lệnh sau
* soft nproc 32000
* hard nproc 32000
15Khởi tạo bộ bản sao
* soft nproc 32000
* hard nproc 32000
16Lệnh sẽ tự động thêm thành viên hiện tại làm thành viên đầu tiên của bộ bản sao
Tạo tài khoản quản trị
Cấu hình MongoDB mặc định được mở rộng, nghĩa là bất kỳ ai cũng có thể truy cập cơ sở dữ liệu được lưu trữ trừ khi mạng của bạn có các quy tắc tường lửa
Tạo người dùng quản trị để truy cập cơ sở dữ liệu
* soft nproc 32000
* hard nproc 32000
15Chọn cơ sở dữ liệu
* soft nproc 32000
* hard nproc 32000
56* soft nproc 32000
* hard nproc 32000
18Tạo tài khoản
* soft nproc 32000
* hard nproc 32000
56* soft nproc 32000
* hard nproc 32000
19Không nên sử dụng các ký tự đặc biệt trong mật khẩu để tránh sự cố khi đăng nhập
Thêm thành viên bản sao
Thêm thành viên dữ liệu thứ hai vào bộ bản sao
* soft nproc 32000
* hard nproc 32000
0Và cuối cùng, thêm người phân xử, đảm bảo chuyển thành true làm đối số thứ hai [biểu thị rằng thành viên là người phân xử chứ không phải thành viên dữ liệu]
* soft nproc 32000
* hard nproc 32000
1Đảm bảo thay thế
* soft nproc 32000
* hard nproc 32000
58 bằng tên miền của riêng bạnXác minh trạng thái bộ bản sao
Hãy xem trạng thái thiết lập bản sao bằng cách chạy
* soft nproc 32000
* hard nproc 32000
2Kiểm tra mảng
* soft nproc 32000
* hard nproc 32000
59. Tìm một thành viên * soft nproc 32000
* hard nproc 32000
60, một thành viên * soft nproc 32000
* hard nproc 32000
61 và một thành viên * soft nproc 32000
* hard nproc 32000
62. Tất cả các thành viên phải có giá trị * soft nproc 32000
* hard nproc 32000
63 là * soft nproc 32000
* hard nproc 32000
64. Nếu không, đảm bảo rằng các thành viên có thể nói chuyện với nhau trên cổng * soft nproc 32000
* hard nproc 32000
65 bằng cách sử dụng * soft nproc 32000
* hard nproc 32000
66 chẳng hạnKết nối MongoDB với Xác thực
Sử dụng dòng lệnh
* soft nproc 32000
* hard nproc 32000
3Nhập mật khẩu khi được nhắc
Để tìm nạp đúng thông tin tài khoản quản trị viên, hãy sử dụng
* soft nproc 32000
* hard nproc 32000
67 khi truy cập MongoDBSử dụng chuỗi kết nối
* soft nproc 32000
* hard nproc 32000
4Tham khảo bài đăng này để biết thêm thông tin về định dạng chuỗi kết nối
Đừng quên thay đổi
- người dùng và mật khẩu của riêng bạn
58 vào tên miền của riêng bạn* soft nproc 32000 * hard nproc 32000
69 thành tên cơ sở dữ liệu của riêng bạn* soft nproc 32000 * hard nproc 32000
51 thành tên bộ bản sao của riêng bạn* soft nproc 32000 * hard nproc 32000
Sao lưu tự động vào AWS S3
Tín dụng
- https. //ý chính. github. com/eladnava/96bd9771cd2e01fb4427230563991c8d
- https. //ý chính. github. com/caraboides/7679bb73f4f13e36fc2b9dbded3c24c0
Tập lệnh đầu tiên yêu cầu sử dụng thêm dung lượng để chứa các tệp sao lưu tạm thời và tập lệnh thứ hai cho phép bạn sao lưu trực tiếp các tệp vào S3 mà không cần sử dụng thêm dung lượng. Vì vậy, tôi đã hợp nhất cả hai cùng với xác thực để sao lưu/khôi phục cơ sở dữ liệu một cách dễ dàng