Consul - Bootstrapping & DNS
Trong chương này, chúng ta sẽ thảo luận về cách các thành phần sau được sử dụng trong Lãnh sự.
- Khởi động tự động
- Khởi động thủ công
- Sử dụng chuyển tiếp DNS
- DNS Cache
Bây giờ chúng ta hãy thảo luận chi tiết từng điều này.
Khởi động tự động
Bootstrapping là một trong những tính năng cốt lõi của Consul. Khi bạn cài đặt lãnh sự lần đầu tiên, nó sẽ tự động được định cấu hình để phát hiện, xác định và tham gia các nút mà nó đi qua. Trong quá trình hình thành cụm, tự động khởi động là một tính năng được tích hợp sẵn của Consul. Để biết thêm thông tin về lãnh sự, cách tốt nhất là sử dụng lệnh dưới đây:
$ sudo consul info
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau.
Lệnh này sẽ hiển thị công việc thực tế của lãnh sự trong real working scenarios. Nó sẽ hiển thị Thuật toán bè đang làm việc trong Lãnh sự. Lệnh khởi động tự động có thể được hiển thị bằng lệnh sau:
$ consul agent -server -data-dir = ”/tmp/consul” -bootstrap-expect 3
Automatic bootstrapping cannot be done in -dev mode.
Tùy chọn này thông báo cho Lãnh sự về số lượng nút máy chủ dự kiến và tự động khởi động khi máy chủ có sẵn.
Khởi động thủ công
Thủ công Bootstrapping là một tính năng cũ và hữu ích của Consul. Trên thực tế, trong phiên bản trước đó của Consul, việc khởi động phải được thực hiện thủ công khi cài đặt và sử dụng consul lần đầu tiên. Sau đó, người ta nhận ra rằng không thể thực hiện thao tác dòng lệnh này vào các thời điểm khác nhau. Do đó, khởi động tự động đã được giới thiệu. Bạn luôn có thể sử dụng bootstrapping theo cách thủ công bằng các lệnh sau.
In this case, we will assume that a 3-node consul cluster is to be built.
Có hai tùy chọn để thực hiện khởi động thủ công
Chạy lệnh trên 2 nút: Trên Node B và Node C, bạn có thể làm như sau:
$ consul join <Node A Address>
Chạy lệnh trên 1 nút -
$ consul join <Node B Address> <Node C Address>
Sử dụng chuyển tiếp DNS
DNS được cung cấp từ port 53. Việc chuyển tiếp DNS có thể được thực hiện bằng cách sử dụngBIND, dnsmasq và iptables. Theo mặc định, đại lý Lãnh sự chạy một máy chủ DNS lắng nghe trên cổng 8600. Bằng cách gửi các yêu cầu DNS đến máy chủ DNS của đại lý Lãnh sự, bạn có thể nhận được địa chỉ IP của một nút đang chạy dịch vụ mà bạn quan tâm.
Giao diện DNS của Lãnh sự cung cấp thông tin cổng cho một dịch vụ thông qua SRV records. Nếu không thêm logic theo cách thủ công trong mã của bạn, bạn thường bị giới hạn ở thông tin địa chỉ IP (tức là bản ghi) của dịch vụ bạn đang truy vấn.
Tùy chọn tốt nhất là có nhiều máy chủ BIND, mỗi máy chủ chạy một đại lý Lãnh sự tại địa phương. Bất kỳ truy vấn nào do máy chủ BIND nhận được sẽ được chuyển tiếp đến Máy chủ DNS của Đại lý Lãnh sự tại địa phương.
Sử dụng Bind
Chúng ta có thể sử dụng Chuyển tiếp DNS bằng chức năng Bind. Nó có thể được thực hiện bằng cách sử dụng lệnh sau.
$ sudo apt-get install bind9 bind9utils bind9-doc
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau.
Hãy để chúng tôi chỉnh sửa tệp /etc/bind/name.conf bằng lệnh sau.
$ sudo vim /etc/bind/named.conf
Trong tệp, vui lòng thêm các dòng sau bên dưới dòng cuối cùng của mã.
options {
directory "/var/cache/bind";
recursion yes;
allow-query { localhost; };
forwarders {
8.8.8.8;
8.8.4.4;
};
dnssec-enable no;
dnssec-validation no;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
include "/etc/bind/consul.conf";
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau.
Bạn có thể sử dụng lệnh Bind sau để cấu hình Consul.
$ sudo vim /etc/bind/consul.conf
Thêm các dòng sau khi bạn tạo tệp -
zone "consul" IN {
type forward;
forward only;
forwarders { 127.0.0.1 port 8600; };
};
Bây giờ bạn có thể bắt đầu điều hành đại lý lãnh sự của mình bằng cách sử dụng lệnh sau. (Hãy nhớ khởi động lại dịch vụ bind9.)
$ sudo service bind9 restart
$ consul agent -server -bootstrap-expect 1 -data-dir = /tmp/consul -configdir = [Path]
Hệ thống cần được định cấu hình để gửi các truy vấn đến máy chủ DNS của đại lý Lãnh sự tại địa phương. Điều này được thực hiện bằng cách cập nhậtresolv.conftệp trên hệ thống trỏ tới 127.0.0.1. Trong hầu hết các trường hợp, Consul sẽ cần được cấu hình để chạy trên cổng 53.
Bạn có thể thêm thông tin sau vào /etc/resolv.conf:
nameserver 127.0.0.1
DNS Cache
Lãnh sự cung cấp tất cả các kết quả DNS với giá trị '0 TTL' (Thời gian tồn tại). Điều này ngăn chặn bất kỳ bộ nhớ đệm nào. Tuy nhiên, do các giá trị TTL, nó có thể được đặt để cho phép các kết quả DNS được lưu vào bộ nhớ cache với phía dưới của Lãnh sự. Giá trị TTL cao hơn làm giảm số lượng tra cứu trên máy chủ Lãnh sự và tăng tốc độ tra cứu cho khách hàng, với chi phí là kết quả ngày càng cũ.
Vì mục đích này, chúng tôi sẽ sử dụng bộ đệm DNS bằng phương pháp bên dưới:
$ sudo apt-get install dnsmasq
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau.
Bây giờ, chúng ta có thể thực hiện một cấu hình rất đơn giản -
$ echo "server = /consul/127.0.0.1#8600" > /etc/dnsmasq.d/10-consul
Tất cả những gì chúng tôi đang làm ở đây là chỉ định rằng các yêu cầu DNS đối với dịch vụ lãnh sự, sẽ được xử lý bởi máy chủ DNS tại 127.0.0.1 trên cổng 8600. Trừ khi bạn thay đổi mặc định của lãnh sự, điều này sẽ hoạt động.
Trong trường hợp bình thường, lệnh sau nên được sử dụng.
$ dig @127.0.0.1 -p 8600 web.service.consul
Với Dnsmasq, bạn nên sử dụng lệnh sau.
$ dig web.service.consul
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau.