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

Hướng dẫn triển khai TimescaleDB với Docker

Ngày nay, Docker là công cụ phổ biến nhất để tạo, triển khai và chạy các ứng dụng bằng cách sử dụng vùng chứa. Nó cho phép chúng tôi đóng gói một ứng dụng với tất cả các phần mà nó cần, chẳng hạn như thư viện và các phần phụ thuộc khác, và gửi tất cả thành một gói. Nó có thể được coi là một máy ảo, nhưng thay vì tạo ra toàn bộ hệ điều hành ảo, Docker cho phép các ứng dụng sử dụng cùng một nhân Linux với hệ thống mà chúng đang chạy và chỉ yêu cầu các ứng dụng được vận chuyển với những thứ chưa chạy trên đó. máy tính chủ. Điều này giúp tăng hiệu suất đáng kể và giảm kích thước của ứng dụng.

Trong trường hợp của Docker Images, chúng đi kèm với phiên bản hệ điều hành được xác định trước và các gói được cài đặt theo cách do người tạo hình ảnh quyết định. Có thể bạn muốn sử dụng một hệ điều hành khác hoặc có thể bạn muốn cài đặt các gói theo một cách khác. Đối với những trường hợp này, bạn nên sử dụng Hình ảnh Docker OS sạch và cài đặt phần mềm từ đầu.

Sao chép là một tính năng phổ biến trong môi trường cơ sở dữ liệu, vì vậy sau khi triển khai Hình ảnh Docker TimescaleDB, nếu bạn muốn định cấu hình thiết lập sao chép, bạn sẽ cần thực hiện thủ công từ vùng chứa, bằng cách sử dụng tệp Docker hoặc thậm chí là tập lệnh. Nhiệm vụ này có thể phức tạp nếu bạn không có kiến ​​thức về Docker.

Trong blog này, chúng ta sẽ thấy cách chúng ta có thể triển khai TimescaleDB qua Docker bằng cách sử dụng Hình ảnh Docker TimescaleDB và sau đó, chúng ta sẽ thấy cách cài đặt nó từ đầu bằng cách sử dụng Hình ảnh CentOS Docker và ClusterControl.

Cách triển khai TimescaleDB với Hình ảnh Docker

Trước tiên, hãy xem cách triển khai TimescaleDB bằng cách sử dụng Hình ảnh Docker có sẵn trên Docker Hub.

  $ docker search timescaledb TÊN MÔ TẢ NGÔI SAO CHÍNH THỨC TỰ ĐỘNG Thời gian / timescale / timescaledb Tối ưu hóa cơ sở dữ liệu chuỗi thời gian nguồn mở… 52  

Chúng tôi sẽ lấy kết quả đầu tiên. Vì vậy, chúng ta cần lấy hình ảnh này:

  $ docker pull timescale / timescaledb  

Và chạy các vùng chứa nút ánh xạ một cổng cục bộ đến cổng cơ sở dữ liệu vào vùng chứa:

  $ docker run -d --name timescaledb1 -p 7551:5432 timescale / timescaledb $ docker run -d --name timescaledb2 -p 7552:5432 timescale / timescaledb  

Sau khi chạy các lệnh này, bạn phải tạo môi trường Docker này:

  $ docker psCONTAINER ID IMAGE COMMAND ĐƯỢC TẠO TRẠNG THÁI CỔNG TÌNH TRẠNG NAMES6d3bfc75fe39 timescale / timescaledb "docker-entrypoint.s ..." 15 phút trước Lên 15 phút 0.0.0.0:7552->5432/tcp timescaledb2748d5167041fbale "docker-caled entrypoint.s… "16 phút trước Lên 16 phút 0.0.0.0:7551->5432/tcp timescaledb1  

Bây giờ, bạn có thể truy cập từng nút bằng các lệnh sau:

  $ docker executive -ti [db-container] bash $ su postgres $ psqlpsql (9.6.13) Nhập "help" để được trợ giúp.postgres =#  

Như bạn có thể thấy, Docker Image này chứa phiên bản TimescaleDB 9.6 theo mặc định và được cài đặt trên Alpine Linux v3.9. Bạn có thể sử dụng phiên bản TimescaleDB khác bằng cách thay đổi thẻ:

  $ docker pull timescale / timescaledb:new-pg11  

Sau đó, bạn có thể tạo người dùng cơ sở dữ liệu, thay đổi cấu hình theo yêu cầu của bạn hoặc định cấu hình sao chép giữa các nút theo cách thủ công.

Cách triển khai TimescaleDB với ClusterControl

Bây giờ, hãy xem cách triển khai TimescaleDB với Docker bằng cách sử dụng Hình ảnh Docker CentOS (centos) và Hình ảnh Docker ClusterControl (vàinines / clustercontrol).

Đầu tiên, chúng tôi sẽ triển khai Vùng chứa ClusterControl Docker bằng cách sử dụng phiên bản mới nhất, vì vậy chúng tôi cần kéo Hình ảnh Docker vàinines / clustercontrol.

  $ docker pull vàinines / clustercontrol  

Sau đó, chúng tôi sẽ chạy vùng chứa ClusterControl và xuất bản cổng 5000 để truy cập nó.

  $ docker run -d --name clustercontrol -p 5000:80 vàinines / clustercontrol  

Bây giờ, chúng ta có thể mở giao diện người dùng ClusterControl tại http:// [Docker_Host]:5000 / clustercontrol và tạo người dùng và mật khẩu quản trị viên mặc định.

CentOS Official Docker Image không có dịch vụ SSH, vì vậy chúng tôi sẽ cài đặt nó và cho phép kết nối từ nút ClusterControl mà không cần mật khẩu bằng cách sử dụng khóa SSH.

  $ docker search centosNAME DESCRIPTION STARS OFFICIAL AUTOMATEDcentos Bản dựng chính thức của CentOS. 5378 [OK]  

Vì vậy, chúng tôi sẽ lấy Hình ảnh Docker chính thức của CentOS.

  $ docker pull centos  

Và sau đó, chúng tôi sẽ chạy hai vùng chứa nút, timescale1 và timescale2, được liên kết với ClusterControl và chúng tôi sẽ ánh xạ một cổng cục bộ để kết nối với cơ sở dữ liệu (tùy chọn).

  $ docker run -dt --privileged --name timescale1 -p 8551:5432 --link clustercontrol:clustercontrol centos / usr / sbin / init $ docker run -dt --privileged --name timescale2 -p 8552:5432 - điều khiển cụm liên kết:clustercontrol centos / usr / sbin / init  

Khi chúng ta cần cài đặt và định cấu hình dịch vụ SSH, chúng ta cần chạy vùng chứa với các tham số đặc quyền và / usr / sbin / init để có thể quản lý dịch vụ bên trong vùng chứa.

Sau khi chạy các lệnh này, chúng ta sẽ tạo môi trường Docker này:

4 giây trước "23 giây trước Tăng 22 giây 0.0.0.0:8551->5432/tcp timescale17eadb6bb72fb vàinines / clustercontrol" /entrypoint.sh "2 tuần trước Tăng khoảng một giờ (khỏe mạnh) 22 / tcp, 443 / tcp, 3306 / tcp, 9500 -9501 / tcp, 9510-9511 / tcp, 9999 / tcp, 0.0.0.0:5000->80/tcp clustercontrol

Chúng ta có thể truy cập từng nút bằng lệnh sau:

  $ docker Operating -ti [db-container] bash  

Như chúng tôi đã đề cập trước đó, chúng tôi cần cài đặt dịch vụ SSH, vì vậy hãy cài đặt nó, cho phép truy cập root và đặt mật khẩu gốc cho mỗi vùng chứa cơ sở dữ liệu:

  $ docker Operating -ti [db-container] yum update -y $ docker Operating -ti [db-container] yum install -y openssh-server openssh-client $ docker Operating -it [db-container] sed -i 's | ^ # PermitRootLogin. * | PermitRootLogin yes | g' / etc / ssh / sshd_config $ docker executive -it [db-container] systemctl start sshd $ docker executive -it [db-container] passwd  

Bước cuối cùng là thiết lập SSH không mật khẩu cho tất cả các vùng chứa cơ sở dữ liệu. Đối với điều này, chúng ta cần biết Địa chỉ IP cho mỗi nút cơ sở dữ liệu. Để biết điều đó, chúng ta có thể chạy lệnh sau cho mỗi nút:

  $ docker verify [db-container] | grep IPAddress "IPAddress":"172.17.0.5",  

Sau đó, đính kèm vào bảng điều khiển tương tác vùng chứa ClusterControl:

  $ docker execute -it clustercontrol bash  

Và sao chép khóa SSH vào tất cả các vùng chứa cơ sở dữ liệu:

  $ ssh-copy-id 172.17.0.5  

Bây giờ chúng ta đã thiết lập và chạy các nút máy chủ, chúng ta cần triển khai cụm cơ sở dữ liệu của mình. Để làm cho nó một cách dễ dàng, chúng tôi sẽ sử dụng ClusterControl.

Để thực hiện triển khai từ ClusterControl, hãy mở giao diện người dùng ClusterControl tại http:// [Docker_Host]:5000 / clustercontrol, sau đó chọn tùy chọn “Triển khai” và làm theo hướng dẫn xuất hiện.

Khi chọn TimescaleDB, chúng tôi phải chỉ định Người dùng, Khóa hoặc Mật khẩu và cổng để kết nối bằng SSH với máy chủ của chúng tôi. Chúng tôi cũng cần một tên cho cụm mới của mình và nếu chúng tôi muốn ClusterControl cài đặt phần mềm và cấu hình tương ứng cho chúng tôi.

Sau khi thiết lập thông tin truy cập SSH, chúng ta phải xác định người dùng cơ sở dữ liệu, phiên bản và datadir (tùy chọn). Chúng tôi cũng có thể chỉ định kho lưu trữ nào sẽ sử dụng.

Trong bước tiếp theo, chúng tôi cần thêm máy chủ của mình vào cụm mà chúng tôi sẽ tạo.

Ở đây, chúng ta phải sử dụng Địa chỉ IP mà chúng ta đã nhận được từ mỗi vùng chứa trước đó.

Trong bước cuối cùng, chúng tôi có thể chọn xem bản sao của chúng tôi sẽ là Đồng bộ hay Không đồng bộ.

Chúng tôi có thể theo dõi trạng thái tạo cụm mới của mình từ trình theo dõi hoạt động ClusterControl.

Sau khi tác vụ hoàn thành, chúng ta có thể thấy cụm của mình trong màn hình ClusterControl chính.

Lưu ý rằng, nếu bạn muốn thêm nhiều nút chờ hơn, bạn có thể thực hiện điều đó từ giao diện người dùng ClusterControl trong menu Cluster Actions.

Theo cách tương tự, nếu bạn có cụm TimescaleDB của mình đang chạy trên Docker và bạn muốn ClusterControl quản lý nó để có thể sử dụng tất cả các tính năng của hệ thống này như giám sát, sao lưu, chuyển đổi dự phòng tự động và hơn thế nữa, bạn có thể chỉ cần chạy Vùng chứa ClusterControl trong cùng một mạng Docker với vùng chứa cơ sở dữ liệu. Yêu cầu duy nhất là đảm bảo các vùng chứa đích đã được cài đặt các gói liên quan đến SSH (máy chủ openssh, máy khách openssh). Sau đó, cho phép SSH không mật khẩu từ ClusterControl vào vùng chứa cơ sở dữ liệu. Sau khi hoàn tất, hãy sử dụng tính năng “Nhập cụm / máy chủ hiện có” và cụm sẽ được nhập vào ClusterControl.

Một vấn đề có thể xảy ra khi chạy vùng chứa là chỉ định địa chỉ IP hoặc tên máy chủ. Nếu không có công cụ điều phối như Kubernetes, địa chỉ IP hoặc tên máy chủ có thể khác nếu bạn dừng các nút và tạo vùng chứa mới trước khi bắt đầu lại. Bạn sẽ có một địa chỉ IP khác cho các nút cũ và ClusterControl đang giả định rằng tất cả các nút đang chạy trên môi trường có địa chỉ IP hoặc tên máy chủ chuyên dụng, vì vậy sau khi địa chỉ IP thay đổi, bạn nên nhập lại cụm vào ClusterControl. Có nhiều cách giải quyết cho vấn đề này, bạn có thể kiểm tra liên kết này để sử dụng Kubernetes với StatefulSet hoặc giải pháp này để chạy các vùng chứa mà không có công cụ điều phối.

Kết luận

Như chúng ta có thể thấy, việc triển khai TimescaleDB với Docker sẽ dễ dàng nếu bạn không muốn định cấu hình môi trường nhân bản hoặc chuyển đổi dự phòng và nếu bạn không muốn thực hiện bất kỳ thay đổi nào trên phiên bản hệ điều hành hoặc cài đặt gói cơ sở dữ liệu.

Với ClusterControl, bạn có thể nhập hoặc triển khai cụm TimescaleDB của mình với Docker bằng cách sử dụng hình ảnh hệ điều hành mà bạn thích, cũng như tự động hóa các tác vụ giám sát và quản lý như sao lưu và tự động chuyển đổi dự phòng / khôi phục.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khám phá Kiểm thử đơn vị Java với Khung kiểm tra JUnit

  2. Làm tình huống cho INSTEAD OF Trigger - Phần 1

  3. Tách chuỗi đúng cách - hoặc cách tốt nhất tiếp theo

  4. Khi nào chuyển sang phiên bản RDS lớn hơn

  5. Python:Truy vấn dữ liệu bằng âm thanh