Hướng dẫn triển khai Consul Cluster – Service Discovery

105

Hướng dẫn triển khai Consul Cluster – Service DiscoveryCuongquach.com | Consul là một trong những Open Source về giải pháp Service Discovery khá là thú vị và nổi gần đây. Một trong những bước đầu để có thể thiết kế một hệ thống Service Discovery đó là xây dựng một hạ tầng Consul Cluster đảm bảo tính HA cho hệ thống, hoạt động ổn định,… Trong bài viết này chúng ta sẽ tìm hiểu cách xây dựng một cụm phân tán Consul Cluster cho hoạt động Service Discovery.

trien-khai-consul-cluster

Consul Cluster hoạt động như thế nào ?

Một cụm cluster Consul cần tối thiểu là 3 server , tại sao 3 server thì là để tránh vấn đề ‘Split Brain‘ thường gặp khi setup các hệ thống dịch vụ Cluster. Các Server Consul ở Server Mode và Client Mode sẽ nói chuyện với nhau qua giao thức riêng port 8300, 8301 trong DataCenter Private.

Chi tiết Consul Cluster hoạt động như thế nào, bạn có thể tham khảo bài viết này : https://www.consul.io/docs/internals/index.html

Mô hình lab Consul Cluster

Giả định mô hình Consul Cluster của chúng ta gồm thông tin 3 máy chủ Consul với các địa chỉ IP Private như sau .

Mô hình lab Consul Cluster
Mô hình lab Consul Cluster

Bạn cần cấu hình hostname cho các máy chủ Consul với cú pháp lệnh dưới bạn tự tuỳ biến [0x] thành tên hostname của các máy chủ khác.

Kế đến nhớ tắt SELinux trên CentOS nếu bạn không làm chủ được tính năng này.

Danh sách port cần mở giữa  3 server Consul Cluster để giao tiếp với nhau:

  • TCP : 8300,8301,8302,8400,8500,8600
  • UDP : 8301,8302,8600

1. Cài đặt Consul trên Linux

Đầu tiên chúng ta sẽ tải chương trình Linux Consul binary về : https://www.consul.io/downloads.html

Giải nén file zip và di chuyển chương trình ‘consul‘ đến thư mục chứa các binary chung.

Kiểm tra chương trình ‘consul‘ xem phiên bản bao nhiêu để biết ‘consul‘ hoạt động được chưa nhé.

Xem mục trang giúp đỡ của ‘consul‘ nào.

Khởi tạo user hoạt động cho dịch vụ ‘consul‘ nào.

Khởi tạo thư mục cần thiết cho Consul gồm :
– Thư mục cấu hình cho chương trình dịch vụ Consul.
– Thư mục chứa dữ liệu hoạt động của dịch vụ Consul.
– Thư mục chứa log của dịch vụ Consul.

Kế đến phân quyền truy cập các thư mục trên cho user ‘consul’ nào.

Kế đến chúng ta mapping domain với địa chỉ IP các máy chủ Consul sẽ khởi tạo Cluster để tiện quản lý. Bạn có thể sử dụng dịch vụ DNS Server Private của hệ thống bạn hoặc map đơn giản trong file ‘hosts‘.

2. Khởi tạo key Consul Secret

Phần này bạn chỉ cần chạy trên 1 con để khởi tạo Consul secret key sử dụng cho config key encrypt Consul của các con Consul 01, 02 và 03. Key encrypt này giúp mã hoá và giải mã các message trao đổi giữa các máy chủ Consul.

3. Cấu hình dịch vụ Consul Cluster

Bạn sử dụng nội dung Consul Secret trên để thế vào phần biến ‘encrypt‘ trong file cấu trên cả 3 Consul server. Trong bài lab này mình thay thế bằng domain nội bộ hệ thống tương ứng địa chỉ IP private của các máy chủ Consul để quản lý đẹp hơn.

Lưu ý:

  • Các thao tác dưới đều thực hiện riêng trên cả 3 máy chủ Consul, nhưng nội dung từ file config đến thao tác đều giống nhau nhé.

+ Consul 01, Consul 02, Consul 03

Chú thích cấu hình:

  • bootstrap_expect : số lượng Consul mode Server cần có để chạy trong một data center Consul Cluster.
  • client_addr : địa chỉ IP mà Consul sẽ listen interface, bao gồm các dịch vụ HTTP và DNS.
  • datacenter : quy định thông tin tên Cluster Data Center hoạt động, giả sử có nhiều cụm Cluster name khác nhau, thì tương ứng các datacenter name khác nhau. Các consul server phải cùng hoạt động chung 1 data center và 1 domain.
  • data_dir : thư mục chứa dữ liệu hoạt động của Consul.
  • domain : mặc định Consul sẽ xử lý các query dns đến domain ‘consul.’ . Bạn có thể tuỳ biến domain riêng cho hệ thống nội bộ, khớp với domain các dịch vụ trong mạng nội bộ của bạn.
  • enable_script_checks : kích hoạt sử dụng cơ chế health check qua script.
  • dns_config : một số option tinh chỉnh cho service DNS Consul Server.
  • enable_syslog : kích hoạt syslog cho Consul.
  • encrypt : chuỗi kí tự dùng để mã hoá trao đổi cơ bản giữa các Consul member trong Consul Cluster.
  • log_level : cấp độ log được ghi lại.
  • log_file : thông tin file log dịch vụ Consul ghi log.
  • rejoin_after_leave : kích hoạt cho option ‘retry_join’.
  • server : chạy Consul Agent ở chế độ Server, thay vì Client Mode.
  • start_join : danh sách các máy chủ mà Consul Agent cần
  • retry_join : thử join vào danh sách các máy chủ trong cụm Cluster Consul, nếu lần đầu ‘start_join‘ bị thất bại.
  • ui : kích hoạt giao diện dashboard quản lý consul.

Kiểm tra cấu hình Consul đúng cú pháp chưa.

Kế đến tạo file khởi động dịch vụ Consul.

Chúng ta reload lại dịch vụ system, để cập nhật mới thông tin file service systemd vừa tạo.

Giờ bạn cần thêm rule firewall trên máy chủ dịch vụ Consul để thêm các port hoạt động quan trọng của Consul Cluster.

+ Firewalld

+ Iptables

+ Security Group AWS

Nếu bạn cấu hình trên EC2 Instance của dịch vụ Cloud AWS, thì nhớ thêm rule trên Security Group firewall nha, với chi tiết rule :

  • TCP : 8300,8301,8302,8400,8500,8600
  • UDP : 8301,8302,8600

4. Bootstrap và khởi động Consul Cluster

Đầu tiên trên con node Consul-01 , bạn khởi động dịch vụ consul.

Kế đến trên 2 con Consul-02 Consul-03 , cũng khởi động dịch vụ Consul.

Giờ ta kiểm tra trạng thái của Consul Cluster nào gồm : địa chỉ ip, trạng thái sức khoẻ, phiên bản consul,…

Muốn coi thông tin chi tiết hơn thì chạy lệnh option ‘detailed’.

5. Truy cập Consul UI

Giờ bạn có thể truy cập Consul Dashboard tại đường dẫn địa chỉ ip bất kì trong 3 con Consul Server và port mặc định là 8500 : http://<consul-ip>:8500/

consul dashboard - 1
consul dashboard – 1
consul dashboard - 2
consul dashboard – 2

Vậy là bạn đã biết cách triển khai một cụm Consul Cluster cho hoạt động Service Discovery rồi. Chúng ta sẽ còn tiếp tục tìm hiểu quản trị hệ thống Service Discovery Consul nữa.

Nguồn: https://cuongquach.com/

LEAVE A REPLY