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

Cấu hình khả dụng cao cho các nút ClusterControl sử dụng CMON HA

Trong blog trước của chúng tôi, chúng tôi đã thảo luận về ClusterControl CMON HA cho Tính khả dụng cao của Cơ sở dữ liệu phân tán được viết bởi Krzysztof Ksiazek trong hai bài đăng riêng biệt. Trong blog này, chúng tôi sẽ đề cập đến việc phân phối các nút thông qua tại chỗ và trên đám mây công cộng (sử dụng Google Cloud Platform (GCP)).

Lý do chúng tôi viết blog này là vì chúng tôi đã nhận được câu hỏi về cách triển khai phiên bản có tính khả dụng cao của ClusterControl có (các) nút CMON chạy tại chỗ và (các) nút CMON khác đang chạy trên một trung tâm dữ liệu khác nhau (chẳng hạn như đám mây công cộng). Trong blog trước đây của chúng tôi ClusterControl CMON HA cho Tính sẵn sàng cao của cơ sở dữ liệu phân tán, chúng tôi đang sử dụng các nút Galera Cluster, nhưng lần này chúng tôi sẽ sử dụng MySQL Replication bằng Percona Server 5.7. Một thiết lập lý tưởng cho việc này là luôn đóng gói giao tiếp của các nút từ cơ sở của bạn và các nút của bạn nằm trong một đám mây công cộng thông qua VPN hoặc một kênh bảo mật.

ClusterControl CMON HA đang ở giai đoạn đầu mà chúng tôi tin rằng nó chưa đủ trưởng thành. Tuy nhiên, CMON HA của chúng tôi có thể cung cấp cho bạn cảm giác về chức năng triển khai ClusterControl để làm cho nó có tính khả dụng cao. Hãy tiếp tục cách bạn có thể triển khai và thiết lập phân phối các nút thông qua tại chỗ thông qua đám mây công cộng.

CMON là gì?

Trước khi vào chủ đề chính, chúng tôi xin giới thiệu với các bạn CMON là gì. CMON là viết tắt của ClusterControl Controller, là “bộ não chính” của ClusterControl. Một dịch vụ phụ trợ thực hiện các nhiệm vụ lập lịch tự động, quản lý, giám sát và cả tính khả dụng của HA. Dữ liệu được thu thập được lưu trữ vào cơ sở dữ liệu CMON, cơ sở dữ liệu mà chúng tôi đang sử dụng cơ sở dữ liệu tương thích MySQL làm kho dữ liệu.

Thiết lập kiến ​​trúc

Một số bạn có thể chưa biết các khả năng của ClusterControl mà nó có thể thực hiện và được thiết lập để có tính khả dụng cao. Nếu bạn có nhiều nút ClusterControl (hoặc CMON) đang chạy, bạn có thể thực hiện điều đó miễn phí. Bạn có thể chạy hàng tấn nút ClusterControl bất cứ khi nào bạn cần.

Đối với thiết lập này, chúng tôi sẽ có các nút ClusterControl ở trên cùng của ClusterControl để tạo hoặc triển khai các nút cơ sở dữ liệu và quản lý tự động chuyển đổi dự phòng bất cứ khi nào xảy ra lỗi. Mặc dù bạn có thể sử dụng MHA, Orchestrator hoặc Maxscale để quản lý tự động chuyển đổi dự phòng, nhưng để đạt hiệu quả và tốc độ, tôi sẽ sử dụng ClusterControl để thực hiện những điều đặc biệt mà các công cụ khác mà tôi đã đề cập không có.

Vì vậy, hãy xem sơ đồ cho thiết lập này:

Thiết lập dựa trên sơ đồ đó cho thấy rằng trên đầu CMON ba nút , một CMON (ClusterControl) đang chạy ở trên cùng của chúng sẽ giám sát quá trình chuyển đổi dự phòng tự động. Sau đó, HAProxy sẽ có thể cân bằng tải giữa ba nút CMON được giám sát, trong đó một nút nằm trong vùng riêng biệt được lưu trữ trong GCP cho blog này. Bạn có thể nhận thấy rằng chúng tôi không bao gồm Keepalived, đó là bởi vì chúng tôi không thể đặt VIP dưới GCP vì nó nằm trên một mạng khác.

Như bạn có thể nhận thấy, chúng tôi đặt tổng cộng ba nút. CMON HA yêu cầu chúng tôi cần ít nhất 3 nút để tiến hành quy trình bỏ phiếu hay còn gọi là số đại biểu. Vì vậy, đối với thiết lập này, chúng tôi yêu cầu bạn phải có ít nhất 3 nút để có tính khả dụng cao hơn.

Triển khai nút điều khiển cụm điều khiển tại chỗ

Trong phần này, chúng tôi hy vọng rằng bạn đã thiết lập hoặc cài đặt giao diện người dùng ClusterControl của mình mà chúng tôi sẽ sử dụng để triển khai cụm nhân bản MySQL ba nút bằng Máy chủ Percona.

Trước tiên, hãy tạo cụm bằng cách triển khai Bản sao MySQL mới như được hiển thị bên dưới.

Lưu ý rằng tôi đang sử dụng Máy chủ Percona 5.7 tại đây, mặc định thiết lập bởi ClusterControl hoạt động hiệu quả.

Sau đó, xác định tên máy chủ hoặc IP của các nút của bạn,

Tại thời điểm này, chúng tôi cho rằng bạn đã thiết lập hai nút Bản sao Master / Slave được lưu trữ hoặc chạy tại chỗ. Ảnh chụp màn hình bên dưới sẽ cho thấy các nút của bạn sẽ trông như thế nào:

Thiết lập &Cài đặt ClusterControl và Bật CMON HA trên nút đầu tiên

Từ blog trước đây ClusterControl CMON HA dành cho Cơ sở dữ liệu phân tán Tính sẵn sàng cao, chúng tôi đã cung cấp ngắn gọn các bước về cách thực hiện việc này. Hãy đi xuống một lần nữa và thực hiện các bước như đã nêu nhưng đối với thiết lập sao chép Master / Slave cụ thể này.

Điều đầu tiên cần làm, chọn một nút bạn muốn cài đặt ClusterControl đầu tiên (trong thiết lập này, tôi kết thúc cài đặt đầu tiên trên nút 192.168.70.80) và thực hiện các bước bên dưới.

Bước Một

Cài đặt ClusterControl

$ wget http://www.severalnines.com/downloads/CMON/install-cc

$ chmod +x install-cc

$ sudo ./install-cc   # omit sudo if you run as root

Lưu ý rằng khi bạn được nhắc rằng phiên bản mysql hiện tại được phát hiện, bạn cần cho phép ClusterControl sử dụng mysqld hiện có đang chạy vì đó là một trong những mục tiêu của chúng tôi ở đây đối với CMON HA và thiết lập này để sử dụng đã thiết lập MySQL.

Bước Hai

Ràng buộc CMON không chỉ để cho phép qua máy chủ cục bộ mà còn trên địa chỉ IP cụ thể (vì chúng tôi sẽ bật HA)

## edit /etc/default/CMON  and modify the line just like below or add the line if it doesn't exist

RPC_BIND_ADDRESSES="127.0.0.1,192.168.70.80"

Bước Ba

Sau đó khởi động lại CMON,

service CMON restart

Bước Bốn

Cài đặt công cụ CLI của s9s

$ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh

$ chmod 755 install-s9s-tools.sh

$ ./install-s9s-tools.sh

Trong quá trình cài đặt này, công cụ s9s sẽ thiết lập người dùng quản trị mà bạn có thể sử dụng khi xử lý lệnh s9s, giống như bật CMON HA.

Bước Năm

Bật CMON HA

$ s9s controller --enable-CMON-ha

Bước Sáu

Cuối cùng, hãy sửa đổi /etc/my.cnf và thêm,

slave-skip-errors = 1062

trong phần [mysqld]. Sau khi được thêm, đừng quên khởi động lại mysql bằng,

service mysql restart

hoặc

systemctl restart mysql

Hiện tại, đây là hạn chế mà chúng tôi đang gặp phải với CMON HA vì nó cố gắng chèn các mục nhật ký vào máy chủ nhưng điều này có thể ổn ngay bây giờ.

Thiết lập, cài đặt ClusterControl và kích hoạt CMON HA trên nút thứ hai

Đơn giản như vậy đối với nút đầu tiên. Bây giờ, trên nút thứ 2 (192.168.70.70), chúng ta cần thực hiện các bước tương tự nhưng thay vào đó chúng ta cần thực hiện một số điều chỉnh trong các bước để làm cho HA này khả thi.

Bước Một

Sao chép cấu hình vào nút thứ 2 (192.168.70.70) từ nút đầu tiên (192.168.70.80)

$ scp -r /etc/CMON* 192.168.70.70:/etc/

Bước Hai

Trong nút thứ 2, hãy chỉnh sửa /etc/CMON.cnf và đảm bảo rằng máy chủ được định cấu hình chính xác. ví dụ:

vi /etc/CMON.cnf

Sau đó chỉ định tham số tên máy chủ là,

tên máy chủ =192.168.70.70

Bước Ba

Cài đặt ClusterControl,

$ wget http://www.severalnines.com/downloads/CMON/install-cc

$ chmod +x install-cc

$ sudo ./install-cc   # omit sudo if you run as root

Tuy nhiên, hãy bỏ qua quá trình cài đặt CMON (hoặc ClusterControl Controller) khi bạn gặp dòng này,

=> An existing Controller installation detected!

=> A re-installation of the Controller will overwrite the /etc/CMON.cnf file

=> Install the Controller? (y/N):

Phần còn lại, chỉ cần làm như những gì bạn đã làm trên nút đầu tiên, chẳng hạn như thiết lập tên máy chủ, sử dụng phiên bản chạy mysqld hiện có, cung cấp mật khẩu MySQL và mật khẩu cho CMON của bạn. cả hai đều có cùng một mật khẩu với nút đầu tiên.

Bước Bốn

Cài đặt công cụ CLI của s9s

$ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh

$ chmod 755 install-s9s-tools.sh

$ ./install-s9s-tools.sh

Bước Năm

Sao chép cấu hình còn lại từ nút thứ nhất sang nút thứ 2.

$ scp -r ~/.s9s/ 192.168.70.70:/root/

$ scp /etc/s9s.conf 192.168.70.70:/etc/

$ scp /var/www/html/clustercontrol/bootstrap.php 192.168.70.70:/var/www/html/clustercontrol/

Bước Sáu

Cài đặt gói điều khiển cụm điều khiển,

Đối với Ubuntu / Debian,

$ apt install -y clustercontrol-controller

Đối với RHEL / CentOS / Fedora,

$ yum install -y clustercontrol-controller

Bước Bảy

Sao chép tệp / etc / default / CMON và sửa đổi địa chỉ IP cho địa chỉ ràng buộc RPC

scp /etc/default/CMON 192.168.70.70:/etc/default

RPC_BIND_ADDRESSES="127.0.0.1,10.0.0.103"

Sau đó khởi động lại CMON như sau,

service CMON restart

Bước 8

Sửa đổi /etc/my.cnf và thêm,

slave-skip-errors = 1062

trong phần [mysqld]. Sau khi được thêm, đừng quên khởi động lại mysql bằng,

service mysql restart

hoặc

systemctl restart mysql

Hiện tại, đây là hạn chế mà chúng tôi đang gặp phải với CMON HA vì nó cố gắng chèn các mục nhật ký vào máy chủ nhưng điều này có thể ổn ngay bây giờ.

Bước Chín

Cuối cùng, hãy kiểm tra các nút CMON HA trông như thế nào,

[[email protected] ~]#  s9s controller --list --long

S VERSION    OWNER GROUP NAME            IP PORT COMMENT

l 1.7.5.3735 system admins 192.168.70.80   192.168.70.80 9501 Acting as leader.

f 1.7.5.3735 system admins 192.168.70.70   192.168.70.70 9501 Accepting heartbeats.

Total: 2 controller(s)

Triển khai nút ClusterControl của bạn trên đám mây

Như chúng ta đã đề cập trước đó, thiết lập lý tưởng cho giao tiếp là đóng gói các gói qua VPN hoặc các phương tiện kênh an toàn khác. Nếu bạn có thắc mắc về cách thực hiện việc này, hãy xem blog trước của chúng tôi Multi-DC PostgreSQL:Thiết lập nút chờ tại một vị trí địa lý khác qua VPN mà chúng tôi đã giải quyết cách bạn có thể tạo thiết lập VPN đơn giản bằng OpenVPN.

Vì vậy, trong phần này, chúng tôi hy vọng rằng bạn đã thiết lập kết nối VPN. Bây giờ, những gì chúng tôi sẽ làm là thêm một nô lệ mà chúng tôi phải phân phối tính khả dụng của CMON vào Google Cloud Platform. Để thực hiện việc này, chỉ cần vào Add Replication Slave có thể được tìm thấy bằng cách nhấp vào biểu tượng cụm gần góc bên phải. Hãy xem nó trông như thế nào bên dưới:

Bây giờ, đây là cách chúng ta kết thúc với:

Bây giờ, vì chúng tôi đã thêm nô lệ mới được lưu trữ trong GCP, bạn có thể cần phải theo dõi lại những gì chúng tôi đã làm trước đó ở nút thứ 2. Tôi sẽ chuyển tiếp bạn làm theo các bước đó và làm theo hướng dẫn về cách chúng tôi đã làm ở nút thứ 2.

Khi đã điền đúng, bạn sẽ nhận được kết quả sau:

[[email protected] ~]# s9s controller --list --long

S VERSION    OWNER GROUP NAME            IP PORT COMMENT

l 1.7.5.3735 system admins 192.168.70.80   192.168.70.80 9501 Acting as leader.

f 1.7.5.3735 system admins 192.168.70.70   192.168.70.70 9501 Accepting heartbeats.

f 1.7.5.3735 system admins 10.142.0.39     10.142.0.39 9501 Accepting heartbeats.

ở đâu trong các nút

  • 192.168.70.80 - (node8) và đang ở tại cơ sở của tôi
  • 192.168.70.70 - (node7) và đang ở tại cơ sở của tôi
  • 10.142.0.39 - (gnode1) được lưu trữ trong GCP và trên các khu vực khác nhau

CMON HA Đang hoạt động

Đồng nghiệp của tôi Krzysztof Ksiazek đã cung cấp thiết lập cho HA bằng HAProxy tại đây trên blog này ClusterControl CMON HA dành cho Cơ sở dữ liệu phân tán Khả dụng cao - Phần thứ hai (Thiết lập truy cập GUI).

Để làm theo quy trình được nêu trong blog, hãy đảm bảo bạn có gói xinetd và pathlib. Bạn có thể cài đặt xinetd và pathlib như sau,

$ sudo yum install -y xinetd python-pathlib.noarch

Đồng thời đảm bảo rằng bạn có CMONhachk được xác định trong / etc / services như bên dưới:

[[email protected] ~]# grep 'CMONhachk' /etc/services 

CMONhachk       9201/tcp

và đảm bảo các thay đổi và khởi động lại xinetd,

service xinetd restart

Tôi sẽ bỏ qua quy trình Keepalived và HAProxy và mong rằng bạn đã thiết lập phù hợp. Một điều bạn phải cân nhắc khi thiết lập này là không thể áp dụng Keepalived nếu bạn đang phân tán VIP từ tại chỗ sang mạng đám mây công cộng vì chúng hoàn toàn là một mạng khác.

Bây giờ, hãy xem CMON HA phản ứng như thế nào nếu các nút không hoạt động. Như được hiển thị trước đó, nút 192.168.70.80 (node8), đang hoạt động như một nhà lãnh đạo giống như được hiển thị bên dưới:

Trong đó cơ sở dữ liệu nút chính cũng hiển thị node8 là nút chính từ chế độ xem cấu trúc liên kết ClusterControl . Hãy thử giết node8 và xem CMON HA tiến hành như thế nào,

Như bạn thấy, gnode1 (nút GCP) đang tiếp quản với tư cách là người dẫn đầu khi nút 8 đi xuống. Kiểm tra kết quả HAProxy như sau,

và các nút ClusterControl của chúng tôi cho thấy rằng nút 8 không hoạt động, trong khi nút GCP đang sử dụng với tư cách là chủ,

Cuối cùng, truy cập nút HAProxy của tôi đang chạy trên máy chủ 192.168.10.100 tại cổng 81 hiển thị giao diện người dùng sau,

Kết luận

ClusterControl CMON HA của chúng tôi đã có từ phiên bản 1.7.2 nhưng nó cũng là một thách thức đối với chúng tôi vì nhiều câu hỏi và sở thích khác nhau về cách triển khai điều này, chẳng hạn như sử dụng MySQL Replication qua Galera Cluster.

CMON HA của chúng tôi chưa hoàn thiện nhưng hiện đã sẵn sàng để đáp ứng nhu cầu về tính khả dụng cao của bạn. Có thể áp dụng các cách tiếp cận khác nhau miễn là các lần kiểm tra của bạn sẽ xác định đúng nút đang hoạt động.

Chúng tôi khuyến khích bạn thiết lập và triển khai bằng CMON HA và cho chúng tôi biết mức độ phù hợp với nhu cầu của bạn hoặc nếu sự cố vẫn tiếp diễn, vui lòng cho chúng tôi biết cách giúp bạn đáp ứng nhu cầu có tính khả dụng cao của bạn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO + MySQL và mã hóa UTF-8 bị hỏng

  2. Tính toán phần trăm từ tần suất trong MySQL

  3. Tổng tích lũy trên một tập hợp các hàng trong mysql

  4. Cách xây dựng menu cấp độ không giới hạn thông qua PHP và mysql

  5. Giới thiệu đơn giản về cách sử dụng MySQL trên Linux Terminal