Consul là một nền tảng hiện đại để khám phá dịch vụ cho phép bạn đăng ký dịch vụ qua giao diện DNS và HTTP. Nó cũng cung cấp tính năng Service mesh cho phép kết nối an toàn qua TLS và cung cấp quyền hạn giữa các dịch vụ. Ngoài ra, Consul còn cung cấp API Gateway để quản lý quyền truy cập vào các dịch vụ và kho lưu trữ KV (Key/Value) để lưu trữ cấu hình dịch vụ.
Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn cài đặt Consul Cluster với nhiều máy chủ trên AlmaLinux 9 từng bước.
Thực hiện lệnh bên dưới để mở cổng 8300, 8301, 8302, 8400, 8500 và 8600 trên máy chủ AlmaLinux của bạn. Nếu thành công, bạn sẽ nhận được thông báo như sau: success.
Bây giờ, hãy tải lại firewalld bằng lệnh bên dưới để có hiệu lực.
Cuối cùng, hãy xác minh các quy tắc firewalld của bạn bằng lệnh sau. Đảm bảo các cổng 8300, 8301, 8302, 8400, 8500, 8600 có sẵn trên tường lửa của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22256%22%3E%3C/svg%3E
Thực hiện lệnh sau để thay đổi chế độ SELinux thành cho phép.
Sau đó, khởi động lại máy chủ của bạn để có hiệu lực.
Bây giờ bạn đã cấu hình tất cả các máy chủ AlmaLinux của mình, bạn có thể khởi động Consul cài đặt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22136%22%3E%3C/svg%3E
Để bắt đầu, hãy cài đặt một số gói cơ bản bằng cách thực hiện lệnh sau. Nhập y để tiếp tục cài đặt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22194%22%3E%3C/svg%3E
Bây giờ hãy chạy lệnh DNF bên dưới để thêm kho lưu trữ Consul vào máy chủ Alma Linux của bạn. Sau đó, hãy xác minh danh sách các kho lưu trữ khả dụng trên mỗi máy chủ.
Kết quả đầu ra sau đây chứng minh rằng bạn đã thêm kho lưu trữ HashiCorp vào hệ thống của mình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22219%22%3E%3C/svg%3E
Tiếp theo, hãy cài đặt Consul bằng cách thực hiện lệnh sau. Nhập y để tiếp tục cài đặt Consul.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22167%22%3E%3C/svg%3E
Sau khi hoàn tất cài đặt, hãy chạy lệnh sau để định vị tệp nhị phân consul và kiểm tra tệp đó phiên bản.
Đầu ra bên dưới xác nhận rằng tệp nhị phân Consul có sẵn tại /bin/consul, và phiên bản Consul hiện tại là 1.17.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22113%22%3E%3C/svg%3E
Trước tiên, hãy dừng dịch vụ consul trên mọi máy chủ bằng cách thực hiện lệnh bên dưới.
Di chuyển đến máy chủ consul1 và chạy lệnh bên dưới để tạo khóa mới cho cụm Consul. Hãy đảm bảo giữ nguyên khóa đã tạo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22447%22%20height=%22113%22%3E%3C/svg%3E
Trong tất cả các máy chủ Consul của bạn, hãy mở cấu hình Consul mặc định /etc/consul.d/consul.hcl bằng trình chỉnh sửa nano sau lệnh.
Thay đổi cấu hình mặc định bằng lệnh sau và lưu ý một số tham số bên dưới:
Lưu và thoát tệp khi hoàn tất.
Tiếp theo, chạy lệnh sau để xác minh cấu hình Consul. Nếu bạn có cú pháp đúng, bạn sẽ nhận được kết quả như sau 'Cấu hình hợp lệ'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22594%22%20height=%22172%22%3E%3C/svg%3E
Bây giờ hãy chạy lệnh bên dưới để bắt đầu và kích hoạt consul dịch vụ.
Sau đó, hãy xác minh consul bằng lệnh sau để đảm bảo dịch vụ chạy.
Trong kết quả sau, bạn sẽ thấy Consul đang chạy trên máy chủ consul1.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22242%22%3E%3C/svg%3E
Trong kết quả sau, bạn sẽ thấy Consul đang chạy trên máy chủ consul2.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22299%22%3E%3C/svg%3E
Trong kết quả sau, bạn sẽ thấy Consul đang chạy trên máy chủ consul3.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22263%22%3E%3C/svg%3E
Trong ví dụ này, cụm Consul bao gồm ba máy chủ, consul1, consul2 và consul3.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22122%22%3E%3C/svg%3E
Bạn cũng có thể xác minh danh sách các đối tác trên Cluster bằng lệnh bên dưới.
Bên dưới, bạn có thể xem thông tin chi tiết về từng máy chủ Consul, bao gồm ID, tiểu bang, cử tri và phiên bản RaftProtocol.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22106%22%3E%3C/svg%3E
Bây giờ hãy chạy lệnh bên dưới để lấy giá trị cho db_name.
Bạn sẽ nhận được giá trị testdb như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22645%22%20height=%22170%22%3E%3C/svg%3E
Trong ví dụ này, bạn đã cấu hình máy chủ Consul trong cụm có cùng tên miền với consul. Sau đây xác nhận rằng miền consul.service.consul với A ghi lại 192.168.10.41, 192.168.10.42, 192.168.10.43.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22646%22%20height=%22477%22%3E%3C/svg%3E
Dưới đây, bạn sẽ thấy các máy chủ có sẵn trong cụm Consul.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22375%22%3E%3C/svg%3E
Bây giờ, hãy nhấp vào menu Nodes để biết thông tin chi tiết về từng máy chủ.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22541%22%3E%3C/svg%3E
Sau đó, nhấp vào menu Khóa/Giá trị để lấy danh sách KV khả dụng trên máy chủ Consul của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22220%22%3E%3C/svg%3E
Từ đây, giờ bạn có thể kích hoạt ACL (Danh sách kiểm soát truy cập) và triển khai TLS cho các kết nối giữa máy chủ Consul và máy khách.
Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn cài đặt Consul Cluster với nhiều máy chủ trên AlmaLinux 9 từng bước.
Điều kiện tiên quyết
Để hoàn tất hướng dẫn này, hãy đảm bảo bạn có những điều sau:- Hai hoặc nhiều máy chủ AlmaLinux trong cùng một mạng.
- Người dùng không phải root có quyền quản trị viên.
Thiết lập hệ thống
Trong bước đầu tiên này, bạn sẽ chuẩn bị máy chủ AlmaLinux của mình để cài đặt Consul, bao gồm:- Cấu hình Firewalld để mở cổng.
- Cấu hình SELinux ở chế độ Permissive.
Cấu hình Firewalld
Trước khi cài đặt các gói, bạn phải mở cổng trên máy chủ Consul của bạn. Đối với hệ điều hành dựa trên RHEL, bạn sẽ sử dụng Firewalld để mở cổng.Thực hiện lệnh bên dưới để mở cổng 8300, 8301, 8302, 8400, 8500 và 8600 trên máy chủ AlmaLinux của bạn. Nếu thành công, bạn sẽ nhận được thông báo như sau: success.
Mã:
sudo firewall-cmd --permanent --zone=public --add-port={8300,8301,8302,8400,8500,8600}/tcp
Mã:
sudo firewall-cmd --reload
Mã:
sudo firewall-cmd --zone=public --list-all
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22256%22%3E%3C/svg%3E
Đổi chế độ SELinux thành Permissive
Sau khi cấu hình firewalld, bạn sẽ đổi chế độ SELinux mặc định thành permissive. Thao tác này sẽ tạo nhật ký lỗi trên SELinux mà không chặn hành động.Thực hiện lệnh sau để thay đổi chế độ SELinux thành cho phép.
Mã:
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Mã:
sudo reboot
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22136%22%3E%3C/svg%3E
Cài đặt Consul qua DNF
Consul là một nền tảng mạng dịch vụ hỗ trợ nhiều hệ điều hành. Ngoài ra, Consul cung cấp kho lưu trữ gói cho các bản phân phối Linux, bao gồm các bản phân phối dựa trên RHEL. Trong bước này, bạn sẽ cài đặt Consul từ kho lưu trữ Consul qua DNF.Để bắt đầu, hãy cài đặt một số gói cơ bản bằng cách thực hiện lệnh sau. Nhập y để tiếp tục cài đặt.
Mã:
sudo dnf install dnf-plugins-core nano
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22194%22%3E%3C/svg%3E
Bây giờ hãy chạy lệnh DNF bên dưới để thêm kho lưu trữ Consul vào máy chủ Alma Linux của bạn. Sau đó, hãy xác minh danh sách các kho lưu trữ khả dụng trên mỗi máy chủ.
Mã:
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo dnf repolist
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22219%22%3E%3C/svg%3E
Tiếp theo, hãy cài đặt Consul bằng cách thực hiện lệnh sau. Nhập y để tiếp tục cài đặt Consul.
Mã:
sudo dnf install consul
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22167%22%3E%3C/svg%3E
Sau khi hoàn tất cài đặt, hãy chạy lệnh sau để định vị tệp nhị phân consul và kiểm tra tệp đó phiên bản.
Mã:
which consul
consul version
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22113%22%3E%3C/svg%3E
Cấu hình Consul
Tại thời điểm này, bạn đã cài đặt Consul trên tất cả các máy chủ AlmaLinux của mình. Hãy bắt đầu cấu hình cụm Consul với nhiều máy chủ mà không cần phải làm gì thêm. Để minh họa, chúng tôi sẽ sử dụng ba máy chủ AlmaLinux.
Mã:
| Hostname | IP Address |
| --------- | -------------- |
| consul1 | 192.168.10.41 |
| consul2 | 192.168.10.42 |
| consul3 | 192.168.10.43 |
Mã:
sudo systemctl stop consul
Mã:
consul keygen
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22447%22%20height=%22113%22%3E%3C/svg%3E
Trong tất cả các máy chủ Consul của bạn, hãy mở cấu hình Consul mặc định /etc/consul.d/consul.hcl bằng trình chỉnh sửa nano sau lệnh.
Mã:
sudo nano /etc/consul.d/consul.hcl
- server: True có nghĩa là nút sẽ hoạt động như một máy chủ Consul.
- advertise_addr: Thay đổi lệnh này bằng địa chỉ IP tương ứng của máy chủ Consul.
- bootstrap_expect: Cụm của bạn sẽ có bao nhiêu máy chủ?
- encrypt: Mọi máy chủ phải có cùng một khóa.
- retry_join: Nhập địa chỉ IP của cụm Consul vào lệnh này tham số.
Mã:
# Full configuration options can be found at https://www.consul.io/docs/agent/config
# datacenter
datacenter = "kitty-dc1"
# data_dir
# This flag provides a data directory for the agent to store state.
data_dir = "/opt/consul"
# client_addr
# The address to which the Consul will bind client interfaces, including the HTTP and DNS
# servers.
client_addr = "0.0.0.0"
# ui
# Enables the built-in web UI server and the required HTTP routes.
ui_config{
enabled = true
}
# default domain
domain = "consul"
# enable dns_config
dns_config{
enable_truncate = true
only_passing = true
}
# server
# This flag is used to control if an agent is in server or client mode. When provided,
# an agent will act as a Consul server. Each Consul cluster must have at least one
# server and ideally no more than 5 per datacenter. All servers participate in the Raft
# consensus algorithm to ensure that transactions occur in a consistent, linearizable
# manner. Transactions modify cluster state, which is maintained on all server nodes to
# ensure availability in the case of node failure. Server nodes also participate in a
# WAN gossip pool with server nodes in other datacenters. Servers act as gateways to
# other datacenters and forward traffic as appropriate.
server = true
# Advertise addr - if you want to point clients to a different address than bind or LB.
advertise_addr = "192.168.10.41"
# bootstrap_expect
# This flag provides the number of expected servers in the datacenter.
bootstrap_expect=3
# encrypt
# Specifies the secret key to use for encryption of Consul network traffic.
encrypt = "jFtV8jj4h1hnXGqTllWH+sOqLo/tw9xnnfDHcVxVnYg="
# retry_join
retry_join = ["192.168.10.41", "192.168.10.42", "192.168.10.43"]
Tiếp theo, chạy lệnh sau để xác minh cấu hình Consul. Nếu bạn có cú pháp đúng, bạn sẽ nhận được kết quả như sau 'Cấu hình hợp lệ'.
Mã:
sudo consul validate /etc/consul.d/
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22594%22%20height=%22172%22%3E%3C/svg%3E
Bây giờ hãy chạy lệnh bên dưới để bắt đầu và kích hoạt consul dịch vụ.
Mã:
sudo systemctl start consul
sudo systemctl enable consul
Mã:
sudo systemctl status consul
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22242%22%3E%3C/svg%3E
Trong kết quả sau, bạn sẽ thấy Consul đang chạy trên máy chủ consul2.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22299%22%3E%3C/svg%3E
Trong kết quả sau, bạn sẽ thấy Consul đang chạy trên máy chủ consul3.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22263%22%3E%3C/svg%3E
Tương tác với Consul Cluster
Bây giờ bạn đã cấu hình cụm Consul trên máy chủ AlmaLinux, bạn có thể xác minh và tương tác với cụm Consul thông qua dòng lệnh consul.Đang kiểm tra cụm Consul
Chạy lệnh bên dưới để kiểm tra máy chủ Consul khả dụng trong cụm.
Mã:
consul members
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22122%22%3E%3C/svg%3E
Bạn cũng có thể xác minh danh sách các đối tác trên Cluster bằng lệnh bên dưới.
Mã:
consul operator raft list-peers
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22106%22%3E%3C/svg%3E
Thêm kho lưu trữ KV (khóa-giá trị) vào Consul
Tiếp theo, chạy lệnh consul sau để tạo cơ sở dữ liệu khóa-giá trị mới. Trong ví dụ này, bạn sẽ tạo một khóa mới db_name với giá trị testdb.
Mã:
consul kv put consul/configuration/db_name testdb
Mã:
consul kv get consul/configuration/db_name
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22645%22%20height=%22170%22%3E%3C/svg%3E
Tương tác với DNS trên Consul
Trong hướng dẫn này, bạn đã bật DNS Consul. Để kiểm tra cấu hình DNS của Consul, hãy sử dụng lệnh dig bên dưới.
Mã:
dig @127.0.0.1 -p 8600 consul.service.consul
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22646%22%20height=%22477%22%3E%3C/svg%3E
Truy cập Giao diện người dùng web Consul (Giao diện người dùng)
Cuối cùng, hãy mở trình duyệt web của bạn và truy cập địa chỉ IP máy chủ Consul có cổng 8500, ví dụ:http://192.168.10.41:8500/ui/ để có bảng điều khiển quản trị web của Consul.Dưới đây, bạn sẽ thấy các máy chủ có sẵn trong cụm Consul.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22375%22%3E%3C/svg%3E
Bây giờ, hãy nhấp vào menu Nodes để biết thông tin chi tiết về từng máy chủ.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22541%22%3E%3C/svg%3E
Sau đó, nhấp vào menu Khóa/Giá trị để lấy danh sách KV khả dụng trên máy chủ Consul của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22220%22%3E%3C/svg%3E
Kết luận
Để kết thúc, bạn đã hoàn tất cài đặt từng bước cụm Consul với ba máy chủ AlmaLinux. Bạn đã bật Consul Web UI và Consul DNS trong cụm. Cuối cùng, bạn cũng đã học một số lệnh cơ bản để tương tác với cụm Consul, kho lưu trữ khóa-giá trị và DNS.Từ đây, giờ bạn có thể kích hoạt ACL (Danh sách kiểm soát truy cập) và triển khai TLS cho các kết nối giữa máy chủ Consul và máy khách.