PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Triển khai thiết lập đa trung tâm dữ liệu cho PostgreSQL - Phần một

Thiết lập nhiều trung tâm dữ liệu là cấu trúc liên kết phổ biến cho Kế hoạch khôi phục sau thảm họa (DRP), nhưng có một số hạn chế xung quanh việc triển khai loại môi trường này.

Trước tiên, bạn nên giải quyết vấn đề giao tiếp giữa các trung tâm dữ liệu bằng cách sử dụng quyền truy cập SSH hoặc định cấu hình VPN. Sau đó, bạn có độ trễ (tùy thuộc vào cấu hình) có thể ảnh hưởng đến cụm cơ sở dữ liệu của bạn. Cuối cùng, bạn nên nghĩ về cách thực hiện chuyển đổi dự phòng. Ứng dụng có thể truy cập vào nút từ xa trong trường hợp lỗi chính không?

Trong blog này, chúng tôi sẽ trình bày cách triển khai thiết lập đa trung tâm dữ liệu cho PostgreSQL bao gồm tất cả các điểm đã đề cập trước đó, một số điểm trong số đó sử dụng ClusterControl. Để không làm cho nó quá nhàm chán, chúng tôi sẽ chia nó thành hai phần. Trong phần đầu tiên, chúng tôi sẽ đề cập đến khả năng kết nối giữa các trung tâm dữ liệu. Phần thứ hai sẽ là về việc triển khai và cấu hình chính nó, vì vậy hãy bắt đầu!

Mục tiêu

Giả sử bạn muốn có cấu trúc liên kết sau:

Nơi bạn đã kết nối ứng dụng của mình với bộ cân bằng tải, một nút cơ sở dữ liệu chính và một nút dự phòng trong một trung tâm dữ liệu và một nút dự phòng khác trong trung tâm dữ liệu phụ cho các mục đích DR. Đây có thể là một thiết lập tối thiểu để có một môi trường nhiều trung tâm dữ liệu. Bạn có thể tránh sử dụng bộ cân bằng tải, nhưng trong trường hợp chuyển đổi dự phòng, bạn nên định cấu hình lại ứng dụng của mình để kết nối với bản chính mới, vì vậy, để tránh chúng tôi khuyên bạn nên sử dụng nó hoặc thậm chí sử dụng hai trong số chúng (một trên mỗi DC) để tránh đơn điểm của sự thất bại.

Để làm rõ hơn, hãy gán một số địa chỉ IP công cộng cho cả trung tâm dữ liệu 1 và 2 làm ví dụ.

Trong trung tâm dữ liệu 1, mạng công cộng là 35.166.37.0/24, vì vậy hãy gán các địa chỉ IP sau theo cách này:

APP: 35.166.37.10

Load Balancer + ClusterControl: 35.166.37.11

Primary Node: 35.166.37.12

Standby 1 Node: 35.166.37.13

Trong trung tâm dữ liệu 2, mạng công cộng là 18.197,23.0/24, vì vậy:

Standby 2 Node: 18.197.23.14

Kết nối Trung tâm Dữ liệu

Vấn đề đầu tiên có thể là vấn đề này. Bạn có thể định cấu hình VPN giữa chúng và đó phải là cách an toàn nhất, nhưng như chúng tôi đã đề cập đến cấu hình VPN trong một blog trước và để ngắn gọn nhất có thể, chúng tôi sẽ kết nối chúng qua quyền truy cập SSH bằng khóa riêng / công khai .

Hãy tạo một người dùng có tên là 'remote' trong tất cả các nút (để tránh sử dụng root):

$ useradd remote

$ passwd remote

Changing password for user remote.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

Và bạn có thể thêm nó vào tệp sudoers để gán đặc quyền:

$ visudo

remote    ALL=(ALL)       ALL

Bây giờ, trong máy chủ cân bằng tải (cũng sẽ là máy chủ ClusterControl), tạo cặp khóa cho người dùng mới:

$ su remote

$ ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/home/remote/.ssh/id_rsa):

Created directory '/home/remote/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/remote/.ssh/id_rsa.

Your public key has been saved in /home/remote/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:hgVe/unld9+r/Ynk1HM+t089A41bwxFlPYt5/q+ZyL8 [email protected]

The key's randomart image is:

+---[RSA 3072]----+

|      . .   .=|

|     . +     oo|

|      . o o.o|

|       o . . o+o.|

|      . S o .oo= |

|       . . o =.o|

|          . .+.=*|

|           [email protected]|

|            o=EB/|

+----[SHA256]-----+

Now you will have a new directory in the home

Sao chép khóa công khai cho từng nút bằng Địa chỉ IP công cộng từ xa:

$ ssh-copy-id 35.166.37.12

/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/remote/.ssh/id_rsa.pub"

/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '35.166.37.12'"

and check to make sure that only the key(s) you wanted were added.

Lệnh này sẽ sao chép khóa công khai của bạn vào nút từ xa trong tệp allow_keys, vì vậy bạn sẽ truy cập nó bằng khóa riêng tư.

Sau đó, hãy thử truy cập chúng:

$ ssh 35.166.37.12

Đảm bảo rằng bạn có lưu lượng SSH được phép trong tường lửa của mình và để đảm bảo an toàn hơn, bạn chỉ nên cho phép nó từ một nguồn đã biết (ví dụ:từ 35.166.37.0/24).

Ví dụ:nếu bạn đang sử dụng AWS, bạn nên cho phép lưu lượng từ 35.166.37.0/24 đến cổng SSH theo cách này:

Hoặc nếu bạn đang sử dụng IPTABLES, bạn nên chạy một cái gì đó như sau:

$ iptables -A INPUT -p tcp -s 35.166.37.0/24 --destination-port 22 -j ACCEPT

Hoặc một lệnh tương tự nếu bạn đang sử dụng một giải pháp tường lửa khác.

Để đảm bảo an toàn hơn một chút, chúng tôi khuyên bạn nên sử dụng cổng SSH khác với cổng mặc định và cũng có thể hữu ích khi sử dụng một số công cụ để cấm nhiều lần truy cập không thành công, như fail2ban.

Kết luận

Tại thời điểm này, nếu mọi thứ diễn ra tốt đẹp, bạn sẽ có giao tiếp SSH giữa các trung tâm dữ liệu của mình, vì vậy bước tiếp theo là triển khai cụm PostgreSQL của bạn và quản lý chuyển đổi dự phòng trong trường hợp thất bại, như chúng ta sẽ thấy trong phần thứ hai của blog này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sửa chữa Postgresql sau khi nâng cấp lên OSX 10.7 Lion

  2. Tạo chuỗi PostgreSQL cho một trường (không phải là ID của bản ghi)

  3. Các phương pháp hay nhất về ghi nhật ký kiểm tra PostgreSQL

  4. Hướng dẫn về PGpool - Gợi ý &Quan sát:Phần ba

  5. Tạo UUID trong câu lệnh Postgres for Insert?