Thứ hai, 05/10/2015 | 00:00 GMT+7

Cơ sở hạ tầng của SaltStack: Cài đặt Salt Master

SaltStack, hay Salt, là một hệ thống quản lý cấu hình và thực thi từ xa mạnh mẽ được dùng để dễ dàng quản lý cơ sở hạ tầng theo cách có cấu trúc, có thể lặp lại. Trong loạt bài này, ta sẽ trình bày một phương pháp quản lý môi trường phát triển, dàn dựng và production của bạn từ việc triển khai Salt. Ta sẽ sử dụng hệ thống trạng thái Salt để viết và áp dụng các hành động có thể lặp lại. Điều này sẽ cho phép ta phá hủy bất kỳ môi trường nào của ta , an toàn khi biết rằng ta có thể dễ dàng đưa chúng trở lại trực tuyến ở trạng thái giống hệt nhau sau này.

Trong bài viết này, ta sẽ giới thiệu các môi trường khác nhau mà ta sẽ xây dựng và ta sẽ cài đặt trình Salt master vào server chính của ta để bắt đầu. Đây là hệ thống cốt lõi sẽ chứa các hướng dẫn cấu hình, kiểm soát các node cơ sở hạ tầng và quản lý các yêu cầu của ta .

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần một server Ubuntu 14.04 sạch. Server này cần phải bật mạng riêng.

Trên server này, bạn phải có một account không phải root được cấu hình với các quyền sudo . Bạn có thể tìm hiểu cách cài đặt account loại này trong hướng dẫn cài đặt server ban đầu Ubuntu 14.04 của ta .

Bài viết sau của loạt bài này sẽ sử dụng lệnh salt-cloud để khởi động các server cơ sở hạ tầng bằng cách sử dụng cloud DigitalOcean. Bạn có thể sử dụng các nhà cung cấp dịch vụ cloud khác nếu bạn muốn, hoặc thậm chí các version ảo sử dụng phần mềm như vagrant. Tuy nhiên, điều này nằm ngoài phạm vi của hướng dẫn này và bạn sẽ phải tự nghiên cứu trong các lĩnh vực này.

Tổng quan về cơ sở hạ tầng mà ta sẽ xây dựng

Các server mà ta tạo ra với salt-cloud sẽ đại diện cho ba môi trường mà ta muốn duy trì để phát triển ứng dụng. Vì server chính của ta Salt sẽ duy trì cấu hình cho từng server mà ta cần, nên ta có thể chuyển các server này xuống khi ta không sử dụng chúng. Ví dụ: nếu group phát triển của bạn đã tạm dừng công việc trong kỳ nghỉ lễ, bạn có thể thu hẹp môi trường phi production của bạn . Khi trở lại sau kỳ nghỉ, bạn có thể dễ dàng xây dựng lại chúng và triển khai lại ứng dụng của bạn trên cơ sở hạ tầng mới này.

Ta sẽ chia cơ sở hạ tầng ví dụ của bạn thành phát triển, dàn dựng và production .

Cơ sở hạ tầng phát triển của ta sẽ khiêm tốn nhất. Nó sẽ chỉ chứa một web server duy nhất và một server database được liên kết. Việc tách database và web server sẽ đủ đảm bảo rằng ứng dụng của ta được xây dựng với dữ liệu từ xa.

Môi trường dàn dựng sẽ mạnh mẽ hơn. Hầu hết các lời khuyên mà bạn sẽ tìm thấy đều khuyên bạn nên cấu hình môi trường dàn dựng của bạn càng giống với môi trường production dự kiến của bạn càng tốt. Với ý nghĩ này, môi trường dàn dựng của ta sẽ bao gồm hai web server để phân tán tải lưu lượng. Ta sẽ phân phối lưu lượng giữa hai server này bằng cách sử dụng bộ cân bằng tải. Về phía database , ta sẽ tạo ra hai server database . Ta sẽ cài đặt bản sao master-master giữa hai server này để cả hai đều có thể chấp nhận yêu cầu ghi.Nhân bản tổng thể có một số nhược điểm, nhưng nó cho phép ta hơi lười biếng trong thiết kế ứng dụng của bạn (bất kỳ server database nào cũng có thể nhận ghi) và nó cho phép ta chứng minh một kịch bản quản lý cấu hình khá phức tạp.

Như ta đã nói trước đây, môi trường production sẽ rất giống với môi trường dàn dựng. Sự khác biệt duy nhất trong thiết kế của ta sẽ là một bộ cân bằng tải bổ sung ở phía trước để cung cấp tính khả dụng cao và không bị hỏng hóc. Nếu muốn, bạn cũng có thể sử dụng các server công suất cao hơn cho tải production của bạn . Điều này thường cần thiết để xử lý đầy đủ các yêu cầu về lưu lượng, mặc dù nó làm cho việc đánh giá tải trong môi trường phân đoạn khó khăn hơn.

Lưu ý trong khi ta đang tạo cấu hình cho các môi trường được liệt kê ở trên, không phải tất cả chúng đều phải chạy cùng một lúc. Điều này đặc biệt đúng trong quá trình thử nghiệm. Trong suốt loạt bài này, bạn có thể sẽ chỉ có một vài server hoạt động cùng một lúc. Điều này là mong muốn từ góc độ chi phí, nhưng việc phá hủy và nâng cấp môi trường của ta khi cần thiết cũng đảm bảo việc khởi động môi trường của ta là mạnh mẽ và có thể lặp lại.

Đến đây bạn đã biết bố cục chung của các môi trường mà ta sẽ cấu hình , ta có thể cài đặt và chạy Salt master của bạn .

Cài đặt Salt Master

Bắt đầu bằng cách đăng nhập vào server mà bạn định cài đặt làm Salt master với quyền là user không phải root với các quyền sudo .

Có khá nhiều cách khác nhau để cài đặt Salt master daemon trên server . Có sẵn các PPA cho Ubuntu, nhưng những PPA này thường có thể lỗi thời. Cách tiếp cận tốt nhất để lập kế hoạch và quản lý phần mềm quản lý cấu hình là nhắm đến một version cụ thể. Điều này sẽ cho phép bạn cập nhật hệ thống của bạn (sau khi kiểm tra kỹ ) theo cách có kế hoạch và có cấu trúc thay vì dựa vào bất kỳ thứ gì có sẵn từ repository tại thời điểm cài đặt.

Đối với hướng dẫn này, ta sẽ nhắm đến version Salt v2015.8.0 , version ổn định mới nhất tại thời điểm viết bài này. Nếu bạn chọn một version hoặc phương pháp cài đặt khác, hãy lưu ý các quy trình trong hướng dẫn này có thể không hoạt động như đã viết.

Cách dễ nhất để cài đặt một version cụ thể là sử dụng tập lệnh bootstrap của SaltStack. Download tập lệnh bootstrap mới nhất vào folder chính của bạn bằng lệnh :

  • cd ~
  • curl -L https://bootstrap.saltstack.com -o install_salt.sh

Vui lòng xem qua nội dung của tập lệnh đã download cho đến khi bạn thấy phù hợp với các thao tác mà tập lệnh sẽ thực hiện.

Khi đã sẵn sàng cài đặt Salt master, bạn có thể chạy script với sh shell. Ta sẽ chuyển nó cờ -P để cho biết ta đồng ý với việc cho phép cài đặt phụ thuộc với pip , trình quản lý gói Python. Ta cũng cần bao gồm cờ -M để cho biết ta muốn cài đặt trình chính. Kết thúc lệnh bằng cách bao gồm git v2015.8.0 , git v2015.8.0 này yêu cầu tập lệnh tìm nạp thẻ phát hành được chỉ định từ repo SaltStack GitHub và sử dụng nó để cài đặt:

  • sudo sh install_salt.sh -P -M git v2015.8.0

Tập lệnh sẽ cài đặt tất cả các phụ thuộc cần thiết, kéo version được chỉ định từ git repo, và cài đặt các daemon chính và minion của Salt, cũng như một số tiện ích Salt liên quan.

Quá trình cài đặt sẽ diễn ra thẳng thắn. Tiếp theo, ta có thể bắt đầu cấu hình Salt master của bạn .

Cấu hình Salt Master

Điều đầu tiên ta cần là chỉnh sửa file cấu hình chính của Salt master. Mở nó ngay bây giờ với các quyền của sudo :

  • sudo nano /etc/salt/master

Tệp cấu hình khá dài và được comment tốt. Bạn chỉ cần bỏ ghi chú và đặt các tùy chọn khi bạn muốn lệch khỏi các giá trị mặc định. Ta chỉ cần thực hiện một vài chỉnh sửa để bắt đầu.

Đầu tiên, hãy tìm tùy chọn file_recv trong file . Bật tính năng này cho phép các tay sai của Salt gửi các file đến Salt master. Điều này cực kỳ hữu ích khi tạo trạng thái để nhận các file cấu hình mà bạn muốn sửa đổi, tuy nhiên, nó đi kèm với một số rủi ro. Ta sẽ kích hoạt nó trong suốt thời gian của hướng dẫn này. Bạn có thể tắt nó sau đó nếu bạn muốn:

/ etc / salt / master
file_recv: True 

Tiếp theo, ta cần cài đặt từ điển file_roots . Salt master bao gồm một server file mà nó sử dụng để lưu trữ và phân phát file cho toàn bộ cơ sở hạ tầng. Điều này bao gồm bản thân các file trạng thái quản lý cấu hình, cũng như các file minion nào được hệ thống của ta quản lý. Từ điển YAML này xác định root của server file , server này sẽ được đặt tại /srv/salt . Ta cần chỉ rõ rằng điều này nằm trong môi trường “cơ sở”, môi trường mặc định bắt buộc cho tất cả các triển khai Salt:

/ etc / salt / master
file_roots:   base:     - /srv/salt 

Ghi chú
Điều quan trọng là phải sao chép chính xác các định dạng được đưa ra. Salt sử dụng file cấu hình kiểu YAML. YAML yêu cầu chú ý nghiêm ngặt đến khoảng cách và thụt lề đảm bảo diễn giải chính xác. Thông thường, mỗi mức thụt lề sẽ là hai khoảng trắng.

Mục cuối cùng mà ta cần cho bây giờ là từ điển pillar_roots . Hệ thống trụ cột được sử dụng để lưu trữ dữ liệu cấu hình có thể được giới hạn cho các node nhất định. Điều này cho phép ta tùy chỉnh hành vi và ngăn dữ liệu nhạy cảm bị các thành phần cơ sở hạ tầng không liên kết với dữ liệu nhìn thấy. Định dạng này phản ánh chính xác file_roots . Vị trí của dữ liệu trụ cột của ta sẽ ở /srv/pillar :

/ etc / salt / master
pillar_roots:   base:     - /srv/pillar 

Lưu file khi bạn hoàn tất.

Ta có thể tiếp tục và tạo các folder mà ta đã tham chiếu trong file cấu hình bằng lệnh :

  • sudo mkdir -p /srv/{salt,pillar}

Cấu hình Minion Daemon trên Salt Master

Ta cũng muốn cấu hình server chính Salt của bạn để chấp nhận các lệnh Salt. Ta có thể làm điều này bằng cách cấu hình daemon minion trên server của ta . Mở file để bắt đầu:

  • sudo nano /etc/salt/minion

Mục duy nhất ta cần thay đổi ở đây là vị trí của server chính. Vì cả hai daemon đang hoạt động trên cùng một server , ta có thể đặt địa chỉ cho giao diện loopback local :

/ etc / salt / minion
master: 127.0.0.1 

Lưu file khi bạn hoàn tất.

Khởi động lại Dịch vụ và Chấp nhận Key Muối

Bây giờ ta đã có cấu hình Salt master và minion, hãy khởi động lại các dịch vụ để nhận các thay đổi của ta :

  • sudo restart salt-master
  • sudo restart salt-minion

Trước khi Salt master có thể giao tiếp an toàn với minion (ngay cả trên cùng một server ), nó phải chấp nhận khóa của minion. Đây là một tính năng bảo mật. Bạn có thể xem tất cả các khóa được chấp nhận và đang chờ xử lý bằng lệnh :

  • sudo salt-key --list all

Nếu daemon của bạn đã được cấu hình chính xác và đã được khởi động lại, bạn sẽ thấy một khóa cho server chính Salt của bạn trong phần “Khóa không được chấp nhận”. Trong trường hợp của ta , bậc thầy Salt của ta đang được lưu trữ trên một máy có tên “sm”:

Output
Accepted Keys: Denied Keys: Unaccepted Keys: sm Rejected Keys:

Bạn có thể chấp nhận khóa này bằng cách chuyển ID minion của server (trong trường hợp này là sm ) to the command with the khóa muối command with the cờ -a`:

  • sudo salt-key -a sm

Nếu bạn kiểm tra lại, khóa của bạn sẽ được chuyển đến phần "Khóa được chấp nhận":

  • sudo salt-key --list all
Output
Accepted Keys: sm Denied Keys: Unaccepted Keys: Rejected Keys:

Bạn có thể xác minh server chính Salt của bạn hiện phản hồi các lệnh Salt bằng lệnh :

  • sudo salt '*' test.ping

Bạn sẽ nhận được phản hồi giống như sau:

Output
sm: True

Server chính Salt của bạn hiện đã hoạt động.

Kết luận

Trong hướng dẫn này, ta đã bắt đầu quản lý cơ sở hạ tầng của bạn bằng cách chạy qua cấu hình ban đầu của server chính Salt của ta . Đây là server trung tâm trong thiết kế quản lý của ta , server này sẽ được sử dụng làm trung tâm điều khiển và lưu trữ dữ liệu cấu hình.

Trong hướng dẫn tiếp theo của loạt bài này, ta sẽ cấu hình server chính Salt của ta bằng thông tin đăng nhập API DigitalOcean của ta . Ta sẽ tạo cấu hình nhà cung cấp cho phép ta kết nối với account DigitalOcean của bạn bằng cách sử dụng lệnh salt-cloud và tạo và quản lý tài nguyên cloud . Ta sẽ tạo cấu hình cho các máy cơ sở hạ tầng của bạn để ta có thể xác định các thuộc tính cho từng server của bạn .


Tags:

Các tin liên quan