Lãnh sự - Sự kiện chuyển đổi dự phòng

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à đả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 cái gì đó đượ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 trình nền rất sẵn có để gửi thông báo và nhắc nhở dựa trên các cuộc kiểm tra Sức khỏe của Lãnh sự. Dự án này chạy một 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, chúng ta hãy 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 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 việc bổ sung đại diện 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 thông báo 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, hãy đảm bảo rằng thùng chứa 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 từng 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ử, nó chữa lành cụm, đợi 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 đó 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 thông qua 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.

$ cd consul-replicate
$ make

Kết quả sẽ được hiển thị trong ảnh chụp màn hình sau.

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 một tệp 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 phải đượ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-verify 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 cho 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ị lớn nhất tùy chọn bị bỏ qua, nó được giả định là giá trị nhỏ nhất bắt buộc là 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ỉ dành cho CLI)
phiên bản Xuất thông tin phiên bản và thoát. (Chỉ dành cho 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ử, tại thời điểm 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.

Để 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, vui lòng 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 con 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.

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.

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.