Lãnh sự - Hướng dẫn nhanh
Consul là một công cụ dựa trên Hashicorp để khám phá và định cấu hình nhiều loại dịch vụ khác nhau trong cơ sở hạ tầng của bạn. Nó dựa trên Golang. Một trong những lý do cốt lõi để xây dựng Consul là duy trì các dịch vụ hiện có trong hệ thống phân tán. Một số tính năng quan trọng mà Consul cung cấp như sau.
Service Discovery - Sử dụng DNS hoặc HTTP, các ứng dụng có thể dễ dàng tìm thấy các dịch vụ mà chúng phụ thuộc vào.
Health Check Status- Nó có thể cung cấp bất kỳ số lượng kiểm tra sức khỏe. Nó được sử dụng bởi các thành phần khám phá dịch vụ để định tuyến lưu lượng truy cập khỏi các máy chủ không lành mạnh.
Key/Value Store - Nó có thể sử dụng kho khóa / giá trị phân cấp của Lãnh sự cho bất kỳ mục đích nào, bao gồm cấu hình động, gắn cờ tính năng, điều phối, bầu cử lãnh đạo, v.v.
Multi Datacenter Deployment- Lãnh sự hỗ trợ nhiều trung tâm dữ liệu. Nó được sử dụng để xây dựng các lớp trừu tượng bổ sung để phát triển đến nhiều vùng.
Web UI - Consul cung cấp cho người dùng một giao diện web đẹp, dễ sử dụng và quản lý tất cả các tính năng trong lãnh sự.
Khám phá dịch vụ
Khám phá dịch vụ là một trong những tính năng quan trọng nhất của Lãnh sự. Nó được định nghĩa là việc phát hiện các dịch vụ và giao thức mạng khác nhau sử dụng một dịch vụ được tìm thấy. Việc sử dụng khám phá dịch vụ mang lại lợi ích cho các hệ thống phân tán. Đây là một trong những vấn đề chính mà các ngành công nghiệp quy mô lớn ngày nay phải đối mặt với sự tiến bộ của các hệ thống phân tán trong môi trường của chúng.
So sánh với Etcd và Zookeeper
Khi xem xét các công cụ khám phá dịch vụ khác trong miền này, chúng tôi có hai tùy chọn phổ biến. Một số công ty lớn trong ngành công nghiệp phần mềm đã sử dụng nó trong quá khứ. Những công cụ này làEtcd và Zookeeper.
Chúng ta hãy xem xét bảng sau để so sánh các khía cạnh khác nhau của từng công cụ. Chúng tôi cũng sẽ hiểu những gì mỗi người trong số họ sử dụng nội bộ.
Tính chất | Lãnh sự | Vv | Người giữ vườn thú |
---|---|---|---|
Giao diện người dùng | Có sẵn |
|
|
RPC | Có sẵn | Có sẵn |
|
Kiểm tra sức khỏe | API HTTP | API HTTP | TCP |
Giá trị cốt lõi | 3 chế độ nhất quán | Tính nhất quán tốt | Tính nhất quán mạnh mẽ |
Hệ thống mã thông báo | Có sẵn |
|
|
Ngôn ngữ | Golang | Golang | Java |
Lãnh sự - Thành viên và Đại lý
Các thành viên lãnh sự có thể được định nghĩa là danh sách các đại lý và chế độ máy chủ khác nhau sử dụng mà một cụm lãnh sự được triển khai. Lãnh sự cung cấp cho chúng tôi một tính năng dòng lệnh bằng cách sử dụng chúng tôi có thể dễ dàng liệt kê tất cả các đại lý liên quan đến lãnh sự.
Đại lý lãnh sự là quy trình cốt lõi của Lãnh sự. Tác nhân duy trì thông tin thành viên, đăng ký dịch vụ, chạy kiểm tra, trả lời các truy vấn, v.v. Bất kỳ tác nhân nào cũng có thể chạy ở một trong hai chế độ:Client hoặc là Server. Hai chế độ này có thể được sử dụng tùy theo vai trò đã được quyết định khi sử dụng lãnh sự. Đại lý lãnh sự giúp đỡ bằng cách cung cấp cho chúng tôi thông tin được liệt kê dưới đây.
Node name - Đây là tên máy chủ của máy.
Datacenter- Trung tâm dữ liệu mà tác nhân được cấu hình để chạy. Mỗi nút phải được định cấu hình để báo cáo đến trung tâm dữ liệu của nó.
Server- Nó cho biết tác nhân đang chạy ở chế độ máy chủ hay máy khách. Các nút máy chủ tham gia vào túc số đồng thuận, lưu trữ trạng thái cụm và xử lý các truy vấn.
Client Addr- Đây là địa chỉ được sử dụng cho các giao diện máy khách bởi tác nhân. Nó bao gồm các cổng cho giao diện HTTP, DNS và RPC.
Cluster Addr- Đây là địa chỉ và tập hợp các cổng được sử dụng để liên lạc giữa các Đại lý Lãnh sự trong một cụm. Tất cả các nút khác phải truy cập được địa chỉ này.
Trong chương tiếp theo, chúng ta sẽ hiểu về kiến trúc dành cho Lãnh sự.
Sơ đồ kiến trúc cho lãnh sự làm việc trong một trung tâm dữ liệu có thể được mô tả tốt nhất như hình dưới đây:
Như chúng ta có thể quan sát, có ba máy chủ khác nhau, được quản lý bởi Lãnh sự. Kiến trúc làm việc hoạt động bằng cách sử dụng thuật toán bè, giúp chúng tôi bầu ra một nhà lãnh đạo trong số ba máy chủ khác nhau. Các máy chủ này sau đó được gắn nhãn theo các thẻ nhưFollower và Leader. Đúng như tên gọi, người theo dõi có trách nhiệm tuân theo các quyết định của người lãnh đạo. Tất cả ba máy chủ này được kết nối thêm với nhau để giao tiếp.
Mỗi máy chủ tương tác với máy khách của chính nó bằng cách sử dụng khái niệm RPC. Có thể giao tiếp giữa các khách hàng doGossip Protocolnhư đã đề cập bên dưới. Giao tiếp với thiết bị internet có thể được thực hiện bằng cách sử dụng TCP hoặc phương pháp giao tiếp tin đồn. Giao tiếp này tiếp xúc trực tiếp với bất kỳ máy chủ nào trong ba máy chủ.
Thuật toán bè
Raft là một thuật toán đồng thuận để quản lý một bản ghi sao chép. Nó dựa trên nguyên tắcCAP Theorem, trong đó nói rằng khi có phân vùng mạng, người ta phải lựa chọn giữa tính nhất quán và tính khả dụng. Không phải tất cả ba nguyên tắc cơ bản của Định lý CAP đều có thể đạt được tại bất kỳ thời điểm nào. Người ta phải đánh đổi để có được hai thứ tốt nhất.
A Raft Clusterchứa một số máy chủ, thường là số lẻ. Ví dụ, nếu chúng tôi có năm máy chủ, nó sẽ cho phép hệ thống chịu đựng được hai lỗi. Tại bất kỳ thời điểm nào, mỗi máy chủ ở một trong ba trạng thái:Leader, Follower, hoặc là Candidate. Trong một hoạt động bình thường, có đúng một người lãnh đạo và tất cả các máy chủ khác đều là người theo dõi. Những người theo dõi này ở trong trạng thái bị động, tức là họ không tự mình đưa ra yêu cầu mà chỉ cần đáp ứng yêu cầu từ lãnh đạo và ứng viên.
Hình minh họa sau đây mô tả mô hình quy trình làm việc sử dụng thuật toán bè -
Dữ liệu giá trị chính
Kể từ phiên bản 0.7.1 của Lãnh sự, đã có phần giới thiệu dữ liệu giá trị khóa riêng biệt. Lệnh KV được sử dụng để tương tác với kho khóa-giá trị của Lãnh sự thông qua dòng lệnh. Nó hiển thị các lệnh cấp cao nhất choInserting, Updating, Reading và Deletingtừ cửa hàng. Để có được kho lưu trữ đối tượng Khóa / Giá trị, chúng tôi gọi phương thức KV có sẵn cho khách hàng lãnh sự -
kv := consul.KV()
Các KVPair Structuređược sử dụng để đại diện cho một mục nhập khóa / giá trị duy nhất. Chúng ta có thể xem cấu trúc của Consul KV Pair trong chương trình sau.
type KVPair struct {
Key string
CreateIndex uint64
ModifyIndex uint64
LockIndex uint64
Flags uint64
Value []byte
Session string
}
Ở đây, các cấu trúc khác nhau được đề cập trong đoạn mã trên có thể được định nghĩa như sau:
Key- Đó là một tên URL gạch chéo. Ví dụ - trang web / 1 / miền.
CreateIndex - Số chỉ mục được gán khi khóa lần đầu tiên được tạo.
ModifyIndex - Số chỉ mục được chỉ định khi khóa được cập nhật lần cuối.
LockIndex - Số chỉ mục được tạo khi có một khóa mới trên mục nhập khóa / giá trị
Flags - Nó có thể được ứng dụng sử dụng để đặt giá trị tùy chỉnh.
Value - Đây là một mảng byte tối đa 512kb.
Session - Nó có thể được thiết lập sau khi tạo một đối tượng phiên.
Các loại giao thức
Có hai loại giao thức trong Lãnh sự, được gọi là -
- Giao thức đồng thuận và
- Gossip Protocol
Bây giờ chúng ta hãy hiểu chúng một cách chi tiết.
Giao thức đồng thuận
Giao thức đồng thuận được Lãnh sự sử dụng để cung cấp Tính nhất quán như được mô tả bởi Định lý CAP. Giao thức này dựa trên Thuật toán Raft. Khi triển khai giao thức Đồng thuận, Thuật toán bè được sử dụng khi các nút bè luôn ở bất kỳ một trong ba trạng thái: Người theo dõi, Ứng cử viên hoặc Nhà lãnh đạo.
Gossip Protocol
Giao thức gossip có thể được sử dụng để quản lý tư cách thành viên, gửi và nhận tin nhắn trên toàn cụm. Trong lãnh sự, việc sử dụng giao thức buôn chuyện xảy ra theo hai cách,WAN (Mạng vùng không dây) và LAN(Mạng lưới khu vực địa phương). Có ba thư viện đã biết, có thể triển khai Thuật toán Gossip để khám phá các nút trong mạng ngang hàng -
teknek-gossip - Nó hoạt động với UDP và được viết bằng Java.
gossip-python - Nó sử dụng ngăn xếp TCP và cũng có thể chia sẻ dữ liệu qua mạng được xây dựng.
Smudge - Nó được viết bằng Go và sử dụng UDP để trao đổi thông tin trạng thái.
Các giao thức gossip cũng đã được sử dụng để đạt được và duy trì tính nhất quán của cơ sở dữ liệu phân tán hoặc với các loại dữ liệu khác ở trạng thái nhất quán, đếm số lượng nút trong mạng có kích thước không xác định, lan truyền tin tức mạnh mẽ, tổ chức các nút, v.v.
Cuộc gọi thủ tục từ xa
RPC có thể được ký hiệu là dạng rút gọn cho các cuộc gọi thủ tục từ xa. Nó là một giao thức mà một chương trình sử dụng để yêu cầu một dịch vụ từ một chương trình khác. Giao thức này có thể được đặt trong một máy tính khác trên mạng mà không cần phải xác nhận các chi tiết mạng.
Vẻ đẹp thực sự của việc sử dụng RPC trong Consul là nó giúp chúng tôi tránh được các vấn đề về độ trễ mà hầu hết các công cụ dịch vụ khám phá đã gặp phải cách đây một thời gian. Trước RPC, Lãnh sự thường chỉ cóTCP và UDPdựa trên kết nối, tốt với hầu hết các hệ thống, nhưng không tốt với trường hợp hệ thống phân tán. RPC giải quyết những vấn đề như vậy bằng cách giảm khoảng thời gian chuyển thông tin gói từ nơi này sang nơi khác. Trong lĩnh vực này, GRPC của Google là một công cụ tuyệt vời để mong đợi trong trường hợp một người muốn quan sát các điểm chuẩn và so sánh hiệu suất.
Đối với mục đích trình diễn, chúng tôi sẽ sử dụng đại lý lãnh sự ở chế độ nhà phát triển bằng cách sử dụng chế độ -dev. Chỉ đối với thiết lập máy cục bộ, chúng tôi sẽ thực hiện một thiết lập lãnh sự hệ thống duy nhất.Please do not use this single node consul cluster in your production. Như Hashicorp đã đề cập đến nó trong trường hợp một cụm lãnh sự nút duy nhất,the data loss is inevitable.
Cài đặt Lãnh sự
Có thể cài đặt Consul thông qua trang Tải xuống tại www.consul.io/downloads.html
Bạn có thể giải nén gói nhị phân trong phần Tải xuống của máy.
$ cd Downloads $ chmod +x consul
$ sudo mv consul /usr/bin/
Bây giờ chúng ta hãy bắt đầu sử dụng lãnh sự bằng cách sử dụng -dev flag.
$ consul agent -dev -data-dir=/tmp/consul
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Bây giờ bạn có thể kiểm tra các thành viên lãnh sự của mình bằng lệnh sau.
$ consul members
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Nếu bạn muốn tham gia các nút khác vào nút này -
$ consul join <Node 2> <Node 3>
Ngoài ra, bạn có thể chạy lệnh sau trên Node 2 & 3:
$ consul join <Node 1>
Sử dụng dòng lệnh
Dòng lệnh lãnh sự bao gồm một số tùy chọn khác nhau, một số tùy chọn thường được sử dụng nhất như sau:
agent - điều hành một đại lý Lãnh sự.
configtest - để xác thực một tệp cấu hình.
event - để bắt đầu một sự kiện mới.
exec - để thực hiện một lệnh trên các nút Lãnh sự.
force-leave - buộc một thành viên của cụm rời khỏi cụm.
info - nó cung cấp cho chúng tôi thông tin gỡ lỗi cho các nhà khai thác.
join - để làm cho một đại lý Lãnh sự tham gia cụm.
keygen - để tạo khóa mã hóa mới.
keyring - để quản lý các khóa mã hóa lớp tin đồn.
kv - để tương tác với kho khóa-giá trị.
leave - rời khỏi cụm Lãnh sự và tắt nó mà không cần cưỡng chế.
lock - để thực hiện lệnh nhấn giữ một khóa.
maint - để điều khiển nút hoặc chế độ bảo trì dịch vụ.
members - nó liệt kê các thành viên của một cụm Lãnh sự.
monitor - nó truyền nhật ký từ một đại lý Lãnh sự.
operator - nó cung cấp cho chúng tôi một cụm công cụ cho các nhà điều hành Lãnh sự.
reload - nó kích hoạt tác nhân tải lại các tệp cấu hình.
rtt - nó ước tính thời gian vòng quanh mạng giữa các nút.
snapshot - nó lưu, khôi phục và kiểm tra ảnh chụp nhanh của trạng thái máy chủ Lãnh sự.
version - để in phiên bản Lãnh sự hiện tại.
watch - Để xem những thay đổi trong Lãnh sự.
Mẫu lãnh sự
Consul-template cung cấp cho chúng ta một daemon truy vấn cá thể Consul và cập nhật bất kỳ số lượng mẫu cụ thể nào trên hệ thống tệp. Mẫu lãnh sự có thể tùy chọn chạy các lệnh tùy ý khi quá trình cập nhật hoàn tất. Tùy chọn này giúp chúng tôi thiết lập cụm lãnh sự mà không cần tự làm mọi thứ theo cách thủ công.
Mẫu lãnh sự sẽ được thành lập tại /tmp/<name-of-file>.conf.tmpfl. Ngôn ngữ mà mẫu được viết theoHashicorp Configuration Language (HCL).
Bạn có thể tải xuống mẫu lãnh sự từ trang này .
Hãy thử bằng cách sử dụng lệnh sau:
$ ./consul-template -h
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Nếu bạn muốn di chuyển tệp nhị phân này sang một không gian nổi bật hơn, để nó luôn có sẵn cho người dùng. Bạn có thể nhập các lệnh sau:
$ chmod +x consul-template $ sudo mv consul-template /usr/share/bin/
Đối với mục đích demo, chúng tôi sẽ sử dụng cấu hình mẫu của nginxđể được sử dụng như dịch vụ của chúng tôi. Bạn có thể thử thêm các bản demo khác tạihttps://github.com/hashicorp/consul-template/tree/master/examples hoặc tốt hơn là viết ra mẫu của riêng bạn.
$ vim /tmp/nginx.conf.ctmpl
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Tệp cấu hình có thể giống như sau:
{{range services}} {{$name := .Name}} {{$service := service .Name}} upstream {{$name}} {
zone upstream-{{$name}} 64k; {{range $service}}server {{.Address}}:{{.Port}} max_fails = 3 fail_timeout = 60
weight = 1;
{{else}}server 127.0.0.1:65535; # force a 502{{end}}
} {{end}}
server {
listen 80 default_server;
location / {
root /usr/share/nginx/html/;
index index.html;
}
location /stub_status {
stub_status;
}
{{range services}} {{$name := .Name}} location /{{$name}} {
proxy_pass http://{{$name}};
}
{{end}}
}
Bây giờ sử dụng tệp nhị phân mẫu lãnh sự, vui lòng chạy các lệnh sau:
$ consul-template \
-template = "/tmp/nginx.conf.ctmpl:/etc/nginx/conf.d/default.conf"
Với lệnh trước, quá trình đã bắt đầu. Sau đó, bạn có thể mở một thiết bị đầu cuối khác và xem tệp nginx.conf đang được hiển thị hoàn toàn bằng lệnh sau.
$ cat /etc/nginx/conf.d/default.conf
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Trong chương này, chúng ta sẽ hiểu cách thức hoạt động của Microservices với Consul. Chúng ta cũng sẽ tìm hiểu cách các thành phần sau đây ảnh hưởng đến Lãnh sự.
- Sử dụng docker
- Tòa nhà đăng ký để khám phá dịch vụ
- Sử dụng rkt và Nomad
Bây giờ chúng ta hãy thảo luận chi tiết từng điều này.
Sử dụng Docker
Trước khi bắt đầu, please do not use this setup in productionvì nó chỉ được sử dụng cho mục đích demo. Docker là một dịch vụ dựa trên vùng chứa mà chúng ta có thể dễ dàng triển khai các ứng dụng của mình. Để sử dụng Consul, chúng ta sẽ sử dụng hình ảnh tại liên kết sau –0
https://hub.docker.com/r/progrium/consul/.
Nó được giả định rằng hệ thống của bạn đã được cài đặt và cấu hình đúng Docker. Hãy để chúng tôi thử kéo hình ảnh xuống từ trung tâm Docker, bằng cách chạy lệnh sau:
$ docker pull progrium/consul
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Chúng tôi sẽ xuất bản một số giao diện với các cổng của chúng (sử dụng tùy chọn -p trên Docker) theo cách sau.
- 8400 (RPC)
- 8500 (HTTP)
- 8600 (DNS)
Cũng theo như kéo được thực hiện, chúng tôi sẽ đặt tên của tên máy chủ là node1.Bạn có thể thay đổi nó thành bất kỳ thứ gì bạn muốn bằng cách sử dụng -h flag với một số tên máy chủ của riêng bạn như hình dưới đây.
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Bạn cũng có thể bật chế độ Giao diện người dùng cho Lãnh sự bằng cách sử dụng -
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap -ui-dir /ui
Bạn có thể kiểm tra đầu ra dựa trên giao diện người dùng trên http://localhost:8500. Ảnh chụp màn hình sau cung cấp cho bạn ý tưởng tốt hơn về đầu ra dựa trên giao diện người dùng.
Để sử dụng consul trên các thùng chứa docker khác nhau trên các nút khác nhau, chúng ta có thể chạy các lệnh sau trên các nút khác nhau:
Trên Node1
$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
Ở đâu, -bootstrap-expect 3 có nghĩa là máy chủ lãnh sự sẽ đợi cho đến khi có 3 đồng nghiệp được kết nối trước khi tự khởi động và trở thành một cụm làm việc.
Trước khi tiếp tục, chúng ta cần lấy IP nội bộ của vùng chứa bằng cách kiểm tra vùng chứa. Đối với mục đích sử dụng của chúng tôi, trường hợp, chúng tôi sẽ khai báo$ JOIN_IP.
$ JOIN_IP = "$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
Trên Node2
Vì vậy, chúng ta hãy khởi động Node2 và bảo nó tham gia Node1 bằng cách sử dụng biến được khai báo trong chương trình ở trên.
$docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
Trên Node3
$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
Tòa nhà đăng ký để khám phá dịch vụ
Nhà đăng ký tự động đăng ký và hủy đăng ký dịch vụ cho bất kỳ vùng chứa Docker nào bằng cách kiểm tra các vùng chứa khi chúng trực tuyến. Nhà đăng ký mà chúng tôi sắp sử dụng hiện hỗ trợ các đăng ký dịch vụ có thể cắm thêm, hiện bao gồmConsul, Etcd và SkyDNS2. Việc sử dụng Nhà đăng ký rất được khuyến khích khi chúng ta đang tương tác với các dịch vụ khác nhau qua mạng.
$ docker pull gliderlabs/registrator:latest
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
$ docker run -d \
--name = registrator \
--net = host \
--volume = /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
consul://localhost:8500
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Đầu ra bạn đã nhận được là ID của Docker Container mà bạn vừa bắt đầu. Bạn có thể kiểm tra xem vùng chứa có đang chạy hay không bằng cách sử dụng lệnh -
$ docker ps -a
đầu ra của anh ấy sẽ được hiển thị trong ảnh chụp màn hình sau.
Bạn cũng có thể xem nhật ký của Người đăng ký bằng cách sử dụng lệnh sau.
$ docker logs registrator
Sử dụng rkt và Nomad
Rkt là một dịch vụ dựa trên vùng chứa khác mà bạn có thể sử dụng trong môi trường của mình. Nó được xây dựng bởiCoreOS. Lý do chính của việc xây dựng rkt là để cải thiện tính bảo mật vốn là một trong những vấn đề khủng hoảng đối với Docker khi nó vẫn đang được phát triển vào năm 2013-14.
Đối với Lãnh sự, chúng tôi có thể sử dụng Cơ quan đăng ký Rkt để làm việc về việc khám phá dịch vụ với Lãnh sự. Dự án Đăng ký cụ thể này, được bảo hiểm cho rkt đang được phát triển vànot recommended for production level use.
Bạn có thể kiểm tra xem rkt đã được cài đặt hay chưa, bằng cách truy cập đường dẫn của nó và chạy lệnh sau.
$ ./rkt
Bạn có thể kiểm tra đầu ra để kiểm tra xem nó có được cài đặt đúng hay không như trong ảnh chụp màn hình sau.
Để thử rkt và Lãnh sự, vui lòng kiểm tra - https://github.com/r3boot/rkt-registrator.
Công cụ du mục
Một trong những tùy chọn được sử dụng phổ biến nhất và được yêu thích là công cụ Nomad. Nomad là một công cụ để quản lý một cụm máy và chạy các ứng dụng trên chúng. Nó tương tự nhưMesos hoặc là Kubernetes. Theo mặc định, Nomad bao gồm trình điều khiển Docker và rkt trong chính nó. Vì vậy, nếu bạn đang muốn triển khai quy mô lớn các container với Consul. Nomad có thể là một giải pháp tốt cho nó. Kiểm tra -https://www.nomadproject.io/docs/drivers/rkt.html để biết thêm thông tin về Nomad.
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 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 đây.
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 Raft 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ách sử dụ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à một 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ự cục bộ. 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 đây.
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 đây.
Bạn có thể sử dụng lệnh Bind sau đây để 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 chạy đạ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 cấu hình để gửi các truy vấn đến máy chủ DNS của đại lý Lãnh sự đị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ới mục đích này, chúng tôi sẽ sử dụng bộ nhớ đệ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 đây.
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 đây.
Trong chương này, chúng ta sẽ học cách truy vấn các nút với các hàm sau:
- Sử dụng đào
- Sử dụng lệnh Màn hình
- Sử dụng lệnh Watch
- Bằng cách đăng ký các dịch vụ bên ngoài
Hãy để chúng tôi hiểu chi tiết từng chức năng này.
Sử dụng Đào
Lãnh sự lắng nghe trên 127.0.0.1:8600 cho các truy vấn DNS trong lãnh sự. Cách nó xác định các nút có sẵn để cung cấp dịch vụ là sử dụng các kiểm tra có thể là -
Tập lệnh được thực thi và nó trả về nagios compliant code.
Kiểm tra HTTP trả về mã phản hồi HTTP.
Kiểm tra TCP đang kiểm tra xem một cổng có đang mở hay không.
Lệnh chung để thử dig là -
$ dig @127.0.0.1 -p <port> <service-name>.consul
Bây giờ, hãy để chúng tôi thử một mẫu dig lệnh -
$ dig @127.0.0.1 -p 8600 web.service.consul
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Sử dụng Lệnh Màn hình
Nó được sử dụng để kết nối và hiển thị nhật ký của một đại lý Lãnh sự đang hoạt động. Lệnh này sẽ hiển thị các bản ghi gần đây. Nó cũng cho phép bạn đăng nhập đại lý ở cấp độ đăng nhập tương đối cao. Nó bao gồm các cấp độ nhật ký khác nhau mà bạn có thể theo dõi, chẳng hạn như - Theo dõi, Gỡ lỗi, Thông tin, Cảnh báo và Lỗi.
Hãy để chúng tôi thử lệnh sau:
$ consul monitor
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Bạn cũng có thể đặt lệnh giám sát bằng các lệnh con như -log-level và -rpc-address. Theo mặc định, địa chỉ của RPC là 127.0.0.1:8400. Để biết thêm thông tin, bấm vào đây .
Sử dụng lệnh Watch
Lệnh này cung cấp cho chúng ta một cơ chế để theo dõi các thay đổi trong danh sách các nút, thành viên dịch vụ, giá trị khóa, v.v. Nó cũng gọi một quy trình với các giá trị mới nhất của khung nhìn. Nếu không có quy trình nào được chỉ định, các giá trị hiện tại được xử lý thànhSTDOUT, đây có thể là một cách hữu ích để kiểm tra dữ liệu trong Lãnh sự. Trợ giúp của Consul Watch Command có nhiều tùy chọn khác nhau như được hiển thị trong ảnh chụp màn hình sau:
Hãy để chúng tôi thử bản demo với -type = service như được hiển thị trong lệnh sau.
$ consul watch -type = service -service = consul
Để biết thêm thông tin về chủ đề này, bạn có thể bấm vào đây .
Bằng cách đăng ký các dịch vụ bên ngoài
Sau khi đăng ký, giao diện DNS sẽ có thể trả về 'Bản ghi A' hoặc Bản ghi CNAME thích hợp cho dịch vụ. Hãy để chúng tôi đăng ký một dịch vụ bên ngoài, chẳng hạn như Amazon như được hiển thị trong khối mã sau và cả ảnh chụp màn hình.
$ sudo curl -X PUT -d '{"Datacenter": "dc1", "Node": "amazon",
"Address": "www.amazon.com",
"Service": {"Service": "shop", "Port": 80}}'
http://127.0.0.1:8500/v1/catalog/register
Lệnh trên chỉ định một dịch vụ được gọi là cửa hàng. Node này được gọi là amazon với URL của nó có sẵn tại www.amazon.com trên Cổng 80. Hãy để chúng tôi kiểm tra kết quả đầu ra của lãnh sự để đảm bảo rằng chúng tôi đã cài đặt đúng dịch vụ này. Đối với điều này, vui lòng mở cửa sổ trình duyệt tại localhost: 8500.
Để loại bỏ dịch vụ, chúng ta có thể chỉ cần sử dụng lệnh sau.
$ curl -X PUT -d '{"Datacenter": "dc1", "Node": "amazon"}'
http://127.0.0.1:8500/v1/catalog/deregister
Hãy để chúng tôi kiểm tra giao diện người dùng cho nó như được hiển thị trong ảnh chụp màn hình sau.
Trong chương này, chúng ta sẽ tìm hiểu về Các Sự kiện Chuyển đổi Dự phòng trong Lãnh sự. Điều này sẽ được thực hiện với sự trợ giúp của các chức năng sau:
- Lỗi cụm đơn
- Thử nghiệm Jepsen
- Lỗi nhiều cụm
- Chụp ảnh nhanh
Hãy để chúng tôi hiểu chi tiết từng điều này.
Lỗi cụm đơn
Trong một lỗi cụm duy nhất, cụm được đặt trong một trong các trung tâm dữ liệu bắt đầu bị lỗi. Trong mọi tình huống, điều quan trọng là phải đảm bảo rằng trong trường hợp chuyển đổi dự phòng, hệ thống không thể ngăn chặn nó mà còn có một bản sao lưu mà nó có thể dựa vào. Để ngăn chặn các sự kiện Chuyển đổi Lãnh sự, chúng tôi sẽ sử dụng một thứ được gọi là Cảnh báo Lãnh sự. Dự án chính có thể được tìm thấy tại -https://github.com/AcalephStorage/consul-alerts.
Consul-alerts là một daemon rất sẵn có để gửi thông báo và nhắc nhở dựa trên kiểm tra sức khỏe của Lãnh sự. Dự án này chạy daemon và API tại localhost: 9000 và kết nối với đại lý lãnh sự địa phương (localhost: 8500) bằng trung tâm dữ liệu mặc định (dc1).
Có hai phương pháp để bắt đầu với dự án. Phương pháp đầu tiên là cài đặt nó quaGO. Đối với người dùng, những người đã cài đặt và định cấu hình GO, họ có thể làm theo các bước dưới đây:
$ go get github.com/AcalephStorage/consul-alerts $ go install
$ consul-alerts start
Lệnh cuối cùng có thể dễ dàng được sử dụng để ghi đè các cổng mặc định cho cảnh báo lãnh sự, tùy chọn trung tâm dữ liệu, mã thông báo lãnh sự, v.v. Lệnh này cũng có thể được viết như dưới đây:
$ consul-alerts start --alert-addr = localhost:9000 --consul-addr = localhost:8500
--consul-dc = dc1 --consul-acl-token = ""
Phương pháp thứ hai liên quan đến người dùng sử dụng Docker. Cả hai phương pháp đều hữu ích như nhau trong các tình huống khác nhau. Để sử dụng Consul-alerts qua Docker, hãy để chúng tôi lấy hình ảnh từ Docker Hub bằng cách sử dụng lệnh sau.
$ docker pull acaleph/consul-alerts
Đối với phương pháp Docker, chúng ta có thể xem xét ba tùy chọn sau:
- Sử dụng Consul Agent được tích hợp sẵn trong thùng chứa.
- Sử dụng Đại lý lãnh sự chạy trên Vùng chứa Docker khác.
- Sử dụng Cảnh báo Lãnh sự để liên kết qua Trường hợp Lãnh sự Từ xa.
Bây giờ chúng ta hãy thảo luận chi tiết về cả hai điều này.
Sử dụng Consul Agent được tích hợp sẵn trong container
Hãy để chúng tôi bắt đầu đại lý lãnh sự bằng lệnh sau:
$ docker run -ti \
--rm -p 9000:9000 \
--hostname consul-alerts \
--name consul-alerts \
--entrypoint = /bin/consul \
acaleph/consul-alerts \
agent -data-dir /data -server -bootstrap -client = 0.0.0.0
Ở đây, chúng tôi đang ghi đè entrypoint cho Lãnh sự như được đề cập bởi cờ --entrypoint. Cùng với nó, chúng tôi đang khởi động máy khách bằng cách đề cập đến cổng được sử dụng bằng cách sử dụng-p flag, data directory /data sử dụng cờ -data-dir và ứng dụng khách là 0.0.0.0.
Trên cửa sổ đầu cuối mới, hãy để chúng tôi bắt đầu tùy chọn cảnh báo lãnh sự.
$ docker exec -ti consul-alerts /bin/consul-alerts start --alertaddr = 0.0.0.0:9000
--log-level = info --watch-events --watch-checks
Ở đây, trong các bước trên, chúng tôi đang thực hiện các cảnh báo lãnh sự để bắt đầu ở chế độ tương tác. Cổng địa chỉ cảnh báo được đề cập là 9000. Đồng hồ kiểm tra xem các đại lý lãnh sự có được bật hay không cùng với việc kiểm tra lãnh sự.
Chúng ta có thể thấy rõ ràng rằng các cảnh báo của lãnh sự đã dễ dàng bắt đầu và nó đã đăng ký một cuộc kiểm tra sức khỏe mới với sự bổ sung của đại lý lãnh sự. Trung tâm dữ liệu được lấy là dc1, có thể thay đổi tùy theo người dùng.
Sử dụng Đại lý lãnh sự chạy trên Vùng chứa Docker khác
Tại đây, bạn có thể sử dụng bất kỳ loại hình ảnh lãnh sự nào để chạy trên Docker Container. Sử dụng hình ảnh thông báo lãnh sự, chúng ta có thể dễ dàng liên kết thùng chứa lãnh sự với thùng thông báo lãnh sự. Điều này được thực hiện bằng cách sử dụng--link flag.
Note - Trước khi sử dụng lệnh sau, vui lòng đảm bảo rằng container lãnh sự đã chạy trên một thiết bị đầu cuối khác.
$ docker run -ti \
-p 9000:9000 \
--hostname consul-alerts \
--name consul-alerts \
--link consul:consul \
acaleph/consul-alerts start \
--consul-addr=consul:8500 \
--log-level = info --watch-events --watch-checks
Sử dụng Cảnh báo Lãnh sự để liên kết qua một Trường hợp Lãnh sự Từ xa
Ở đây, chúng ta nên sử dụng lệnh sau để sử dụng Consul-alerts để liên kết qua một trường hợp lãnh sự từ xa.
$ docker run -ti \
-p 9000:9000 \
--hostname consul-alerts \
--name consul-alerts \
acaleph/consul-alerts start \
--consul-addr = remote-consul-server.domain.tdl:8500 \
--log-level = info --watch-events --watch-checks
Thử nghiệm Jepsen
Jespen là một công cụ được viết để kiểm tra khả năng chịu đựng một phần và kết nối mạng trong bất kỳ hệ thống nào. Nó kiểm tra hệ thống bằng cách tạo ra một số hoạt động ngẫu nhiên trên hệ thống.Jepsen is written in Clojure. Thật không may, đối với bản demo, thử nghiệm Jepsen yêu cầu mức độ hình thành cụm rất lớn với các hệ thống cơ sở dữ liệu và do đó không nằm ngoài phạm vi được đề cập ở đây.
Jepsen hoạt động bằng cách thiết lập kho dữ liệu đang được thử nghiệm trên năm máy chủ khác nhau. Nó tạo ra một máy khách, cho kho dữ liệu đang được thử nghiệm, trỏ từng nút trong số năm nút để gửi yêu cầu. Nó cũng tạo ra một loạt (các) ứng dụng khách đặc biệt được gọi là “Nemesis”, tàn phá trong cụm như, cắt liên kết giữa các nút bằng cách sử dụngiptables. Sau đó, nó tiếp tục thực hiện các yêu cầu đồng thời đối với các nút khác nhau trong khi luân phiên phân vùng và chữa lành mạng.
Khi kết thúc quá trình chạy thử nghiệm, nó chữa lành cụm, chờ cụm phục hồi và sau đó xác minh xem trạng thái trung gian và cuối cùng của hệ thống có như mong đợi hay không. Một số đoạn trích đã được lấy từ đây .
Để biết thêm thông tin về Thử nghiệm Jepsen, hãy xem tại đây .
Lỗi nhiều cụm
Trong sự kiện Chuyển đổi dự phòng nhiều cụm, các cụm được triển khai trong nhiều trung tâm dữ liệu không hỗ trợ các dịch vụ được hỗ trợ cho khách hàng. Lãnh sự cho phép chúng tôi đảm bảo rằng khi một trong những điều kiện như vậy xảy ra, Lãnh sự có các tính năng giúp bạn kích hoạt các dịch vụ trong loại điều kiện đó.
Để điều này xảy ra, chúng tôi sẽ xem xét một dự án giúp chúng tôi cho phép nhân rộng Lãnh sự từ Một Cụm sang Nhiều Cụm. Dự án cung cấp cho chúng tôi một cách để sao chép các cặp K / V trên nhiều Trung tâm dữ liệu lãnh sự bằng cách sử dụng daemon bản sao lãnh sự. Bạn có thể xem dự án Hashicorp này trên -https://github.com/hashicorp/consul-replicate. Một số điều kiện tiên quyết để thử dự án này bao gồm:
- Golang
- Docker
- Consul
- Git
Hãy để chúng tôi bắt đầu với các lệnh sau:
Note - Trước khi chạy lệnh sau, hãy đảm bảo rằng bạn đã cài đặt và cấu hình Git đúng cách trên máy của mình.
$ git clone - https://github.com/hashicorp/consul-replicate.git
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
$ cd consul-replicate $ make
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Nếu bạn đang gặp một số khó khăn khi xây dựng tệp nhị phân, bạn cũng có thể thử kéo các hình ảnh Docker theo cách thủ công bằng cách sử dụng lệnh sau:
$ docker pull library/golang:1.7.4
Lệnh được đề cập ở trên sẽ tạo bin / consul-replicate, có thể được gọi dưới dạng nhị phân. Bảng sau đây hiển thị danh sách đầy đủ các lệnh con bao gồm:
Lựa chọn | Sự miêu tả |
---|---|
auth | Tên người dùng xác thực cơ bản (và mật khẩu tùy chọn), được phân tách bằng dấu hai chấm. Không có giá trị mặc định. |
lãnh sự * | Vị trí của trường hợp lãnh sự cần truy vấn (có thể là địa chỉ IP hoặc FQDN) với cổng. |
tối đa | Mức độ ổn định tối đa của một truy vấn. Nếu được chỉ định, Consule sẽ phân phối công việc giữa tất cả các máy chủ thay vì chỉ người lãnh đạo. Giá trị mặc định là 0 (không có). |
ssl | Sử dụng HTTPS khi nói chuyện với Lãnh sự. Yêu cầu máy chủ ủy thác được định cấu hình cho các kết nối an toàn của máy chủ. Giá trị mặc định là sai. |
ssl-xác minh | Xác minh chứng chỉ khi kết nối qua SSL. Điều này yêu cầu sử dụng -ssl. Giá trị mặc định là true. |
nhật ký hệ thống | Gửi đầu ra nhật ký đến nhật ký hệ thống (ngoài stdout và stderr). Giá trị mặc định là sai |
syslog-cơ sở | Cơ sở để sử dụng khi gửi đến nhật ký hệ thống. Điều này yêu cầu sử dụng -syslog. Mặc định là LOCAL |
mã thông báo | Mã thông báo API Lãnh sự. Không có giá trị mặc định. |
tiền tố * | Tiền tố nguồn bao gồm tiền tố đích, với tùy chọn, được phân tách bằng dấu hai chấm (:). Tùy chọn này là phụ gia và có thể được chỉ định nhiều lần để nhiều tiền tố sao chép. |
loại trừ | Một tiền tố để loại trừ trong quá trình sao chép. Tùy chọn này là phụ gia và có thể được chỉ định nhiều lần cho nhiều tiền tố để loại trừ. |
chờ đợi | Giá trị nhỏ nhất (: tối đa) để đợi ổn định trước khi sao chép, được phân tách bằng dấu hai chấm (:). Nếu giá trị tối đa tùy chọn bị bỏ qua, nó được giả định là giá trị tối thiểu bắt buộc gấp 4 lần. Không có giá trị mặc định. |
thử lại | Khoảng thời gian chờ nếu Consule trả về lỗi khi giao tiếp với API. Giá trị mặc định là 5 giây. |
cấu hình | Đường dẫn đến tệp cấu hình hoặc thư mục của tệp cấu hình trên đĩa, liên quan đến thư mục làm việc hiện tại. Các giá trị được chỉ định trên CLI được ưu tiên hơn các giá trị được chỉ định trong tệp cấu hình. Không có giá trị mặc định. |
mức đăng nhập | Mức nhật ký cho đầu ra. Điều này áp dụng cho ghi nhật ký stdout / stderr cũng như ghi nhật ký hệ thống (nếu bị tắt). Giá trị hợp lệ là "gỡ lỗi", "thông tin", "cảnh báo và" lỗi ". Giá trị mặc định là" cảnh báo ". |
Một lần | Chạy Consule Replicate một lần và thoát (trái ngược với hành vi mặc định của daemon). (Chỉ CLI) |
phiên bản | Xuất thông tin phiên bản và thoát. (Chỉ CLI) |
Chụp ảnh nhanh
Ảnh chụp nhanh là một phần cần thiết và quan trọng để quản lý cụm Lãnh sự trong trường hợp sao lưu. Theo mặc định, Lãnh sự cung cấp cho chúng tôi một cách để lưu ảnh chụp nhanh của cụm lãnh sự. Lãnh sự cung cấp cho chúng tôi bốn lệnh phụ riêng biệt mà chúng tôi có thể sử dụng lãnh sự để tạo ảnh chụp nhanh, đó là:
- Lưu ảnh chụp nhanh lãnh sự
- Đại lý chụp nhanh lãnh sự
- Kiểm tra ảnh chụp nhanh lãnh sự
- Khôi phục ảnh chụp nhanh lãnh sự
Hãy để chúng tôi hiểu chi tiết từng điều này.
Lưu ảnh chụp nhanh Lãnh sự
Lệnh này được đặt để truy xuất ảnh chụp nhanh nguyên tử, theo thời gian về trạng thái của Máy chủ Lãnh sự, bao gồm Mục nhập khóa / giá trị, Danh mục dịch vụ, Truy vấn chuẩn bị, Phiên và ACL. Ảnh chụp nhanh được lưu vào tên tệp được đề cập.
$ consul snapshot save <name-of-the-file>.snap
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Để kiểm tra sự hiện diện của tệp trong thư mục hiện tại, vui lòng kiểm tra bằng cách chạy tệp trong thư mục hiện tại của bạn. Trong trường hợp nút không phải nút dẫn đầu, hãy thực hiện lệnh sau:
$ consul snapshot save -stale <name-of-file>.snap
Đại lý Chụp nhanh Lãnh sự
Lệnh phụ này bắt đầu một quá trình chụp nhanh trạng thái của các máy chủ Lãnh sự và lưu chúng cục bộ hoặc đẩy chúng đến một dịch vụ lưu trữ từ xa tùy chọn.
Kiểm tra bản chụp nhanh Lãnh sự
Nó được sử dụng để kiểm tra ảnh chụp nhanh tại thời điểm về trạng thái của máy chủ Lãnh sự, bao gồm các mục nhập khóa / giá trị, danh mục dịch vụ, truy vấn đã chuẩn bị, phiên và ACL. Lệnh có thể được thực hiện như sau:
Note - Hãy nhớ rằng chỉ có thể chạy lệnh sau trong Thư mục, nơi lưu ảnh chụp nhanh.
$ consul snapshot save <name-of-the-file>.snap
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Khôi phục Ảnh chụp Lãnh sự
Lệnh khôi phục ảnh chụp nhanh được sử dụng để khôi phục ảnh chụp nhanh tại thời điểm về trạng thái của máy chủ Lãnh sự, bao gồm các mục nhập khóa / giá trị, danh mục dịch vụ, truy vấn đã chuẩn bị, phiên và ACL. Ảnh chụp nhanh được đọc từ tệp sao lưu đã lưu.
Note - Hãy nhớ rằng lệnh sau chỉ có thể chạy trong thư mục, nơi lưu ảnh chụp nhanh.
$ consul snapshot restore <name-of-the-file>.snap
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Nếu bạn đang làm việc về Lãnh sự với AWS, dự án này có thể giúp bạn tiết kiệm thời gian - https://github.com/pshima/consul-snapshot.
Trong chương này, chúng ta sẽ học cách sử dụng Consul UI (Giao diện người dùng) và hiểu các thành phần quan trọng của nó.
Lãnh sự UISetup
Consul cung cấp cho chúng tôi một giao diện hữu ích để chúng tôi có thể quản lý mọi thứ một cách dễ dàng. Bạn có thể dễ dàng hiển thị giao diện người dùng lãnh sự trên bất kỳ cổng nào bạn muốn. Giao diện người dùng Lãnh sự có thể được chia thành ba phần quan trọng, đó là -
ACL - Bộ Quy tắc để dễ dàng khóa các cụm của bạn một cách dễ dàng
Datacenter - Cho phép bạn dễ dàng quản lý các trung tâm dữ liệu và làm việc với cụm của bạn.
Nodes - Cập nhật nhanh các nút mà Consul cluster đang sử dụng
Sử dụng giao diện người dùng lãnh sự
Để sử dụng Consul UI, chúng tôi phải cài đặt gói UI do nhóm Hashicorp cung cấp trên trang web dự án của Consul. Vì vậy, chúng ta hãy thử tải xuống từ nguồn và bắt đầu sử dụng. Hãy sử dụngsudo trước mọi lệnh trong trường hợp Permission Denied error được hiển thị.
$ mkdir /opt/consul-ui
$ cd /opt/consul-ui $ wget https://releases.hashicorp.com/consul/0.7.2/consul_0.7.2_web_ui.zip
$ unzip consul_0.7.2_web_ui.zip $ rm consul_0.7.2_web_ui.zip
Bạn có thể xem đầu ra của Consul UI bằng lệnh sau trên bất kỳ tác nhân nào.
$ consul agent -dev -ui -data-dir /tmp/consul
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Theo mặc định, bạn sẽ quan sát giao diện người dùng tại http://localhost:8500/ui. Phần / ui giống như API HTTP của lãnh sự.
Để sử dụng giao diện người dùng Lãnh sự qua Docker, vui lòng chạy lệnh sau cho hình ảnh Docker (progrium / consul) -
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap -ui-dir /ui
Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau đây.
Đặc điểm của Consul UI
Bạn có thể bắt đầu duyệt qua Consul UI bằng cách xem một số tính năng của nó, chẳng hạn như -
- Nodes
- ACL
- Key/Value
- Settings
- Datacenter
- Services
Hãy để chúng tôi hiểu chi tiết từng điều này.
Điểm giao
Cách sử dụng cơ bản của các nút trên Bảng điều khiển giao diện người dùng có thể được quan sát như thể hiện trong ảnh chụp màn hình sau.
Khi bạn nhấp vào nút cụ thể như node1 trong trường hợp của chúng tôi, chúng ta có thể thấy rằng thông tin trên nút có thể dễ dàng nhìn thấy là:
Bạn có thể hủy đăng ký nút khỏi Lãnh sự bất cứ lúc nào. Nó giúp dễ dàng quản lý các nút từ quan điểm cụm lãnh sự cao.
ACL (Danh sách Kiểm soát Truy cập)
Một trong những tính năng tốt nhất của Consul là Danh sách Kiểm soát Truy cập. Bạn có thể viết các quyền khác nhau của mình cho các cụm khác nhau trên các trung tâm dữ liệu khác nhau. Một trong những cách dễ nhất để bật ACL là thêm tệp json mới vào thư mục dữ liệu của Lãnh sự. Để bật và cập nhật ACL, bạn có thể thêm mã thông báo ACL chính vào trường trong cài đặt và làm mới nó bằng cách sử dụng tab ACL
Để biết thêm thông tin, vui lòng kiểm tra tại đây
Giá trị cốt lõi
Tùy chọn Giá trị Chính cho Lãnh sự theo mặc định có trong Giao diện người dùng Lãnh sự. Bạn có thể tạo khóa của riêng mình bằng cách sử dụng Giao diện người dùng Lãnh sự. Nó cũng cung cấp một tùy chọn để tạo một thư mục để lưu trữ khóa của bạn.
Cài đặt
Bạn có thể kiểm tra tùy chọn cài đặt của Giao diện người dùng lãnh sự ở phía trên bên phải của màn hình. Khi nhấp vào tùy chọn đó, bạn có thể dễ dàng thấy rằng Lãnh sự cung cấp cho bạn một tùy chọn bằng cách sử dụng mà bạn có thể định cấu hình cài đặt lưu trữ cục bộ và hệ thống mã thông báo để xác minh.
Trung tâm dữ liệu
Tùy chọn trung tâm dữ liệu có thể dễ dàng thay đổi và chuyển đổi theo lựa chọn. Giao diện người dùng Lãnh sự tự động cập nhật phát hiện số lượng trung tâm dữ liệu mà Lãnh sự đang làm việc.
Dịch vụ
Giao diện người dùng Lãnh sự cũng cung cấp cho bạn tab Dịch vụ để định cấu hình và xem các dịch vụ hiện đang được triển khai bằng Lãnh sự. Nó cung cấp cho chúng tôi một tùy chọn để cấu hình các dịch vụ tùy thuộc vào các nút.
Trong chương này, chúng ta sẽ học cách sử dụng Consul trên AWS (Amazon Web Services).
Các tính năng của AWS
Một số tính năng hữu ích khi sử dụng Consul trong AWS là:
- Dễ dàng duy trì các trạng thái cụm.
- Khả năng mở rộng và tính sẵn sàng cao.
- Giao diện người dùng tuyệt vời để quản lý các cụm trên nhiều trung tâm dữ liệu.
- Tùy chọn dòng lệnh dễ sử dụng.
Nếu bạn đang tìm kiếm một giải pháp sử dụng mà chúng tôi có thể dễ dàng triển khai Consul trên AWS với Docker. Kiểm tra liên kết sau -https://github.com/dwmkerr/terraform-consul-cluster.
Triển khai AWS
Để sử dụng AWS, chúng ta có thể bắt đầu bằng cách tạo VPC cho nó. Để triển khai lãnh sự trong AWS, chúng tôi sẽ sử dụng mẫu bắt đầu nhanh do Dịch vụ AWS cung cấp. Bạn có thể dễ dàng tìm thấy mẫu này tại -https://aws.amazon.com/quickstart/architecture/consul/.
Đối với chương này, chúng tôi giả định rằng bạn đã biết những kiến thức cơ bản về AWS. Mẫu AWS CloudFormation sẽ tạo các thành phần sau:
A VPC với các mạng con công cộng và riêng tư trên ba Vùng khả dụng.
A Seed Consul server và một Seed client cùng với hai nhóm Auto Scaling.
Bạn có thể chọn tạo 3, 5 hoặc 7 máy chủ. Số lượng khách hàng được đặt thành ba theo mặc định, nhưng người dùng có thể định cấu hình.
Dnsmasq, được cài đặt và cấu hình cho Consul như một phần của quá trình cài đặt.
Một cụm lãnh sự sử dụng bootstrap_expect Lựa chọn.
Hãy xem hình minh họa sau để hiểu cách các thành phần khác nhau được kết nối với nhau.
Sử dụng AWS
Hãy đảm bảo rằng bạn đã đăng nhập vào cơ sở hạ tầng AWS của mình bằng bảng điều khiển web. Bây giờ, vui lòng đặt URL sau vào cửa sổ trình duyệt. Sau khi bạn nhập URL và nhấn enter, trang web AWS sẽ mở ra.
Đối với bản demo này, chúng tôi sẽ chọn triển khai nó thành một VPC mới (Đám mây riêng ảo). Bạn luôn có thể kiểm tra Quản lý VPC của AWS trên liên kết sau - https: // <awsregion> .console.aws.amazon.com / vpc / home. Đối với người dùng lần đầu tiên, khu vực theo mặc định là Tây Oregon ở Hoa Kỳ. Vì vậy, bạn có thể truy cập trực tiếp URL tại - https: // us-west- 2.console.aws.amazon.com/vpc/home.
Như bạn có thể thấy dịch vụ VPC của AWS đang hoạt động và bạn không có VPC, tức là đã chạy / định cấu hình trên tài khoản AWS của bạn. Bây giờ, vui lòng nhấp vào tùy chọn Triển khai trên AWS vào VPC mới hoặc Triển khai vào VPC hiện có tùy theo lựa chọn của bạn. Bạn có thể xem tùy chọn trên trang web như trong ảnh chụp màn hình sau.
Khi nhấp vào tùy chọn được mô tả ở trên, bạn có thể thấy rằng nó mở ra một cửa sổ khác, tương tự như cửa sổ được hiển thị bên dưới.
Như bạn có thể thấy trong mẫu, URL đã được AWS chọn thay mặt bạn. Nó cũng cho phép bạn tự do tùy chỉnh mẫu hình thành đám mây theo ý muốn. Bạn có thể tùy chỉnh nó nếu bạn muốn và nhấp vào nút Tiếp theo để tiếp tục.
Như bạn có thể thấy, có nhiều giá trị và tùy chọn khác nhau mà bạn có thể định cấu hình tại đây. Đối với một số thay đổi, bạn có thể đổi tên nó theo sự lựa chọn của bạn thay cho tên HashiCorp-Consul. Vui lòng thay đổi các tùy chọn khác tùy theo sự thuận tiện của bạn.
Như bạn có thể thấy ở trên, một số tùy chọn có thể được tùy chỉnh theo sự lựa chọn của bạn. Như bạn có thể thấy trong phần Thiết lập Lãnh sự, loại cá thể Cụm Lãnh sự mặc định làt2.medium. Bạn có thể thay đổi nó theo lựa chọn của bạn.
Note - Điền vào Phạm vi được phép là 0.0.0.0/0 để cho phép bất kỳ Địa chỉ IP nào.
Theo mặc định, số lượng máy chủ lãnh sự là ba. Bạn có thể thay đổi nó thành năm để thử nghiệm nhiều máy chủ hơn trong môi trường lãnh sự. Trong cấu hình bắt đầu nhanh, bạn có thể thấy rằngS3 bucketcũng được sử dụng và đặt tên cho tham chiếu bắt đầu nhanh theo mặc định. Khi bạn thực hiện xong các thay đổi, hãy nhấp vào nút Tiếp theo ở cuối màn hình.
Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng có một tùy chọn sử dụng Thẻ để nhận dạng và sử dụng tốt hơn. Cùng với đó, bạn cũng có một tùy chọn để chọn Vai trò IAM để cung cấp quyền truy cập cho những người khác vào Ngăn xếp VPC của bạn. Bạn có thể chọn tùy theo sự lựa chọn của bạn tùy chọn.
Để có thêm các tùy chọn nâng cao, vui lòng chọn advanced tab, nơi bạn có thể bật Amazon SNS cho VPC của mình cho các thông báo của nó. Vui lòng chuyển sang tùy chọn Tiếp theo khi bạn đã hoàn thành các chi tiết.
Màn hình trên hiển thị cho bạn chi tiết đã xem xét về ngăn xếp lãnh sự mà bạn đã chọn. Bạn có thể xem lại các tùy chọn đã chọn cho ngăn xếp VPC và tiến đến cuối màn hình, đánh dấu vào ô xác nhận việc tạo Tài nguyên IAM và tiếp tục nhấp vào nút Tạo để hoàn thành việc hình thành ngăn xếp.
Bạn có thể kiểm tra kết quả đầu ra trong phần CloudFormation Stack của bảng điều khiển quản lý AWS. Theo đầu ra VPC, bạn cũng có thể kiểm tra nó tại Phần VPC của Bảng điều khiển AWS như được hiển thị trong ảnh chụp màn hình bên dưới.
Nếu bạn chỉ đang thử nghiệm Mẫu Lãnh sự, hãy đảm bảo rằng bạn xóa các tài nguyên bạn đã sử dụng. Bạn có thể dễ dàng thực hiện điều đó bằng cách xóa CloudFormation Stack trong phần CloudFormation và VPC trên VPC Dashboard.