Page tree

VNG Cloud Help Center

Skip to end of metadata
Go to start of metadata

Với mô hình Master-Slave, bạn có thể sử dụng trực tiếp các endpoint mà DB Instance master và slave hiển thị tại Connectivity & Security, tuy nhiên khi cần thay đổi thông tin endpoint của vDB bạn phải thay đổi cấu hình ở các app và thông báo tới các developer đang sử dụng vDB. Vì vậy để giữ nguyên endpoint cung cấp cho app và developer, bạn có thể sử dụng vLB kết hợp với vDB để khi vDB endpoint thay đổi, bạn chỉ cần thay đổi member của vLB, các app và developer chỉ biết vLB endpoint để kết nối và không thay đổi. Đồng thời trường hợp khi DB Instance master bạn bị  sự cố và bạn muốn promote slave lên standalone, bạn cũng thay đổi member của vLB để chuyển đổi master.

Giả sử hiện tại chúng ta đang có 2 vDB master, slave như sau:

Tạo 1 vLB layer 4 với listener (port 3306 hoặc bất kì port nào) và pool, nếu chỉ truy cập database trong internal bạn nên chọn vLB internal để tránh rủi ro expose database ra internet, ở đây chúng tôi để mặc định internet facing để dễ dàng test.

Bạn truy cập vào Pool, chọn Edit Member để thêm vDB endpoint vào


Trước thêm member vào vLB bạn cần thu thập vDB endpoint của dbmaster và dbslave:

Với thông tin vDB endpoint ta có: dbmaster(10.0.1.5), dbslave (10.0.1.10), chúng ta thêm member như sau vào vLB, lưu ý khi thêm dbslave chúng ta chọn mode backup để khi chạy bình thường vLB chỉ trỏ request về dbmaster:

 

Sau khi Save xong, bạn cần chờ hệ thống vLB healthcheck các DB Instance endpoint và chuyển sang trạng thái Operating Status: ONLINE

Thử truy cập vào vLB Endpoint để kiểm tra hệ thống đã hoạt động: bạn có thể thấy vLB đã đá request xuống dbmaster để có thể read/write được dữ liệu

Trường hợp khi dbmaster có sự cố (bạn có thể giả lập bằng cách shutdown dbmaster), hệ thống vLB sẽ tự động chuyển sang member backup là dbslave, tuy nhiên lúc này hệ thống có thể read và không thể write, ở đây bạn có 2 lựa chọn

  • Giữ nguyên mọi thứ và cố gắng fix dbmaster, khi dbmaster hoạt động trở lại vLB sẽ tự động chuyển lại dbmaster để hệ thống có thể read/write
  • Nếu không thể fix dbmaster, bạn cần thay đổi member của vLB chỉ trỏ về dbslave và promote dbslave lên để hệ thống có thể read/write như bình thường.

Ví dụ trường hợp dbmaster bị chết và vLB sẽ report dbmaster đang có OPERATING STATE: ERROR

Lúc này vLB đã tự động chuyển request sang dbslave và hệ thống đang nằm ở trạng thái read_only:

Nếu bạn giữ nguyên mọi thứ và fix dbmaster hoạt động trở lại, hệ thống vLB sẽ tự động chuyển lại dbmaster khi phục hồi, còn nếu bạn thực hiện việc promote dbslave thành standalone, bạn thực hiện các bước sau:

Đầu tiên, bạn cần thay đổi member của vLB trỏ chính xác dbslave (10.0.1.10) với không chọn backup role, lý do cần thay đổi member của vLB trước là để tránh tình huống split-brain trong quá trình promote dbslave lên, trong quá trình bạn đang promote to standalone sẽ có khả năng dbmaster hoạt động trở lại và dữ liệu mới sẽ được ghi vào dbmaster, dẫn đến việc dbslave không nhận được những dữ liệu này

Sau một khoảng thời gian vLB sẽ kiểm tra và bật ONLINE

Tiếp đến bạn cần Promote to Standalone cho dbslave để hệ thống có thể write được:


Sau khi promote thành công, bạn có thể kết nối vào hệ thống và thực hiện write được:

Lúc này hệ thống đã đảm được việc read/write, tuy nhiên sau quá trình Promote, dbslave đã chuyển thành standalone, bạn có thể tạo thêm read replicas cho dbslave và thêm member với backup mode vào vLB để đảm bảo hệ thống được thiết lập như ban đầu.

  • No labels