Tắt máy VMware ESXi được kích hoạt bởi APC UPS được kết nối qua USB


18

Tôi đang vận chuyển một loạt các máy chủ ESXi 5.1 đến các văn phòng ở xa nơi chúng sẽ được cung cấp qua APC UPS.

Tôi muốn UPS kích hoạt tắt máy chủ được kết nối - Sau đó tôi sẽ dựa vào cấu hình ESXi để xử lý việc tắt / tạm dừng các máy ảo được lưu trữ trên đó.

Tôi có thể thấy rằng APC có một giải pháp được ghi lại bằng cách tắt Mạng PowerChute của họ , nhưng điều này liên quan đến việc thiết lập thêm một máy chủ cho mỗi văn phòng và yêu cầu thẻ mạng trên mỗi UPS. Chúng tôi thường sử dụng UPS mà không có card mạng (ví dụ Back-UPS Pro) - chúng đi kèm với đầu nối USB và chúng có sẵn ở những nơi có văn phòng của chúng tôi.

Làm cách nào tôi có thể kết nối UPS với máy chủ ESXi qua USB, sau đó ESXi phát hiện mất điện và sau đó hành động tương ứng? Có ai quản lý để làm điều này.


1
Bạn đã định thời gian cho quá trình tắt máy ảo thông qua tắt máy chủ chưa? Pin có thể giữ đủ lâu trong khoảng thời gian đó không?
ewwhite

Cảm ơn đã chỉ ra điều này. Chưa đâu - ở giai đoạn này tôi chỉ vận chuyển các máy chủ ESXi để chạy Bộ điều khiển miền, nhưng tôi chắc chắn rằng một khi chúng ta có tài nguyên, chúng ta sẽ thêm một vài máy chủ nữa, tại thời điểm đó có thể thay đổi.
dunxd

Chính sách tắt máy khá dài theo mặc định. Nhưng thành thật mà nói, tôi không chạy tắt máy UPS trên các máy chủ hoặc cụm ESXi của mình. Có vẻ phản trực giác, nhưng chưa bao giờ là một vấn đề.
ewwhite

Tại sao lại phải có UPS trên máy chủ ESXi của bạn? Nếu mất điện vì mất điện hoặc do pin hết, bạn sẽ nhận được kết quả tương tự.
dunxd

Để thời tiết mất điện ngắn. Nhưng tại các trang web lớn hơn của tôi, tôi có 2-4 giờ năng lượng UPS có sẵn cho cụm VMWare, lưu trữ và kết nối mạng.
ewwhite

Câu trả lời:


5

Theo APC, điều này là không thể và bạn yêu cầu tắt Powerchute Network. Chúng tôi đã thử điều này nhiều lần với USB và không tìm thấy giải pháp.

VMWare có thông tin ở đây về việc sử dụng giải pháp được APC phê duyệt.

Cũng sẽ nghĩ SmartUPS sẽ là lựa chọn tốt hơn và bạn có thể phù hợp với card mạng. Đương nhiên nhiều tiền hơn nhưng nếu máy chủ của bạn hoàn toàn quan trọng, chi phí đó sẽ đáng giá. Cũng cung cấp cho bạn nhiều giám sát và cảnh báo có thể hữu ích tại một trang web từ xa. Bạn cũng cần đảm bảo đủ thời gian chạy cho tất cả các máy ảo để tắt máy một cách sạch sẽ và sau đó tắt máy chủ


1
Đây có vẻ như là câu trả lời hợp lý nhất được hỗ trợ bởi cả hai nhà cung cấp. Thật không may khi VMware không nghĩ sẽ xây dựng bất cứ thứ gì thành ESX / ESXi thực hiện điều này một cách tự nhiên. Giải pháp Mạng yêu cầu ít nhất một công tắc mạng cũng được cấp nguồn qua UPS.
dunxd

2
Sẽ không có ý nghĩa gì khi không cấp nguồn cho các thiết bị chuyển mạch mạng qua UPS ... chúng tiêu thụ rất ít hiệu quả và rất quan trọng đối với bất kỳ hoạt động mạng nào.
Massimo

21

Vâng nó có thể. Dưới đây là chi tiết về thiết lập tương tự của tôi.

Cấu hình phần cứng: APC Smart-UPS 1500 được kết nối với ESXi 5.1 Host qua USB. Một máy ảo Linux chạy trên máy chủ ESXi này. UPS được kết nối với VM này bằng tùy chọn chuyển qua USB ESXi.

Cấu hình phần mềm: NUT (Network UPS Tools) chính đang chạy trong VM và nô lệ ESXi NUT gốc chạy trên máy chủ ESXi.

Tắt logic: VM đang chạy trình điều khiển usbhid-up của trình điều khiển UPS , chịu trách nhiệm liên lạc với UPS qua USB. Các upsd quá trình kết nối với UPS thông qua trình điều khiển usbhid-up và màn hình trạng thái UPS. Các upsmon quá trình tổng thể chạy trên sẽ kết nối cùng một máy với upsd và tu tắt máy. Máy chủ ESXi đang chạy phiên bản upsmon thứ 2 cũng kết nối với cùng một upsd VM thông qua mạng nội bộ.

Khi mất điện, trình tự sau đây diễn ra:

  1. UPS thông qua các báo cáo usbhid-up cho upsd về sự cố mất điện.
  2. (tùy chọn, hữu ích nếu bạn muốn tắt máy trong vài phút thay vì Pin yếu) upsmon trên VM khởi tạo bộ đếm thời gian 5 phút. Hẹn giờ bị hủy bỏ nếu nguồn được phục hồi.
  3. Khi bộ hẹn giờ kích hoạt hoặc khi UPS báo lỗi Pin yếu, thợ nâng sẽ tăng cờ FSD (buộc phải tắt máy) lên upsd.
  4. Trong cấu hình NUT độc lập, cờ FSD sẽ tắt máy. Nhưng ở đây, lệnh tắt máy được thay thế bằng cách đăng nhập đơn giản như "Tôi nên tắt máy ngay bây giờ nhưng tôi đang chờ máy chủ thay thế". Và không làm gì cả.
  5. Cờ FSD cũng được đọc bởi ESXi upsmon, khởi tạo tắt máy chủ ESXi.
  6. Máy chủ ESXi tắt tất cả các máy ảo từng cái một. Điều quan trọng là VM chạy upsd nên được tắt lần cuối (sử dụng cấu hình trình tự khởi động / tắt máy ESXi).
  7. Quan trọng: VM này phải có các công cụ vmware được cài đặt. Khi nó nhận được lệnh tắt máy khách từ máy chủ, tập lệnh tắt công cụ vmware đang được bắt đầu. Kịch bản lệnh này kiểm tra cờ / etc / killpower . Nếu không có cờ, nó không làm gì cả (điều này có nghĩa là người dùng đã kích hoạt tắt máy linux, không phải là sự kiện của UPS). Nhưng nếu cờ tồn tại (FSD hoạt động), thì tập lệnh này sẽ gửi cho UPS lệnh tắt nguồn bị trì hoãn (giả sử trong 3 phút).
  8. Sau khi chạy tập lệnh vmware-tools, VM khách sẽ tắt.
  9. ESXi thấy trạng thái tắt nguồn VM cuối cùng và tự tắt (mất khoảng 1 phút vì hiện tại không có máy nào khác đang chạy).
  10. Trong 2 phút còn lại, UPS sẽ cắt điện.
  11. Khi nguồn được phục hồi, ESXi khởi động và cấp nguồn cho tất cả các máy ảo. Máy giám sát UPS phải được khởi động trước (cùng cấu hình với lệnh tắt máy).

Tải xuống:

NUT cho Linux có thể được cài đặt từ gói.

Có thể tải xuống ứng dụng khách NUT gốc cho máy chủ ESXi bằng liên kết cuối cùng trên trang này: http://www.networkupstools.org/doad.html

Một số tập lệnh và tập tin conf của tôi có ở đây (chỉ hiển thị các dòng thay đổi): http://pastebin.com/KkEeanK1

Ghi chú:

Tất nhiên có nhiều chi tiết hơn, và tôi phải mất một thời gian để làm cho nó hoạt động như bình thường. Nhưng bây giờ nó thực hiện rất độc đáo. Hệ thống này giải thích cho các trường hợp khi bạn tắt máy ảo giám sát từ bên trong (tập lệnh vmware-tools không chạy) hoặc nếu máy chủ ESXi khởi tạo tắt máy VM (không có cờ / etc / killpower, do đó không tắt UPS), hoặc nếu đó là tắt máy ESXi (giống nhau). Điều quan trọng duy nhất là để VM này chạy ASAP sau khi khởi động máy chủ và tắt nó lần cuối (vì vậy thời gian lưu trữ là có thể dự đoán được - như đã nói ở trên, đó là khoảng 1 phút đối với tôi và 2 phút nữa tôi chỉ dự trữ trong trường hợp).

UPS của tôi giám sát Linux VM cũng là máy chủ chia sẻ Samba / NFS để lưu trữ sao lưu, máy chủ NAT / DHCP cho VM và một số dịch vụ nhẹ khác. Phải mất khoảng 22 MHz chia sẻ CPU ESXi và khoảng 10 MB RAM hoạt động khi không hoạt động. Do sử dụng NUT, bạn có thể cấp nguồn cho nhiều thiết bị hơn từ cùng một UPS nếu được yêu cầu và tất cả chúng có thể được tắt một cách duyên dáng. Không yêu cầu PowerChute và / hoặc Card màn hình mạng đắt tiền.


14

Siêu câu hỏi. Thực sự có thể làm điều này khá độc đáo - ít nhất là trên một số thiết lập. Tôi đã thử công thức sau đây trên một số máy chủ ESXi 5.5. Về cơ bản, giải pháp diễn ra như sau:

  1. Cho phép truy cập SSH trên máy chủ ESXi của bạn
  2. Tạo máy ảo Linux - Tôi sử dụng Ubuntu. Bạn chỉ cần một thiết lập rất tối thiểu - không có GUI hay bất cứ thứ gì.
  3. Kết nối thiết bị APC của bạn qua USB với máy chủ ESXi và chuyển qua máy ảo Linux.
    • Đảm bảo rằng bộ điều khiển USB bạn thêm vào VM khớp với bộ điều khiển USB vật lý thực tế mà thiết bị APC được kết nối với, tức là chỉ thêm bộ điều khiển XHCI nếu thiết bị vật lý là thiết bị USB3. Sự không phù hợp dường như gây ra sự cố kỳ lạ trong trình điều khiển thiết bị USB Linux.
    • Nếu mọi thứ không hoạt động và bạn thấy các lỗi như ctrl urb status -62trong dmesg, rất có thể bộ điều khiển vật lý không khớp với lỗi trong VM của bạn. Nếu chúng khớp nhau - thì đó là một vấn đề. Tôi có một thiết lập với loại vấn đề này và không có giải pháp thực sự cho nó.
  4. Cài đặt apcupsdtrên Linux VM - trong Ubuntu, bạn có thể làm sudo apt-get install apcupsdđể cài đặt phiên bản mới nhất. Dự án NUT cũng tốt nhưng tôi là người theo chủ nghĩa truyền thống.
  5. Cài đặt tiện ích plink bằng cách làm sudo apt-get install putty-tools
  6. Kết nối với máy chủ ESXI của bạn bằng cách thực hiện plink root@<your ESXi host IP>. Bạn có thể đóng kết nối ngay lập tức. Mục tiêu là để lưu khóa máy chủ lưu trữ để plink sẽ không nhắc lại khi chúng tôi chạy nó thông qua một tập lệnh
  7. Chỉnh sửa /etc/apcupsd/apcupsd.confvà thay đổi các mục bên dưới để chúng khớp: UPSNAME < the name you'd like your UPS to have > UPSCABLE usb UPSTYPE usb # DEVICE DIRECTIVE should be blank for USB DEVICE Cũng đảm bảo rằng /etc/default/apcupsdISCONFIGURED=yes
  8. Chỉnh sửa /etc/apcupsd/apccontrolvà cuộn đến doshutdowntrường hợp. Làm cho nó trông như thế này: doshutdown) echo "UPS ${2} initiated Shutdown Sequence" | ${WALL} # Shut down indirectly by triggering the ESXi host to do the # shutdown via VMWare tools /usr/bin/plink root@< your ESXi host IP > -pw < your root pw > "/sbin/shutdown.sh && /sbin/poweroff" ;;
  9. Khởi động lại apcupsd bằng cách sử dụng sudo service apcupsd restartvà xem nếu mọi thứ đang hoạt động bằng cách gọi apcaccess. Nếu không, hãy kiểm tra nhật ký và dmesg
  10. Đảm bảo rằng tất cả các máy ảo cần tắt tốt trong trường hợp mất điện đã được cài đặt Công cụ VMWare. Đồng thời đảm bảo rằng chúng là một phần của danh sách khởi động / tắt máy VM (trong vSphere Web Client, đi tới vCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown:). Đảm bảo rằng hành động tắt máy là tắt hệ điều hành khách.

Khi bạn có những thứ này đang chạy, doshutdownscriptlet từ bước 8 sẽ được gọi khi mất điện. Đây là lần lượt gọi tập lệnh shutdown.sh trên máy chủ ESXi, báo hiệu gói VMWare Tools trong mỗi VM trên máy chủ của bạn để thực hiện tắt máy thông qua hệ điều hành khách. Theo kinh nghiệm của tôi, nó hoạt động tốt hơn phần mềm PowerChute từ APC.

Nếu bạn muốn giám sát mọi thứ từ máy ảo của mình, bạn có thể thiết lập các phiên bản apcupsd nô lệ trên chúng kết nối với máy chủ Linux điều khiển UPS. Các tệp apcupsd.conf nô lệ của bạn nên có một mục như thế này:
UPSTYPE net < your UPS control VM IP >:3551
Các mục nhập như thế UPSCABLEvà không quan trọng trong trường hợp này. Điều này cũng hoạt động với phiên bản Windows apcupsd(có sẵn tại đây ). Bạn có thể sử dụng bao gồm apctray.exeđể kiểm tra tình trạng hiện tại của mọi thứ.

Điều đó khá nhiều bao gồm nó, tôi nghĩ.


+1 làm việc như một lá bùa. Lần đầu tiên!
Morten Kristensen

Câu trả lời này hoạt động hoàn hảo, mặc dù tại văn phòng khách hàng của tôi, chúng tôi đã phải điều chỉnh doshutdowntrình tự một chút. Chúng tôi đã thêm ${APCUPSD} --killpowerngay trước khi/usr/bin/plink phận để UPS tắt sau một lúc và tự động khởi động lại khi có điện trở lại. Ngoài ra, đáng lưu ý rằng bước 6 nên được thực hiện khi rootcó được thông qua suhoặc sudo su, nhưng không sudo -s .
Andrea Lazzarotto

4

Bạn có thể cân nhắc sử dụng chức năng truyền qua thiết bị USB cho một khách đang chạy PowerChute hoặc phần mềm khác có thể theo dõi sức khỏe của UPS và có khả năng kích hoạt tắt máy chủ ESXi (ví dụ apcupsd ). ESXi chính thức chỉ hỗ trợ một số lượng thiết bị USB rất hạn chế để vượt qua , nhưng mọi người đã gắn bó và chuyển qua các loại thiết bị khác nhau trong một thời gian với sự thành công khác nhau, nhưng USB APC dường như hoạt động theo hướng dẫn này cho Windows VM hoặc cái này cho một máy ảo CentOS Linux .


2

Hãy xem vSphere Management Assistant (vMA) từ đây Chúng tôi sử dụng nó tại văn phòng của tôi để làm những gì bạn đang cố gắng, tuy nhiên với Smart-UPS được kết nối qua USB thay vì Back-UPS.


Vui lòng thêm chi tiết vì đây là một thiết lập không có giấy tờ liên quan đến APC hoặc vmware.
dunxd

1

Mặc dù có thể (có thể / nói chung), tôi không nghĩ việc tắt máy tính tự động bằng nguồn pin là một ý tưởng hay. Nếu bạn sẽ làm điều đó, thì với hầu hết các mục đích và mục đích thực tế, có lẽ bạn chỉ nên tiết kiệm cho mình một bộ lưu điện dùng pin và để mất điện cho máy. (Được cho phép, tắt máy sạch sẽ luôn thích hợp với việc mất điện, nhưng bạn dường như đang bỏ lỡ thời gian sử dụng pin lâu hơn một vài phút nếu bạn tự động tắt mọi thứ khi bạn mất nguồn. )

Cách tôi luôn xử lý là theo dõi cảnh báo các SA khi mất điện, vì vậy các SA có thể sử dụng chất xám của mình để quyết định khi nào (hoặc thậm chí nếu) tắt máy chủ. Nếu đó là sự cố ngừng hoạt động, có thể không nên tắt máy chủ, hoặc bạn có thể muốn để một số máy chủ hoạt động lâu nhất có thể và chỉ tắt chúng trước khi pin sắp hết. Thực sự đối với tôi như một nhiệm vụ ra quyết định phù hợp với con người hơn là một quy tắc đơn giản.


Bạn không phải định cấu hình bộ lưu điện của mình để kích hoạt tắt máy ngay lập tức, nhưng bạn muốn nó tắt trước khi hết pin, bạn sẽ phải mua thêm pin, đặc biệt là ở một số nơi tôi làm việc và mất điện hằng ngày. Tất nhiên, thật tuyệt khi có sự tham gia của con người, nhưng bạn không phải lúc nào cũng có Quản trị viên Hệ thống trong một văn phòng ở xa.
dunxd

@dunxd Điểm hay - Tôi quen với môi trường HA hơn, nơi ít nhất một số máy chủ phải ở lại, đến địa ngục hoặc nước cao, vì vậy tên của trò chơi đang tìm ra cách phân phối tốt nhất cho sức mạnh (tắt một cách có chọn lọc thiết bị xuống) để tạo ra tác động dịch vụ ít nhất có thể, đó sẽ không phải là trọng tâm hoặc trường hợp sử dụng của mọi người.
Vô vọngN00b

1

Vào thời xa xưa của việc cài đặt từ xa , APC PowerChute Plus là một phần thiết yếu trong quá trình cài đặt của tôi. Sử dụng cáp tín hiệu nối tiếp đơn giản và nhị phân chỉ có Red Hat của họ , thật dễ dàng để thiết lập các quy tắc để quản lý một máy chủ được gắn cục bộ. Thông báo email cơ bản cho các sự kiện pin UPC, sự kiện nguồn điện và hành động tắt máy đã có sẵn:

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

UPS on battery: Blackout 000.0 V. 

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Normal power restored: UPS on line.  

hoặc là

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Shutdown started.  

Cộng với một giao diện hợp lý để xem những gì đang xảy ra ...

nhập mô tả hình ảnh ở đây

Phần mềm đó cuối cùng đã được thương mại hóa (hoặc được chôn trên trang web của APC). Có một vài cách tiếp cận nguồn mở để cung cấp một cái gì đó tương tự. Nhưng tất cả điều này trở nên phức tạp với các máy chủ VMWare ESXi.

Có vẻ như đây là thứ mà VMWare nên tích hợp vào bộ ảo hóa cơ sở. Đó là cơ bản và có thể cung cấp một mức độ bảo vệ tốt cho người dùng. Các biện pháp khắc phục phổ biến nhất tôi thấy hiện nay là truyền qua USB cho máy ảo chuyên dụng, phương pháp tiếp cận mạng hoặc làm những gì tôi làm; không cấu hình bất kỳ tắt máy tự động hoặc pin ...

Cấp, tôi thường đi với một UPS có thể hỗ trợ tải hệ thống trong một giờ trở lên, nhưng mất điện kéo dài DO xảy ra. Có thể một cách khác là thu thập một vài thẻ giao diện mạng chi phí thấp hoặc được tân trang lại và lên kế hoạch mua các thiết bị SmartUPS ở mức tối thiểu ...


0

Kiểm tra các liên kết sau đây . Không phải là giải pháp thanh lịch nhất, nhưng là một giải pháp rất thực tế, rất đơn giản. Có những hạn chế có thể có về bảo mật (tùy thuộc vào thiết kế mạng cụ thể của bạn, khách đã tải trên Máy chủ và người dùng truy cập phải đến những khách đó nhưng bạn có thể thực hiện cuộc gọi đó.


0

Tôi đã sử dụng giải pháp MrMajestyk và chỉ thay đổi quyền truy cập ssh thông qua plink với quyền truy cập ssh mà không có mật khẩu sử dụng khóa công khai rsa. Khóa rsa được tạo trong VM apcupsd phải được bao gồm trong / etc / ssh / Keys-root / ủy quyền_key của máy chủ vmware.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.