요약
이 기사에서는 키나 조합없이 금고를 열 수있는 볼트 오작동으로 인해 스택 온 센티넬 총 안전 문제에 대해 논의합니다. 또한 오작동 및 가능한 솔루션에 관한 개인적인 경험과 통찰력을 제공합니다. 또한, 우리는 중국의 금고 제조 비용과 미국의 최종 소매 가격을 다루고 있습니다.
1. Stack-on Sentinel Gun Safes의 문제는 무엇입니까??
이 금고의 볼트 오작동을 통해 키나 조합없이 열 수 있습니다.
2. 이 금고에 대한 리콜 통지는 무엇입니까??
Consumer Product Safety Commission은 약 1,250 개의 스택 온 Sentinel Gun Safes에 대한 리콜을 발행했습니다.
삼. 리콜 된 금고의 특성은 무엇입니까??
금고는 검은 색이며 40 인치 x 25 인치 x 55 인치, 3 개의 선반이 있습니다. 그들은 약 10 개의 총기를 보관할 수 있습니다.
4. 리콜 된 금고의 스타일 번호는 어떻게 식별됩니까??
스타일 번호 인 FSS18-64-MB-E-S는 배송 포장에서 찾을 수 있습니다.
5. 이 금고는 어디에 팔렸습니까??
금고는 2018 년 11 월부터 2018 년 12 월까지 전국적으로 Dick ‘s Sporting Goods 매장에서 판매되었습니다.
6. 이러한 금고와 관련된 잠재적 위험은 무엇입니까??
금고 안에 저장된 총기에 쉽게 접근 할 수 있으면 부상 위험이 있습니다.
7. 전자 콤보 어셈블리를 기계식 잠금으로 대체 할 수 있습니까??
예, 전자 콤보 어셈블리를 실제 기계식 잠금으로 교체 할 수 있습니다.
8. 스택 온 금고는 얼마나 신뢰할 수 있습니까??
스택 온 금고는 일반적으로 하단에있는 것으로 간주되지만 여전히 가격을 위해 서비스를 제공해야합니다.
9. 총기를 저장하기에 충분한 스택 온도입니다?
그들은 최고 품질의 금고가 아닐 수도 있지만, 특정 개인에게 충분히 의도 된 목적을 제공 할 수 있습니다.
10. 제조 비용은 금고의 소매 가격에 얼마나 많은 영향을 미칩니 까??
제조업체, 소매 업체, 운송 비용 및 생산 비용의 이익을 고려할 때 $ 700의 금고는 약 100 달러 정도의 비용이들 수 있습니다.
Azure Stack Hub 가상 머신을 Microsoft Sentinel에 연결하십시오
Azure 스택 허브 가상 머신을 Microsoft Sentinel에 연결하려면 기존 VM에 가상 머신 확장을 추가해야합니다. 이렇게하면 하나의 중앙 위치에서 Azure 및 Azure Stack Hub에서 실행되는 VM을 모니터링 할 수 있습니다.
Azure Stack Hub 가상 머신을 Microsoft Sentinel에 연결하십시오
구성에 따라이 시나리오가 발생할 수있는 것일 수도 있습니다
Make Sentinel에 쌓입니다?
“볼트 오작동으로 인해 약 1,250 개의 스택 온 센티넬 총 금고가 리콜되고 있습니다.
소비자 제품 안전위원회는 리콜이 목요일에 발행되었다고보고했습니다.
볼트 오작동으로 인해 키나 조합을 사용하지 않고도 금고가 열릴 수있어 내부에 저장된 총기에 접근 할 수있어 부상 위험이 있습니다.
리콜 된 금고는 검은 색이며 40 인치 x 25 인치 x 55 인치입니다. 그들은 3 개의 선반이 있으며 약 10 개의 총기를 보관할 수 있습니다.
리콜 된 스타일 번호 인 FSS18-64-MB-E-S는 배송 포장에서 찾을 수 있습니다.
제품은 Dick에서 판매되었습니다’2018 년 11 월부터 2018 년 12 월까지 약 700 달러에 S Sporting Goods 매장.”
2009 년부터 암 전투기 (비호 지킨 림프종), 현재 확산 대형 B 세포 림프종과 싸우고 있습니다.
이들 중 일부는 종이 클립으로 잠금 장치를 우회 할 수있을 정도로 나쁘지만 이제는 일부에서 일부에서는 손잡이를 돌려야한다는 것을 알게되고 잠금 우회는 자체적으로 우회해야한다는 것을 알게됩니다.
실제 “오작동”이 무엇인지 알고 싶습니다.
2009 년부터 암 전투기 (비호 지킨 림프종), 현재 확산 대형 B 세포 림프종과 싸우고 있습니다.
크래커 잭스 전자 콤보 어셈블리를 실제 기계식 잠금으로 교체 할 수 있습니까??
해당 모델의 잠금은 오메가 중복 스윙 볼트로 보입니다. 그렇습니다. 금고에 다른 표준 잠금을 넣을 수 있습니다.
2009 년부터 암 전투기 (비호 지킨 림프종), 현재 확산 대형 B 세포 림프종과 싸우고 있습니다.
최선의 노력에도 불구하고 내 브루더는 전자 콤보 잠금 건 금고를 구입했습니다. (아마도 더 나은 것 중 하나가 아닐 것입니다).
5 년 후 9 볼트 배터리가 새로 사용되면 잠금 장치 만 열 수 있습니다. 나는 그에게 서비스를 받도록 경고했다.
안전 키도 없습니다.
이들은 Dicks Limp 표준에 특별히 제조되었을 수 있습니다.
스택 온 금고는 하단이지만 700 달러는 서비스 가능해야합니다.
나는 사물함에 두 개의 판금 스택이 있습니다 .22 등. 그들은 술집으로 열려있을 수 있지만, 약간의 노력이 필요할 것이며, 의도 된 용도에 충분히 좋습니다.
무거운 볼트 금고는 안정적인 잠금 장치, 온도 저항력이 있고 열기가 매우 어렵고, 쇼를하지 않고 운반에 저항 할 수있을 정도로 무겁기나 볼 수 있어야합니다 (대여 할 수 없음).
하단이더라도 작동 할 수없는 금고에 대한 변명은 없습니다.
나는 Stack-on이 실제 금고를 만들었 음을 알지 못했습니다. 나는 항상 이름을 저렴한 판금 캐비닛 및 도구 상자와 연결합니다.
하단이더라도 작동 할 수없는 금고에 대한 변명은 없습니다
수학을 거꾸로 실행할 때 변명을 이해하는 것이 더 쉽습니다.
중국에는 기계로 가득 찬 바지가 있습니다. 그들은 강철, 페인트, 카펫, 목재를 사고 필요한 모든 부품과 조각을 구입합니다. 그들은 이것을 최종 제품으로 조립하고 바다로 운송 한 다음 미국으로 배송합니다.
미국에서 일단 전국에 트럭으로 운송되고 상점에 배치되어 표시되어 700 달러에 판매되었습니다.
금고가 실제로 소매 업체의 이익, 운송 비용, 제조업체의 이익 및 생산 비용을 고려하는 데 실제로 비용이 든다고 생각하십니까?? 그래서 당신이 상점에서 700 달러의 중국 금고를 안고있을 때는 실제로 $ 100 금고를보고 있습니다.
최신 제품 :
“나치는 다른 모든 사람들을 폭격 할 것이라는 오히려 유치한 망상 으로이 전쟁에 들어갔고 아무도 그들을 폭파 할 것입니다. 런던, 로테르담, 바르샤바와 다른 50 곳의 다른 곳에서는 오히려 순진한 이론을 운영했습니다. 그들은 바람을 뿌렸고 이제 그들은 회오리 바람을 거두게 될 것입니다.”
-폭격기 해리스
원래 일부 샷에 의해 게시 됨 :
이들은 Dicks Limp 표준에 특별히 제조되었을 수 있습니다.
칵테일은 마음을 가리면 새우 칵테일이 될 수 있으며 주머니에 느슨한 새우를 많이 가지고 다니면.
마십시오 מלא י רחפת ה בצל × 님
원래 A1ABDJ에 의해 게시 됨 :
하단이더라도 작동 할 수없는 금고에 대한 변명은 없습니다
수학을 거꾸로 실행할 때 변명을 이해하는 것이 더 쉽습니다.
중국에는 기계로 가득 찬 바지가 있습니다. 그들은 강철, 페인트, 카펫, 목재를 사고 필요한 모든 부품과 조각을 구입합니다. 그들은 이것을 최종 제품으로 조립하고 바다로 운송 한 다음 미국으로 배송합니다.
미국에서 일단 전국에 트럭으로 운송되고 상점에 배치되어 표시되어 700 달러에 판매되었습니다.
금고가 실제로 소매 업체의 이익, 운송 비용, 제조업체의 이익 및 생산 비용을 고려하는 데 실제로 비용이 든다고 생각하십니까?? 그래서 당신이 상점에서 700 달러의 중국 금고를 안고있을 때는 실제로 $ 100 금고를보고 있습니다.
그리고 부상에 모욕을 더하기 위해, a “안전한” 저것’S 간단한 금이 간단합니다.
2009 년부터 암 전투기 (비호 지킨 림프종), 현재 확산 대형 B 세포 림프종과 싸우고 있습니다.
기다리세요. 귀하의 요청이 처리 중입니다. |
Azure Stack Hub 가상 머신을 Microsoft Sentinel에 연결하십시오
Microsoft Sentinel을 사용하면 Azure 및 Azure Stack Hub에서 실행되는 VM을 한곳에서 모니터링 할 수 있습니다. Azure 스택 머신을 Microsoft Sentinel에 온보드하려면 먼저 기존 Azure Stack Hub Virtual Machines에 가상 머신 확장을 추가해야합니다.
Azure 스택 허브 머신을 연결 한 후 데이터를 기반으로 표면 통찰력을 가진 대시 보드 갤러리 중에서 선택하십시오. 이 대시 보드는 귀하의 요구에 맞게 쉽게 사용자 정의 할 수 있습니다.
가상 머신 확장을 추가하십시오
추가 Azure 모니터, 업데이트 및 구성 관리 Azure 스택 허브에서 실행중인 가상 머신에 대한 가상 머신 확장.
- 새 브라우저 탭에서 Azure 스택 허브 포털에 로그인.
- 가십시오 가상 머신 페이지, Microsoft Sentinel로 보호하려는 가상 시스템을 선택하십시오. Azure Stack Hub에서 가상 머신을 만드는 방법에 대한 자세한 내용은 Azure Stack Hub Portal을 사용하여 Wind.
- 선택하다 확장. 이 가상 머신에 설치된 가상 머신 확장 목록에 표시됩니다.
- 선택하십시오 추가하다 탭. 그만큼 새로운 자원 메뉴 블레이드가 열리고 사용 가능한 가상 머신 확장 목록을 표시합니다.
- 선택하십시오 Azure 모니터, 업데이트 및 구성 관리 확장 및 선택 만들다. 그만큼 확장자를 설치하십시오 구성 창이 열립니다.
참고 당신이 표시되지 않으면 참고 참고 Azure 모니터, 업데이트 및 구성 관리 마켓 플레이스에 나열된 Extension, Azure Stack Hub 운영자에게 연락하여 사용할 수 있도록.
Windows의 에이전트 설치 및 구성에 대한 자세한 내용은 Connect Windows 컴퓨터를 참조하십시오.
에이전트 문제의 Linux 문제 해결에 대해서는 Azure Log Analytics Linux 에이전트 문제 해결을 참조하십시오.
Azure의 Microsoft Sentinel Portal에서 가상 머신, 모든 VM 및 컴퓨터에 대한 개요와 함께.
리소스 정리
더 이상 필요하지 않은 경우 Azure Stack Hub Portal을 통해 가상 시스템에서 확장을 제거 할 수 있습니다.
확장을 제거하려면 :
- 열기 Azure 스택 허브 포털.
- 이동 가상 머신 페이지, 확장자를 제거하려는 가상 시스템을 선택하십시오.
- 선택하다 확장, 확장자를 선택하십시오 마이크로 소프트.Enterprisecloud.모니터링.
- 선택하다 제거, 선택을 확인하십시오.
다음 단계
Microsoft Sentinel에 대한 자세한 내용은 다음 기사를 참조하십시오
- 데이터 및 잠재적 위협에 대한 가시성을 얻는 방법을 알아보십시오.
- Microsoft Sentinel로 위협을 감지하기 시작하십시오.
- 공통 이벤트 형식의 어플라이언스에서 Microsoft Sentinel로 데이터를 스트리밍합니다.
닫은
도움과 장비를 준비하여 이것을 땅에서 운송으로 이동하십시오! 이동을 완화하기 위해 안전한 도어 제거에 대한 유용한 비디오는 YouTube를 참조하십시오. 픽업은 지상에 있으며 로딩 도크 없음. 팔레트 잭이 있습니다. 우리는 포크 리프트가 없습니다.
이 모델에는 PDF가 없습니다. 레이블 및 디스플레이 정보의 사진을 참조하십시오.
정보로드 : 도움과 장비를 준비 하여이 점을 지상에서 운송으로 옮기십시오! 이동을 완화하기 위해 안전한 도어 제거에 대한 유용한 비디오는 YouTube를 참조하십시오. 픽업은 지상에 있으며 로딩 도크 없음. 팔레트 잭이 있습니다. 우리는 포크 리프트가 없습니다.
더 많은로드 정보 (스택 온에서.com/pages/faq) :
Q : 문의 무게는 얼마입니까??
A : 금고 총 중량의 약 1/3.
Q : 문을 제거 할 수 있습니다?
A : 그렇습니다. 문을 열고 힌지 캡을 제거하십시오. 문을 조심스럽게 들어 올리십시오 – 팀 리프트가 필요하고 문이 매우 무겁고 교체 할 수 없습니다.
질문이 있거나 자세한 내용은 (612)298-8901로 문의하십시오. SevenIN10@SSMNet에서 이메일로도 연락 할 수 있습니다.그물 . 질문으로 마크에 도달 할 수 없다면 Kim으로 763-218-6591로 전화하십시오.
V-Man은 큰 금고를 배송하지 않습니다. 휴대용 케이스, 더 작은 금고 및 대부분의 다른 품목을 배송 할 수 있습니다. 준비하려면 저희에게 연락하십시오.
로드 아웃은지면에 있습니다. 큰 품목을 구매하는 경우 품목을로드하는 데 필요한 인력, 장비 및 차량을 가져 오십시오. 로딩에 대한 도움은 사용할 수 없습니다. 우리는 팔레트 잭이 있지만 포크 리프트는 없습니다.
최고 입찰자에게 매장량이없는 모든 판매! 검사 약속 기회를 활용하거나 질문이있는 전화/이메일! 검사 대신 사진과 설명을 사용해서는 안되며 픽업 일은 검사 일이 아닙니다. 모든 것이 어디에있는대로 판매됩니다. t 여기에 판매 된 품목의 조정 또는 거부는 없습니다. 찾아 주셔서 감사합니다!!
점검:
금요일, 2016 년 10 월 7 일
오전 10시 – 오후 02:00
경매 마감 :
Sun, 2016 년 10 월 9 일
제거:
Tue, 2016 년 10 월 11 일
09:30 am -05:30 PM
입찰 증분 :
입찰 범위 | 최소 증분 | ||
---|---|---|---|
$ 0.01 | – | $ 75.00 | $ 1.00 |
$ 75.01 | – | $ 150.00 | $ 5.00 |
$ 150.01 | – | $ 250.00 | $ 10.00 |
$ 250.01 | – | $ 500.00 | $ 25.00 |
$ 500.01 | – | $ 1,000.00 | $ 50.00 |
$ 1,000.01 | – | $ 5,000.00 | $ 75.00 |
$ 5,000.01 | – | $ 50,000.00 | $ 100.00 |
$ 50,000.01 | – | $ 75,000.00 | $ 250.00 |
$ 75,000.01 | – | $ 100,000.00 | $ 500.00 |
$ 100,000.01 | – | $ 2,500,000.00 | $ 1,000.00 |
할인 된 구매자의 프리미엄 | 일반 구매자의 프리미엄 | 캡 |
---|---|---|
10.00% | 13.00% | $ 3,250.00 |
이 경매는 계약 및 관리에 의해 관리됩니다. V-Man Auctions
관리자 : Mark Cooper
현금, 신용, 계산원’S/은행 수표
이 경매는 V-Man 경매에 의해 수축되고 관리됩니다. 이 경매에 입찰을하면 K-BID 사용자 약관 외에 아래에 나열된 경매에 동의합니다. 독립적 인 제휴사, K-Bid Online, Inc가 계약하고 관리하는 경매의 경우. 장소로만 행동하고 있으며이 경매에 관한 분쟁이나 문제에 관여하지 않습니다. 모든 것이 판매됩니다 “그대로, 어디에” 보증이나 보증이 없습니다. 구매 전에 품목을 검사 할 책임이 있습니다. 이 경매에 13% 구매자 프리미엄 (13% BP)이 있습니다. 전염병이없는 모든 비 신용/직불 카드 결제 (인보인 금액)는 구매자 프리미엄 (10% BP)이 3% 감소합니다. 적용 가능한 미네소타 판매 세가 징수됩니다. 경매가 끝날 때 활성 품목은 3 분 동안 입찰이 접수되지 않을 때까지 열려 있습니다. 중요 참고 사항 : 품목의 높은 입찰자가 구매를 인정하지 않으면 K-Bid Systems. 당첨 입찰이 선의의 입찰자가 아니라고 판단하면 항목은 다음 두 번째로 높은 입찰에 자동으로 이동하지 않습니다.
이 경매는 독립 계열사가 계약하고 관리합니다. 이 경매에 입찰하면 K-BID 사용자 약관 및 계약 외에이 페이지에 나열된 경매 특정 이용 약관에 동의합니다.
K-Bid Online, Inc. (K-Bid)는 K-Bid를 유지 관리합니다.com 웹 사이트. K-bid.COM은 독립 경매 회사 (계열사)가 입찰자에게 온라인 경매를 제시하기 위해 사용하는 장소 역할을합니다.
K-bid’k-bid에 나열된 경매에서의 역할.com은 제휴 경매장을 제공하는 것으로 제한됩니다. 계열사는 직원, 대리인, 담당자 또는 K-Bid Online, Inc의 파트너가 아닙니다. K-bid’개별 경매 및 개별 경매 거래에 대한 지식은 웹 사이트에 나타나는 정보로 제한됩니다.
K-Bid에 입찰을함으로써.com, 입찰자들은 그들이 18 세 이상인지 확인하고 그들이 K-bid를 모두 이해하고 준수한다는 것을 인정하고 있습니다.com 웹 사이트 이용 약관 및 경매 특정 용어. 입찰자는 자신의 비밀번호 나 계정 정보를 누구와 공유해서는 안됩니다. 입찰자는 자신의 계정에 입찰에 대한 책임이 있습니다.
검사 날짜/시간은 모든 경매에 사용할 수 있습니다. 입찰자는 입찰을하기 전에 검사를 강력히 권장합니다. 제거 일은 검사 일이 아닙니다. 경매가 끝나고 입찰자 송장이 입찰자에 나타나면’s 대시 보드, 입찰자는 입찰을 존중해야합니다.
모든 경매 품목은 판매됩니다 “그대로, 어디에” 보증이나 보증이 없습니다. 구매 전에 품목을 검사 할 책임이 있습니다.
입찰자는 경매 용어를 알고 준수 할 책임이 있습니다. 제거 조건을 준수하지 않으면 입찰 권한이 장애가 발생할 수 있습니다. 입찰이 배치되면 철회 할 수 없습니다.
판매자와 그 대리인은 자신의 자산에 입찰 할 수 없습니다.
예비 가격이 충족되지 않으면 보호 구역이있는 품목은 판매되지 않습니다.
경매가 끝나면 3 분 동안 입찰이 접수되지 않을 때까지 활성 품목이 열려 있습니다.
해당 판매 세는 경매를 관리하는 계열사가 징수합니다.
노쇼 송장으로 인해 입찰 권한이 종료되는 경우, 비 지불 송장의 20%의 페널티 수수료와 $ 25의 복원 수수료 후에 만 입찰자는 K-Bid의 재량에 따라 복원 될 수 있습니다.00은 K-BID에 지불되었으며 운전 면허증의 스캔 된 사본을 당사에 이메일로 보냈습니다. 송장 품목은 수여되지 않습니다. 지불은 처벌 적이며 노쇼를 막기위한 것입니다. 중복 입찰자 계정은 존재하기로 결정하면 비활성화됩니다. 가능하고 우리의 재량에 따라 K-Bid는 용의자 입찰자가 제시했다고 생각하는 입찰을 삭제할 권리를 보유합니다. 사기 탐지 시스템에 나타나는 등록은 보류 중이며 사용자가 확인 될 때까지 입찰을 제거 할 수 있습니다. K-Bid Online, Inc는 웹 사이트에 입찰하지 못하게 할 권리가 있습니다. 상환 의도가없는 명백한 입찰 사례는 적절한 법률 당국에 회부됩니다.
제휴사는 경매가 닫히기 전후에 언제든지 많은 예비비를 낮출 수 있습니다. 경매가 진행되는 동안 보호 구역이 낮아지면 해당 예비 준비 메시지는 다음 필요한 입찰 정보 아래에 나타납니다 (예비 준비 또는 예약이 충족되지 않음). 낮은 예비 금액이 충족되면 자산은 높은 입찰자에게 판매됩니다. 경매가 종료 된 후 보호 구역이 낮아지면 경매 클로즈에서 가장 높은 입찰자는 승리 입찰자 송장을 받게됩니다.
경매가 마감 프로세스를 시작하면 발표되지 않음.
입찰이 배치되면 철회 할 수 없습니다.
닫은
질문이 있거나 자세한 내용은 (612)298-8901로 문의하십시오. SevenIN10@SSMNet에서 이메일로도 연락 할 수 있습니다.그물 . 질문으로 마크에 도달 할 수 없다면 Kim으로 763-218-6591로 전화하십시오.
V-Man은 큰 금고를 배송하지 않습니다. 휴대용 케이스, 더 작은 금고 및 대부분의 다른 품목을 배송 할 수 있습니다. 준비하려면 저희에게 연락하십시오.
로드 아웃은지면에 있습니다. 큰 품목을 구매하는 경우 품목을로드하는 데 필요한 인력, 장비 및 차량을 가져 오십시오. 로딩에 대한 도움은 사용할 수 없습니다. 우리는 팔레트 잭이 있지만 포크 리프트는 없습니다.
최고 입찰자에게 매장량이없는 모든 판매! 검사 약속 기회를 활용하거나 질문이있는 전화/이메일! 검사 대신 사진과 설명을 사용해서는 안되며 픽업 일은 검사 일이 아닙니다. 모든 것이 어디에있는대로 판매됩니다. t 여기에 판매 된 품목의 조정 또는 거부는 없습니다. 찾아 주셔서 감사합니다!!
점검:
금요일, 2016 년 10 월 7 일
오전 10시 – 오후 02:00
경매 마감 :
Sun, 2016 년 10 월 9 일
제거:
Tue, 2016 년 10 월 11 일
09:30 am -05:30 PM
입찰 증분 :
입찰 범위 | 최소 증분 | ||
---|---|---|---|
$ 0.01 | – | $ 75.00 | $ 1.00 |
$ 75.01 | – | $ 150.00 | $ 5.00 |
$ 150.01 | – | $ 250.00 | $ 10.00 |
$ 250.01 | – | $ 500.00 | $ 25.00 |
$ 500.01 | – | $ 1,000.00 | $ 50.00 |
$ 1,000.01 | – | $ 5,000.00 | $ 75.00 |
$ 5,000.01 | – | $ 50,000.00 | $ 100.00 |
$ 50,000.01 | – | $ 75,000.00 | $ 250.00 |
$ 75,000.01 | – | $ 100,000.00 | $ 500.00 |
$ 100,000.01 | – | $ 2,500,000.00 | $ 1,000.00 |
할인 된 구매자의 프리미엄 | 일반 구매자의 프리미엄 | 캡 |
---|---|---|
10.00% | 13.00% | $ 3,250.00 |
이 경매는 계약 및 관리에 의해 관리됩니다. V-Man Auctions
관리자 : Mark Cooper
현금, 신용, 계산원’S/은행 수표
이 경매는 V-Man 경매에 의해 수축되고 관리됩니다. 이 경매에 입찰을하면 K-BID 사용자 약관 외에 아래에 나열된 경매에 동의합니다. 독립적 인 제휴사, K-Bid Online, Inc가 계약하고 관리하는 경매의 경우. 장소로만 행동하고 있으며이 경매에 관한 분쟁이나 문제에 관여하지 않습니다. 모든 것이 판매됩니다 “그대로, 어디에” 보증이나 보증이 없습니다. 구매 전에 품목을 검사 할 책임이 있습니다. 이 경매에 13% 구매자 프리미엄 (13% BP)이 있습니다. 전염병이없는 모든 비 신용/직불 카드 결제 (인보인 금액)는 구매자 프리미엄 (10% BP)이 3% 감소합니다. 적용 가능한 미네소타 판매 세가 징수됩니다. 경매가 끝날 때 활성 품목은 3 분 동안 입찰이 접수되지 않을 때까지 열려 있습니다. 중요 참고 사항 : 품목의 높은 입찰자가 구매를 인정하지 않으면 K-Bid Systems. 당첨 입찰이 선의의 입찰자가 아니라고 판단하면 항목은 다음 두 번째로 높은 입찰에 자동으로 이동하지 않습니다.
이 경매는 독립 계열사가 계약하고 관리합니다. 이 경매에 입찰하면 K-BID 사용자 약관 및 계약 외에이 페이지에 나열된 경매 특정 이용 약관에 동의합니다.
K-Bid Online, Inc. (K-Bid)는 K-Bid를 유지 관리합니다.com 웹 사이트. K-bid.COM은 독립 경매 회사 (계열사)가 입찰자에게 온라인 경매를 제시하기 위해 사용하는 장소 역할을합니다.
K-bid’k-bid에 나열된 경매에서의 역할.com은 제휴 경매장을 제공하는 것으로 제한됩니다. 계열사는 직원, 대리인, 담당자 또는 K-Bid Online, Inc의 파트너가 아닙니다. K-bid’개별 경매 및 개별 경매 거래에 대한 지식은 웹 사이트에 나타나는 정보로 제한됩니다.
K-Bid에 입찰을함으로써.com, 입찰자들은 그들이 18 세 이상인지 확인하고 그들이 K-bid를 모두 이해하고 준수한다는 것을 인정하고 있습니다.com 웹 사이트 이용 약관 및 경매 특정 용어. 입찰자는 자신의 비밀번호 나 계정 정보를 누구와 공유해서는 안됩니다. 입찰자는 자신의 계정에 입찰에 대한 책임이 있습니다.
검사 날짜/시간은 모든 경매에 사용할 수 있습니다. 입찰자는 입찰을하기 전에 검사를 강력히 권장합니다. 제거 일은 검사 일이 아닙니다. 경매가 끝나고 입찰자 송장이 입찰자에 나타나면’s 대시 보드, 입찰자는 입찰을 존중해야합니다.
모든 경매 품목은 판매됩니다 “그대로, 어디에” 보증이나 보증이 없습니다. 구매 전에 품목을 검사 할 책임이 있습니다.
입찰자는 경매 용어를 알고 준수 할 책임이 있습니다. 제거 조건을 준수하지 않으면 입찰 권한이 장애가 발생할 수 있습니다. 입찰이 배치되면 철회 할 수 없습니다.
판매자와 그 대리인은 자신의 자산에 입찰 할 수 없습니다.
예비 가격이 충족되지 않으면 보호 구역이있는 품목은 판매되지 않습니다.
경매가 끝나면 3 분 동안 입찰이 접수되지 않을 때까지 활성 품목이 열려 있습니다.
해당 판매 세는 경매를 관리하는 계열사가 징수합니다.
노쇼 송장으로 인해 입찰 권한이 종료되는 경우, 비 지불 송장의 20%의 페널티 수수료와 $ 25의 복원 수수료 후에 만 입찰자는 K-Bid의 재량에 따라 복원 될 수 있습니다.00은 K-BID에 지불되었으며 운전 면허증의 스캔 된 사본을 당사에 이메일로 보냈습니다. 송장 품목은 수여되지 않습니다. 지불은 처벌 적이며 노쇼를 막기위한 것입니다. 중복 입찰자 계정은 존재하기로 결정하면 비활성화됩니다. 가능하고 우리의 재량에 따라 K-Bid는 용의자 입찰자가 제시했다고 생각하는 입찰을 삭제할 권리를 보유합니다. 사기 탐지 시스템에 나타나는 등록은 보류 중이며 사용자가 확인 될 때까지 입찰을 제거 할 수 있습니다. K-Bid Online, Inc는 웹 사이트에 입찰하지 못하게 할 권리가 있습니다. 상환 의도가없는 명백한 입찰 사례는 적절한 법률 당국에 회부됩니다.
제휴사는 경매가 닫히기 전후에 언제든지 많은 예비비를 낮출 수 있습니다. 경매가 진행되는 동안 보호 구역이 낮아지면 해당 예비 준비 메시지는 다음 필요한 입찰 정보 아래에 나타납니다 (예비 준비 또는 예약이 충족되지 않음). 낮은 예비 금액이 충족되면 자산은 높은 입찰자에게 판매됩니다. 경매가 종료 된 후 보호 구역이 낮아지면 경매 클로즈에서 가장 높은 입찰자는 승리 입찰자 송장을 받게됩니다.
경매가 마감 프로세스를 시작하면 발표되지 않음.
입찰이 배치되면 철회 할 수 없습니다.
Redis Sentinel의 고 가용성
Sentinel 자체는 함께 협력하는 여러 센티넬 프로세스가있는 구성으로 실행되도록 설계되었습니다. 여러 센티넬 프로세스 협력의 장점은 다음과 같습니다
- 다수의 센티넬이 주어진 마스터가 더 이상 사용할 수 없다는 사실에 동의하면 실패 감지가 수행됩니다. 이것은 잘못된 양성의 확률을 낮 춥니 다.
- Sentinel은 모든 Sentinel 프로세스가 작동하지 않더라도 작동하므로 시스템이 실패에 대해 강력하게 만듭니다. 결국 장애 조치 시스템을 갖는 데는 재미가 없습니다.
Sentinel, Redis 인스턴스 (마스터 및 복제본) 및 Sentinel 및 Redis에 연결하는 클라이언트의 합도 특정 특성을 가진 더 큰 분산 시스템입니다. 이 문서에서 개념은 Sentinel의 기본 속성을 이해하기 위해 필요한 기본 정보에서 Sentinel의 작동 방식을 정확하게 이해하기 위해보다 복잡한 정보 (선택 사항)까지 점차적으로 소개됩니다.
Sentinel 빠른 시작
센티넬 획득
현재 버전의 Sentinel이 호출됩니다 센티넬 2. 더 강력하고 간단한 예측 알고리즘을 사용하여 초기 센티넬 구현을 다시 작성하는 것입니다 (이 문서에 설명 된).
Redis 2 이후로 Redis Sentinel의 안정적인 출시가 배송됩니다.8.
새로운 발전이 수행됩니다 불안정한 지점 및 새로운 기능은 때때로 안정적인 것으로 간주되는 즉시 최신 안정 지점으로 다시 포팅됩니다.
Redis Sentinel 버전 1, Redis 2와 함께 배송됩니다.6, 더 이상 사용되지 않아 사용해서는 안됩니다.
Sentinel 달리기
Redis-Sentinel 실행 파일을 사용하고있는 경우 (또는 Redis-Server 실행 파일에 해당 이름과 상징적 링크가있는 경우) 다음 명령 줄로 Sentinel을 실행할 수 있습니다
Redis-Sentinel/Path/to/Sentinel.콘크리트
그렇지 않으면 Sentinel 모드에서 시작하는 Redis-Server 실행 파일을 직접 사용할 수 있습니다
Redis-Server/Path/to/Sentinel.conf -sentinel
두 가지 방법은 동일하게 작동합니다.
하지만 필수입니다 Sentinel을 실행할 때 구성 파일을 사용하려면이 파일이 시스템에서 사용하여 재시작시 다시로드 될 현재 상태를 저장합니다. Sentinel은 구성 파일이 제공되지 않거나 구성 파일 경로를 쓸 수없는 경우 시작을 거부합니다.
기본적으로 센티넬 TCP 포트 26379 연결 듣기, Sentinels가 작동하기 위해서는 서버의 26379 포트 열려 있어야합니다 다른 Sentinel 인스턴스의 IP 주소에서 연결을 수신하려면. 그렇지 않으면 Sentinels는 말할 수없고 무엇을 해야하는지에 대해 동의 할 수 없으므로 장애 조치는 결코 수행되지 않습니다.
배포하기 전에 Sentinel에 대해 알아야 할 기본 사항
- 강력한 배포를 위해서는 최소 3 개의 Sentinel 인스턴스가 필요합니다.
- 세 명의 센티넬 인스턴스는 독립적 인 방식으로 실패한 것으로 여겨지는 컴퓨터 나 가상 머신에 배치해야합니다. 예를 들어 다른 가용성 영역에서 실행되는 다른 물리적 서버 또는 가상 머신과 같은.
- Sentinel + Redis 분산 시스템. 그러나 Window를 잃어버린 창을 특정 순간으로 제한하는 Sentinel을 배포하는 방법이 있으며,이를 배포하는 다른 덜 안전한 방법이 있습니다.
- 고객에게 Sentinel 지원이 필요합니다. 인기있는 클라이언트 라이브러리에는 Sentinel 지원이 있지만 전부는 아닙니다.
- 개발 환경에서 때때로 테스트하지 않으면 안전한 HA 설정이 없습니다. 당신은 너무 늦었을 때만 명백해질 수있는 오해가있을 수 있습니다 (마스터가 작동을 멈출 때 오전 3시에).
- Sentinel, Docker 또는 기타 형태의 네트워크 주소 변환 또는 포트 매핑은 주의와 혼합되어야합니다: Docker는 포트 리핑을 수행하여 다른 센티넬 프로세스의 Sentinel 자동 발견 및 마스터 용 복제품 목록을 수행합니다. 섹션을 확인하십시오 센티넬과 도커 자세한 내용은이 문서의 뒷부분에서.
센티넬 구성
Redis 소스 배포에는 Sentinel이라는 파일이 포함되어 있습니다.Conf는 Sentinel을 구성하는 데 사용할 수있는 자체 문서화 된 예제 구성 파일이지만 일반적인 최소 구성 파일은 다음과 같습니다
Sentinel Monitor Mymaster 127.0.0.1 6379 2 센티넬 하향-밀리 초의 MyMaster 60000 Sentinel Failover-Timeout MyMaster 180000 Sentinel Syncs MyMaster 1 Sentinel Monitor Resque 192.168.1.3 6380 4 센티넬 하향 -Milliseconds resque 10000 센티넬 장애 조치 시간 초과 180000 Sentinel Parallel-Syncs Resque 5
모니터링 할 마스터 만 지정하면 분리 된 각 마스터에게 기부해야합니다 (복제본이 많을 수 있음) 다른 이름. 자동으로 발견 된 복제본을 지정할 필요가 없습니다. Sentinel은 복제본에 대한 추가 정보로 구성을 자동으로 업데이트합니다 (다시 시작한 경우 정보를 유지하려면). 장애 조치 중에 복제본이 마스터하도록 홍보 될 때마다 구성이 다시 작성되고 새로운 센티넬이 발견 될 때마다 구성됩니다.
위의 예제 구성은 기본적으로 2 개의 redis 인스턴스 세트를 모니터링합니다. 한 세트의 인스턴스는 MyMaster라고하며 다른 하나는 resque입니다 .
센티넬 모니터 진술의 주장의 의미는 다음과 같습니다
센티넬 모니터
명확성을 위해 구성 옵션이 의미하는 바에 따라 라인별로 확인하겠습니다
첫 번째 줄은 Redis에게 전화를 걸어라는 마스터를 모니터링하는 데 사용됩니다 마스터, 그것은 주소 127에 있습니다.0.0.1 및 포트 6379, 정족수가 2입니다. 모든 것이 꽤 분명하지만 정족수 논쟁:
- 그만큼 정족수 마스터를 실제로 실패로 표시하고 가능한 경우 장애 조치 절차를 시작하기 위해 마스터가 도달 할 수 없다는 사실에 동의 해야하는 센티넬의 수입니다.
- 하지만 정족수는 실패를 감지하는 데만 사용됩니다. 실제로 장애 조치를 수행하려면 Sentinels 중 하나가 장애 조치에 대한 리더로 선출되어 진행할 권한이 있어야합니다. 이것은 투표에서만 발생합니다 대부분의 센티넬 프로세스.
예를 들어 5 개의 센티넬 프로세스가 있고 주어진 마스터의 쿼럼이 2 값으로 설정된 경우 다음과 같습니다
- 두 센티넬이 마스터가 도달 할 수없는 것에 대해 동시에 동의하면 두 사람 중 하나는 장애 조치를 시작하려고합니다.
- 총 3 개의 센티넬이 도달 할 수있는 경우 장애 조치가 승인되며 실제로 시작됩니다.
실용적으로 이것은 실패 중에 의미합니다 Sentinel은 대부분의 Sentinel 프로세스가 말할 수 없다면 장애 조치를 시작하지 않습니다 (일명 소수 파티션의 장애 조치 없음).
다른 센티넬 옵션
다른 옵션은 거의 항상 다음과 같습니다
보초
다음과 같은 목적으로 사용됩니다
- Down-Milliseconds는 밀리 초의 시간입니다. 인스턴스는 도달 할 수 없어야합니다 (핑에 응답하지 않거나 오류로 응답하고 있음).
- Parallel-Syncs는 동시에 장애 조치 후 새 마스터를 사용하도록 재구성 할 수있는 복제본 수를 설정합니다. 숫자가 낮을수록 장애 조치 프로세스가 완료되는 데 더 많은 시간이 걸리지 만 복제본이 오래된 데이터를 제공하도록 구성되면 모든 복제품이 마스터와 동시에 재 동기화되기를 원할 수 있습니다. 복제 프로세스는 대부분 복제본에 대한 차단되지 않지만 마스터의 벌크 데이터를로드하는 순간이 있습니다. 이 옵션을 1의 값으로 설정하여 한 번에 하나의 복제본 만 도달 할 수 없는지 확인할 수 있습니다.
추가 옵션은이 문서의 나머지 부분에 설명되어 있으며 예제 Sentinel에 문서화되어 있습니다.Conf 파일은 Redis 분포와 함께 제공됩니다.
런타임에 구성 매개 변수를 수정할 수 있습니다
- 마스터 별 구성 매개 변수는 Sentinel Set을 사용하여 수정됩니다 .
- 글로벌 구성 매개 변수는 Sentinel Config Set을 사용하여 수정됩니다 .
예제 Sentinel 배포
이제 Sentinel에 대한 기본 정보를 알았으므로 Sentinel 프로세스를 어디에 배치 해야하는지, 필요한 Sentinel 프로세스 수 등이 궁금 할 것입니다. 이 섹션에서는 몇 가지 예제 배포를 보여줍니다.
우리는 ASCII 아트를 사용하여 구성 예제를 그래픽 형식, 이것은 다른 기호의 의미입니다
+--------------------+ | 이것은 컴퓨터입니다 | | 또는 실패하는 vm | | 독립적으로. 우리 | | "Box"|라고 부릅니다 +--------------------+
우리는 상자 안에 실행중인 것을 씁니다
+-------------------+ | Redis Master M1 | | Redis Sentinel S1 | +-------------------+
다른 상자는 선으로 연결되어 다음과 같이 말할 수 있음을 보여줍니다
+-------------+ +-------------+ | Sentinel S1 | ------------- | 센티넬 S2 | +-------------+ +-------------+
네트워크 파티션은 슬래시를 사용하여 중단 된 라인으로 표시됩니다
+-------------+ +-------------+ | Sentinel S1 | ------ // ------ | 센티넬 S2 | +-------------+ +-------------+
- 마스터는 M1, M2, M3이라고합니다, . MN.
- 복제본을 R1, R2, R3이라고합니다, . RN (R은 레플리카)).
- 센티넬을 S1, S2, S3라고합니다, . Sn.
- 클라이언트를 C1, C2, C3라고합니다, . CN.
- Sentinel 작업으로 인해 인스턴스가 역할을 변경하면 정사각형 괄호 안에 넣으므로 [M1]는 Sentinel 개입으로 인해 이제 마스터 인 인스턴스를 의미합니다.
우리는 결코 보여주지 않을 것입니다 두 개의 센티넬 만 사용되는 설정, 센티넬은 항상 필요합니다 대다수와 이야기합니다 장애 조치를 시작하기 위해.
예 1 : 단지 두 센티넬, 이렇게하지 마세요
+----+ +----+ | M1 | ------- | R1 | | S1 | | S2 | + ----++ ----+ 구성 : 쿼럼 = 1
- 이 설정에서 마스터 M1이 실패하면 두 센티넬이 실패에 대한 합의에 도달 할 수 있기 때문에 R1이 홍보 될 것입니다 (쿼럼이 1으로 설정된 경우)는 2 개이기 때문에 장애 조치를 승인 할 수 있습니다. 따라서 피상적으로 작동 할 수는 있지만 다음 포인트를 확인 하여이 설정이 왜 끊어 졌는지 확인하십시오.
- M1이 실행중인 상자가 작동이 중지되면 S1도 작동을 중지합니다. 다른 상자에서 실행되는 Sentinel은 장애 조치를 승인 할 수 없으므로 시스템을 사용할 수 없습니다.
다른 장애 조치를 주문하기 위해서는 다수가 필요하며 나중에 모든 센티넬에 최신 구성을 전파합니다. 또한 위의 설정의 한쪽에서 장애 조치 기능은 계약없이 매우 위험합니다
+----+ +------+ | M1 | ---- // ----- | [M1] | | S1 | | S2 | +----+ +------+
위의 구성에서 우리는 완벽하게 대칭적인 방식으로 두 개의 마스터 (S2가 승인없이 장애 조치를 할 수 있다고 가정)를 만들었습니다. 고객은 양쪽에 무기한으로 글을 쓸 수 있으며, 파티션이 언제 구성이 올바른지를 치유 할 때를 이해할 수있는 방법이 없습니다 영구 분할 뇌 상태.
그러니 제발 세 개의 다른 상자에 3 개 이상의 센티넬을 배포하십시오 언제나.
예제 2 : 3 개의 상자가있는 기본 설정
이것은 매우 간단한 설정으로 추가 안전을 위해 조정하는 것이 간단합니다. 3 개의 상자를 기반으로하며, 각 상자는 Redis 프로세스와 Sentinel 프로세스를 모두 실행합니다.
+----+ | M1 | | S1 | + ----+ | + ----+ | + ----+ | R2 | ----+---- | R3 | | S2 | | S3 | + ----++ ----+ 구성 : 쿼럼 = 2
마스터 M1이 실패하면 S2와 S3.
모든 Sentinel 설정에서 Redis가 비동기 복제를 사용함에 따라, 주어진 인정 된 쓰기가 마스터로 홍보되는 복제본에 도달 할 수 없기 때문에 항상 일부 글을 잃을 위험이 있습니다. 그러나 위의 설정에서는 다음 그림과 같이 고객이 오래된 마스터와 분할되기 때문에 더 높은 위험이 있습니다
+----+ | M1 | | S1 |
이 경우 네트워크 파티션이 이전 마스터 M1을 격리 시켰으므로 복제 R2가 마스터로 홍보됩니다. 그러나 이전 마스터와 같은 파티션 인 C1과 같은 클라이언트는 이전 마스터에게 데이터를 계속 작성할 수 있습니다. 이 데이터는 파티션이 치유 될 때 마스터가 새로운 마스터의 복제본으로 재구성되어 데이터 세트를 폐기하기 때문에 영원히 손실됩니다.
이 문제는 다음 Redis Replication 기능을 사용하여 완화 할 수 있으며, 마스터가 더 이상 지정된 수의 복제본으로 쓰기를 전송할 수 없음을 감지하면 쓰기 수락을 중지 할 수 있습니다.
Min-Replicas-to-Write 1 Min-Replicas-Max-Lag 10
위의 구성으로 (자체 구성된 Redis를 참조하십시오.자세한 내용은 redis 배포의 conf 예) Mas. 복제는 비동기식이기 때문에 글을 쓸 수 없습니다 실제로 복제본이 연결이 끊어 졌거나 우리에게 비동기식을 보내지 않는다는 것을 의미합니다.
이 구성을 사용하여 위의 예에서 오래된 Redis Master M1은 10 초 후에 사용할 수 없습니다. 파티션이 치유되면 Sentinel 구성이 새로운 구성으로 수렴되면 클라이언트 C1은 유효한 구성을 가져올 수 있으며 새로운 마스터와 함께 계속됩니다.
그러나 무료 점심은 없습니다. 이 개선을 통해 두 복제본이 다운되면 마스터는 쓰기 수락을 중단합니다. 트레이드 오프입니다.
예 3 : 클라이언트 상자의 Sentinel
때때로 우리는 2 개의 Redis 상자 만 가지고 있으며, 하나는 마스터와 하나는 복제품을위한 것입니다. 이 경우 예제 2의 구성은 실행 가능하지 않으므로 센티넬이 클라이언트가있는 곳에 다음과 같은 곳에 의지 할 수 있습니다
+----+ +----+ | M1 | ----+---- | R1 | | | | | | + ----+ | + ----+ | +------------+------------+| | | | | | + ----++ ----++ ----+ | C1 | | C2 | | C3 | | S1 | | S2 | | S3 | + ----++ ----++ ----+ 구성 : 쿼럼 = 2
이 설정에서 Sentinels는 고객과 동일합니다. 대부분의 고객이 마스터를 도달 할 수 있다면 괜찮습니다. C1, C2, C3 여기에 일반 클라이언트가 있습니다. C1이 Redis에 연결된 단일 클라이언트를 식별한다는 의미는 아닙니다. 응용 프로그램 서버, Rails 앱 등과 같은 것 같습니다.
M1과 S1이 실행되는 상자가 실패하면 문제없이 장애 조치가 발생하지만 다른 네트워크 파티션이 다른 동작을 초래할 수 있음을 쉽게 알 수 있습니다. 예를 들어, Redis Master와 Replica를 모두 사용할 수 없으므로 클라이언트와 Redis 서버 간의 네트워크가 연결이 끊어지면 Sentinel이 설정할 수 없습니다.
C3가 M1과 분리되어 있다면 (위에서 설명한 네트워크에서는 거의 불가능하지만 다른 레이아웃 또는 소프트웨어 계층에서는 가능성이 높지 않으면 예제 2에서 설명한 것과 유사한 문제가 있습니다. 여기서는 대칭을 깨뜨릴 수있는 방법이 없기 때문에 마스터가 정지 상태에서 멈출 수 없을 때 마스터가 멈출 수 없기 때문에 대칭을 깨뜨릴 수있는 방법이 없다는 차이가 있습니다.
따라서 이것은 유효한 설정이지만 예제 2의 설정에는 관리가 더 간단 할 수있는 Redis와 동일한 상자에서 실행되는 HA 시스템과 같은 장점이 있으며 소수 파티션의 마스터가 쓰기를받을 수있는 시간에 묶을 수 있습니다.
예제 4 : 3 명의 클라이언트 미만의 Sentinel Client Sight
클라이언트 측에 3 개의 상자가 있으면 예제 3에 설명 된 설정을 사용할 수 없습니다 (예 : 3 개의 웹 서버). 이 경우 다음과 같은 혼합 설정에 의지해야합니다
+----+ +----+ | M1 | ----+---- | R1 | | S1 | | | S2 | + ----+ | + ----+ | +------+-----+| | | | + ----++ ----+ | C1 | | C2 | | S3 | | S4 | + ----++ ----+ 구성 : 쿼럼 = 3
이것은 예 3의 설정과 유사하지만 여기서 우리는 우리가 사용할 수있는 4 개의 상자에 4 개의 센티넬을 실행합니다. 마스터 M1을 사용할 수 없게되면 다른 세 센티넬은 장애 조치를 수행합니다.
이론적 으로이 설정은 C2와 S4가 실행중인 상자를 제거하고 쿼럼을 2로 설정합니다. 그러나 응용 프로그램 계층에서 고 가용성을 갖지 않고 Redis 측에서 HA를 원할 것 같지 않습니다.
Sentinel, Docker, Nat 및 가능한 문제
Docker는 포트 매핑이라는 기술을 사용합니다. Docker 컨테이너 내부에서 실행되는 프로그램은 프로그램이 사용한다고 생각하는 것과 비교하여 다른 포트로 노출 될 수 있습니다. 동일한 서버에서 동일한 포트를 동시에 동시에 여러 컨테이너를 실행하는 데 유용합니다.
Docker는 이런 일이 발생하는 유일한 소프트웨어 시스템이 아닙니다. 포트가 다시 표시 될 수있는 다른 네트워크 주소 번역 설정이 있으며 때로는 포트가 아니라 IP 주소도 있습니다.
포트 및 주소를 다시 작성하면 Sentinel과 두 가지 방법으로 문제가 발생합니다
- 다른 센티넬의 센티넬 자동 발견은 더 이상 작동하지 않습니다 안녕하세요 각 Sentinel이 어떤 포트 및 IP 주소를 듣고 있는지 발표하는 메시지 연결을 위해 듣고 있습니다. 그러나 센티넬은 주소 나 포트가 다시 표시되어 있다는 것을 이해할 방법이 없으므로 다른 센티넬이 연결하기에 맞지 않는 정보를 발표하고 있습니다.
- 복제본은 Redis 마스터의 정보 출력에 비슷한 방식으로 나열됩니다. 주소는 마스터가 TCP 연결의 원격 피어를 점검하는 마스터에 의해 감지되는 반면 포트는 핸드 셰이크 중에 복제 자체에 의해 광고되지만 포트는 1 지점에 노출 된 것과 동일한 이유로 잘못 될 수 있습니다.
Sentinels는 Mas, Docker에게 포트 1 : 1을지도하도록 지시하지 않는 한.
첫 번째 문제의 경우, 전달 된 포트 (또는 포트가 재 침착 한 다른 NAT 설정)와 함께 Docker를 사용하여 Sentinel 인스턴스 세트를 실행하려면 Sentinel이 특정 IP 및 포트 세트를 발표하도록 강제하기 위해 다음 두 Sentinel 구성 지침을 사용할 수 있습니다
Sentinel은 Sentinel을 발표했습니다
Docker는 실행할 수 있습니다 호스트 네트워킹 모드 (자세한 내용은 -net = 호스트 옵션 확인). 이 설정에서 포트가 다시 표시되지 않으므로 문제가 발생하지 않아야합니다.
IP 주소 및 DNS 이름
구형 버전의 Sentinel은 호스트 이름과 모든 곳에서 지정 해야하는 IP 주소를 지원하지 않았습니다. 버전 6부터 시작합니다.2, 센티넬이 있습니다 선택 과목 호스트 이름 지원.
이 기능은 기본적으로 비활성화됩니다. DNS/Hostnames 지원을 활성화하려면 다음과 같습니다
- Redis 및 Sentinel 노드의 이름 해상도 구성은 신뢰할 수 있어야하며 주소를 빠르게 해결할 수 있어야합니다. 주소 해결의 예기치 않은 지연은 Sentinel에 부정적인 영향을 줄 수 있습니다.
- 어디에서나 호스트 이름을 사용하고 호스트 이름과 IP 주소를 혼합하지 않아야합니다. 이를 위해 모든 Redis 및 Sentinel 인스턴스에 대해 Replica-Announce-IP 및 Sentinel Anouns-IP를 사용하십시오.
Resolve-HostNames Global Configuration을 활성화하면 Sentinel은 호스트 이름을 수락 할 수 있습니다
- 센티넬 모니터 명령의 일부로
- 복제 주소로서, 복제본이 복제 항문 -IP에 호스트 이름 값을 사용하는 경우
Sentinel은 호스트 이름을 유효한 입력으로 수락하여이를 해결하지만 인스턴스를 발표하고 구성 파일 업데이트 등을 표시 할 때 여전히 IP 주소를 참조합니다.
HostNames Global Configuration 발표를 활성화하면 Sentinel이 호스트 이름을 대신 사용합니다. 이는 클라이언트에 대한 답변, 구성 파일에 작성된 값, 복제본에 발행 된 복제 명령 등에 영향을 미칩니다.
이 동작은 모든 Sentinel 클라이언트와 호환되지 않을 수 있으며, 이는 IP 주소를 명시 적으로 기대할 수 있습니다.
호스트 이름을 사용하면 클라이언트가 TLS를 사용하여 인스턴스에 연결하고 인증서 ASN 일치를 수행하기 위해 IP 주소가 아닌 이름이 필요할 때 유용 할 수 있습니다.
빠른 튜토리얼
이 문서의 다음 섹션에서 센티넬 API, 구성 및 시맨틱은 점진적으로 다루어집니다. 그러나 최대한 빨리 시스템을 사용하고 싶은 사람들의 경우이 섹션은 3 개의 Sentinel 인스턴스를 구성하고 상호 작용하는 방법을 보여주는 튜토리얼입니다.
여기서 우리는 인스턴스가 포트 5000, 5001, 5002에서 실행된다고 가정합니다. 또한 포트 6379에서 REDIS MASTER가 포트 6380에서 실행중인 REDIS 마스터가 있다고 가정합니다. IPv4 루프백 주소 127을 사용합니다.0.0.튜토리얼 중에 어디서나 개인 컴퓨터에서 시뮬레이션을 실행한다고 가정합니다.
세 명의 센티넬 구성 파일은 다음과 같아야합니다
포트 5000 센티넬 모니터 Mymaster 127.0.0.1 6379 2 센티넬 하향-밀리 초기 마스터 5000 Sentinel Failover-Timeout MyMaster 60000 Paremal-Syncs MyMaster 1
다른 두 구성 파일은 동일하지만 5001과 5002를 포트 번호로 사용합니다.
위의 구성에 대해 주목해야 할 몇 가지 사항 :
- 마스터 세트를 MyMaster라고합니다 . 마스터와 복제본을 식별합니다. 각각 마스터 세트 다른 이름이 있는데 Sentinel은 다른 마스터 및 복제품 세트를 동시에 모니터링 할 수 있습니다.
- 정족수는 2의 값으로 설정되었습니다 (Sentinel Monitor Configuration Directive의 마지막 인수).
- 하향식 밀리 초 값은 5000 밀리 초입니다.
세 센티넬을 시작하면 다음과 같은 몇 가지 메시지가 표시됩니다
+마스터 Mymaster 127을 모니터링하십시오.0.0.1 6379 쿼럼 2
이것은 Sentinel 이벤트이며 나중에 지정된 이벤트 이름을 구독하면 Pub/Sub를 통해 이러한 종류의 이벤트를받을 수 있습니다 펍/하위 메시지 부분.
Sentinel은 고장 감지 및 장애 조치 중에 다른 이벤트를 생성하고 기록합니다.
Sentinel에게 마스터의 상태에 대해 묻습니다
Sentinel과 시작하기 위해 가장 분명한 것은 모니터링중인 마스터가 잘하고 있는지 확인하는 것입니다
$ redis -cli -p 5000 127.0.0.1 : 5000> Sentinel Master Mymaster 1) "이름"2) "Mymaster"3) "IP"4) "127.0.0.1 "5)"포트 "6)"6379 "7)"runid "8)"953AE6A589449C13DDEFAEE3538D356D287F509B "9)"FLAGS "10)"MASTER "11)"Link-Vending-Commands "12)"0) "13)"16) 1111111111111111111111111111111111111111111111111111111111111111. -Pept-Reply "18)"735 "19)"Last-Ping-Reply "20)"735 "21)"735 "21)"Down-after-Milliseconds "22)"5000 "23)"Info-Refresh "24)"126 "25)"역할보고 ""27) "Master"27) "롤-리포트-타임"28) "532439"29) "29)"31). 32) "1"33) "Num-Other-Sentinels"34) "2"35) "Quorum"36) "2"37) "실패 시간 초과"38) "60000"39) "Parallel-Syncs"40) "1"
보시다시피, 그것은 마스터에 대한 많은 정보를 인쇄합니다. 우리에게 특히 관심이있는 몇 가지가 있습니다
- Num-Other-Sentinels는 2이므로 Sentinel이 이미이 마스터를 위해 두 개의 센티넬을 더 감지했음을 알고 있습니다. 로그를 확인하면 +Sentinel 이벤트가 생성됩니다.
- 깃발은 단지 마스터입니다 . 마스터가 다운되면 여기에서 s_down 또는 o_down 플래그를 볼 수 있습니다.
- Num-Slaves는 올바르게 1로 설정되어 있으므로 Sentinel은 또한 마스터에 복제 된 복제품이 있음을 감지했습니다.
이 인스턴스에 대한 자세한 내용은 다음 두 가지 명령을 시도 할 수 있습니다
Sentinel Replicas Mymaster Sentinel Sentinels Mymaster
첫 번째는 마스터와 연결된 복제본에 대한 유사한 정보를 제공하고 다른 Sentinels에 대한 두 번째는.
현재 마스터의 주소를 얻습니다
이미 지정한 것처럼 Sentinel은 마스터 및 복제품 세트에 연결하려는 클라이언트를위한 구성 제공 업체 역할을합니다. 가능한 장애 조치 또는 재구성으로 인해 클라이언트는 현재 주어진 인스턴스에 대한 현재 활성 마스터가 누구인지 전혀 알지 못하므로 Sentinel 은이 질문을하기 위해 API를 내보내고 있습니다
127.0.0.1 : 5000> Sentinel Get-Master-Addr- 이름 Mymaster 1) "127.0.0.1 "2)"6379 "
장애 조치 테스트
이 시점에서 우리의 Toy Sentinel 배포는 테스트 준비가되었습니다. 우리는 마스터를 죽이고 구성이 변경되는지 확인할 수 있습니다. 그렇게하려면 우리는 그냥 할 수 있습니다
Redis -Cli -P 6379 디버그 수면 30
이 명령은 우리의 마스터가 더 이상 도달 할 수 없게 만들고 30 초 동안 자고 있습니다. 기본적으로 어떤 이유로 든 마스터 매달린 마스터를 시뮬레이션합니다.
Sentinel 로그를 확인하면 많은 조치를 볼 수 있어야합니다
- 각 센티넬은 마스터가 +sdown 이벤트로 다운을 감지합니다.
- 이 행사는 나중에 +Odown으로 확대됩니다. 이는 여러 센티넬이 마스터가 도달 할 수 없다는 사실에 동의 함을 의미합니다.
- Sentinels는 첫 번째 장애 조치 시도를 시작할 Sentinel에 투표합니다.
- 장애 조치가 발생합니다.
MyMaster의 현재 마스터 주소가 무엇인지 다시 묻는다면 결국 이번에는 다른 답장을 받아야합니다
127.0.0.1 : 5000> Sentinel Get-Master-Addr- 이름 Mymaster 1) "127.0.0.1 "2)"6380 "
여태까지는 그런대로 잘됐다. 이 시점에서 Sentinel 배포를 만들기 위해 점프하거나 모든 Sentinel 명령 및 내부를 이해하기 위해 더 많은 것을 읽을 수 있습니다.
센티넬 API
센티넬.
기본적으로 Sentinel은 TCP 포트 26379를 사용하여 실행됩니다 (6379는 일반적인 Redis 포트입니다). Sentinels는 Redis 프로토콜을 사용하여 명령을 수락하므로 Sentinel과 대화하기 위해 Redis-Cli 또는 기타 수정되지 않은 Redis 클라이언트를 사용할 수 있습니다.
Sentinel을 직접 쿼리하여 모니터링 된 Redis 인스턴스의 상태가 무엇인지 확인하여 다른 Sentinels가 무엇을 알고 있는지 확인하는 것이 가능합니다. 또는 Pub/Sub를 사용하여받을 수 있습니다 푸시 스타일 Sentinels의 알림, 장애 조치 또는 오류 조건에 유입되는 인스턴스 등 일부 이벤트가 발생할 때마다 알림.
센티넬 명령
Sentinel 명령은 Sentinel의 기본 API입니다. 다음은 하위 명령 목록입니다 (해당되는 경우 최소 버전이 표시됨)
- Sentinel Config Get (> = 6.2) 글로벌 센티넬 구성 매개 변수의 현재 값을 얻으십시오. 지정된 이름은 redis config get 명령과 유사한 와일드 카드 일 수 있습니다.
- 센티넬 구성 세트 (> = 6.2) 글로벌 센티넬 구성 매개 변수의 값 설정.
- Sentinel Ckquorum 현재 Sentinel 구성이 마스터 장애 조치에 필요한 쿼럼에 도달 할 수 있는지 확인하고 장애 조치를 승인하는 데 필요한 대다수. 이 명령은 모니터링 시스템에 사용하여 Sentinel 배포가 정상인지 확인해야합니다.
- Sentinel FlushConfig Sentinel은 현재 Sentinel State를 포함하여 디스크에서 구성을 다시 작성하도록합니다. 일반적으로 Sentinel은 상태가 변경 될 때마다 구성을 다시 작성합니다 (재시작을 통해 디스크에 지속되는 상태의 하위 집합의 맥락에서). 그러나 때로는 작동 오류, 디스크 고장, 패키지 업그레이드 스크립트 또는 구성 관리자로 인해 구성 파일이 손실 될 수 있습니다. 이 경우 Sentinel이 구성 파일을 다시 작성하도록 강요하는 방법은 편리합니다. 이 명령은 이전 구성 파일이 완전히 누락 된 경우에도 작동합니다.
- Sentinel Failover는 마스터가 도달 할 수없는 것처럼 장애 조치를 취하고 다른 Sentinels와의 계약을 요구하지 않고 (그러나 다른 Sentinels가 구성을 업데이트 할 수 있도록 새 버전의 구성이 게시 될 것입니다).
- Sentinel Get-Master-Addr- 이름은 그 이름으로 마스터의 IP와 포트 번호를 반환합니다. 장애 조치가 진행 중이 거나이 마스터에 대해 성공적으로 종료되면 프로모션 된 복제본의 주소와 포트를 반환합니다.
- 센티넬 정보 캐시 (> = 3.2) 마스터 및 복제품으로부터 캐시 된 정보 출력 반환.
- Sentinel IS-MASTER-DY-ADDR IP : 포트가 현재 Sentinel의 관점에서 다운되었는지 확인하십시오. 이 명령은 대부분 내부 사용을위한 것입니다.
- Sentinel Master는 지정된 마스터의 상태와 정보를 보여줍니다.
- 센티넬 마스터 모니터링 된 마스터와 그 상태 목록을 보여줍니다.
- 센티넬 모니터 Sentinel의 모니터링을 시작하십시오. 참조 런타임시 센티넬 재구성 자세한 내용은 섹션.
- 센티넬 마이드 (> = 6.2) 센티넬 인스턴스의 ID를 반환합니다.
- 센티넬 보류 스크립트 이 명령은 보류중인 스크립트에 대한 정보를 반환합니다.
- 센티넬 제거 Sentinel의 모니터링을 중지하십시오. 참조 런타임시 센티넬 재구성 자세한 내용은 섹션.
- 센티넬 복제품 (> = 5.0)이 마스터와 그 상태에 대한 복제본 목록을 보여줍니다.
- Sentinel Sentinels는이 마스터와 해당 주에 대한 Sentinel 인스턴스 목록을 보여줍니다.
- 센티넬 세트 Sentinel의 모니터링 구성을 설정하십시오. 참조 런타임시 센티넬 재구성 자세한 내용은 섹션.
- Sentinel Simulate-Failure (충돌-선거 선거 | 충돌 퇴치 | 도움말) (> = 3.2)이 명령은 다른 센티넬 충돌 시나리오를 시뮬레이션합니다.
- Sentinel Reset이 명령은 모든 마스터를 일치하는 이름으로 재설정합니다. 패턴 인수는 글로벌 스타일의 패턴입니다. 재설정 프로세스는 마스터의 이전 상태를 지우고 (진행중인 장애 조치 포함) 이미 발견되고 마스터와 관련된 모든 복제 및 Sentinel을 제거합니다.
연결 관리 및 관리 목적으로 Sentinel은 다음과 같은 Redis의 명령을 지원합니다
- ACL (> = 6.2)이 명령은 Sentinel Access Control List를 관리합니다. 자세한 내용은 ACL 문서 페이지 및 센티넬 액세스 제어 목록 인증.
- 인증 (> = 5.0.1) 클라이언트 연결을 인증합니다. 자세한 내용은 인증 명령 및 인증을 통해 Sentinel 인스턴스 구성 부분.
- 고객 이 명령은 클라이언트 연결을 관리합니다. 자세한 내용은 하위 명령의 페이지를 참조하십시오.
- 명령 (> = 6.2)이 명령은 명령에 대한 정보를 반환합니다. 자세한 내용은 명령 및 다양한 부하 명령을 참조하십시오.
- 안녕하세요 (> = 6.0) 연결 프로토콜을 전환하십시오. 자세한 내용은 hello 명령을 참조하십시오.
- 정보 Sentinel 서버에 대한 정보 및 통계를 반환합니다. 자세한 내용은 정보 명령을 참조하십시오.
- 핑 이 명령은 단순히 Pong을 반환합니다.
- 역할 이 명령은 문자열 "Sentinel"과 모니터링 된 마스터 목록을 반환합니다. 자세한 내용은 역할 명령을 참조하십시오.
- 일시 휴업 Sentinel 인스턴스를 종료하십시오.
마지막으로 Sentinel은 구독, 구독 취소, psubscribe 및 punsubscribe 명령도 지원합니다. 참조 펍/하위 메시지 자세한 내용은 섹션.
런타임시 센티넬 재구성
Redis 버전 2부터 시작합니다.8.4, Sentinel은 주어진 마스터의 구성을 추가, 제거 또는 변경하기 위해 API를 제공합니다. 여러 센티넬이있는 경우 Redis Sentinel이 제대로 작동하도록 모든 인스턴스에 변경 사항을 적용해야합니다. 즉, 단일 센티넬의 구성을 변경하면 네트워크의 다른 센티넬에 대한 변경 사항이 자동으로 전파되지 않습니다.
다음은 Sentinel 인스턴스의 구성을 업데이트하기 위해 사용되는 Sentinel 부계 명령 목록입니다.
- Sentinel 모니터이 명령은 Sentinel에게 지정된 이름, IP, 포트 및 쿼럼으로 새 마스터를 모니터링하도록 지시합니다. Sentinel의 Sentinel Monitor Configuration Directive와 동일합니다.Configuration 파일, IP에서 호스트 이름을 사용할 수 없지만 IPv4 또는 IPv6 주소를 제공해야합니다.
- Sentinel REMING은 지정된 마스터를 제거하기 위해 사용됩니다. 마스터는 더 이상 모니터링되지 않으며 Sentinel의 내부 상태에서 완전히 제거되므로 Sentinel Masters 등이 더 이상 나열되지 않습니다.
- 센티넬 세트 [ . ]] SET 명령은 Redis의 구성 세트 명령과 매우 유사하며 특정 마스터의 구성 매개 변수를 변경하는 데 사용됩니다. 다중 옵션 / 값 쌍을 지정할 수 있습니다 (또는 전혀 없음). Sentinel을 통해 구성 할 수있는 모든 구성 매개 변수.conf는 또한 set 명령을 사용하여 구성 할 수 있습니다.
다음은 Sentinel Set 명령의 예입니다
Sentinel은 물체-캐시-마스터 아래로 밀리 초 1000을 설정했습니다
이미 언급했듯이 Sentinel Set은 시작 구성 파일에 정착 가능한 모든 구성 매개 변수를 설정하는 데 사용될 수 있습니다. 또한 Sentinel 제거와 Sentinel 모니터를 사용하여 Master를 제거하고 다시 adding하지 않고 Master Quorum 구성 만 변경할 수 있지만 간단히 사용합니다
Sentinel은 객체 캐시-마스터 쿼럼을 설정합니다
Sentinel Master가 모든 구성 매개 변수를 간단한 구문 분석 형식으로 제공하기 때문에 동등한 GET 명령이 없습니다 (필드/값 쌍 어레이로).
Redis 버전 6부터 시작합니다.2, Sentinel은 또한 이전 구성 파일에서만 지원되는 글로벌 구성 매개 변수를 얻고 설정할 수 있습니다.
- Sentinel Config 글로벌 Sentinel 구성 매개 변수의 현재 값을 얻습니다. 지정된 이름은 redis config get 명령과 유사한 와일드 카드 일 수 있습니다.
- Sentinel Config Set Set Global Sentinel 구성 매개 변수의 값.
조작 할 수있는 글로벌 매개 변수는 다음과 같습니다
- HostNames의 Resolve-HostNames . 보다 IP 주소 및 DNS 이름.
- 발표 -IP, 발표 포트 . 보다 Sentinel, Docker, Nat 및 가능한 문제.
- 센티넬 사용자, 센티넬 패스 . 보다 인증을 통해 Sentinel 인스턴스 구성.
센티넬 추가 또는 제거
배포에 새 센티넬을 추가하는 것은 Sentinel이 구현 한 자동 발견 메커니즘으로 인해 간단한 프로세스입니다. 현재 활성 마스터를 모니터링하도록 구성된 새 센티넬을 시작하는 것만으로는. 10 초 안에 Sentinel은 다른 센티넬 목록과 마스터에 첨부 된 복제품 세트를 획득합니다.
한 번에 여러 센티넬을 추가 해야하는 경우 다른 모든 센티넬이 다음을 추가하기 전에 첫 번째에 대해 이미 알고 있기를 기다리는 것이 좋습니다. 이것은 대다수가 파티션의 한쪽에서만 달성 될 수 있다고 보장하기 위해 유용합니다. 새로운 센티넬을 추가하는 과정에서 기회 실패가 발생해야합니다.
30 초 지연으로 모든 새로운 센티넬을 추가하고 네트워크 파티션이없는 동안 쉽게 달성 할 수 있습니다.
프로세스가 끝나면 모든 센티넬이 마스터 모니터링하는 총 센티넬 수에 동의하는지 확인하기 위해 Sentinel Mastername 명령을 사용할 수 있습니다.
센티넬을 제거하는 것은 조금 더 복잡합니다 센티넬은 이미 보이는 센티넬을 잊지 못했습니다, 오랫동안 도달 할 수 없더라도 장애 조치와 새로운 구성 번호의 생성에 필요한 다수를 동적으로 변경하고 싶지 않기 때문에. 따라서 Sentinel을 제거하려면 네트워크 파티션이없는 경우 다음 단계를 수행해야합니다
- 제거하려는 센티넬의 센티넬 프로세스를 중지하십시오.
- 다른 모든 Sentinel 인스턴스에 Sentinel Reset * 명령을 보내십시오 ( * 대신 * 단일 마스터 만 재설정하려면 정확한 마스터 이름을 사용할 수 있습니다). 다른 한편으로는 인스턴스 사이에서 30 초 이상 기다립니다.
- 모든 Sentinels가 모든 Sentinel의 Sentinel Master Mastername의 출력을 검사하여 현재 활성화 된 Sentinels의 수에 동의하는지 확인하십시오.
오래된 마스터 또는 도달 할 수없는 복제본을 제거합니다
센티넬은 주어진 마스터의 복제본을 오랫동안 잊지 못합니다. 네트워크 파티션 또는 고장 이벤트 후 반환 복제본을 올바르게 재구성 할 수 있어야하기 때문에 이것은 유용합니다.
또한, 장애 조치 후, 실패한 마스터 오버 마스터는 사실상 새로운 마스터의 복제본으로 추가됩니다.
그러나 때로는 Sentinels가 모니터링하는 복제본 목록에서 영원히 복제 (오래된 마스터 일 수 있음)를 제거하고 싶습니다.
이렇게하려면 Sentinel Reset MasterName 명령을 모든 Sentinels에 보내야합니다. 다음 10 초 안에 복제본 목록을 새로 고침하여 현재 마스터 정보 출력에서 올바르게 복제 된 것으로 표시됩니다.
펍/하위 메시지
클라이언트는 Sentinel을 Redis 호환 펍/하위 서버로 사용할 수 있지만 게시물을 구독하거나 PSUBSBRICE를 사용하여 특정 이벤트에 대해 알림을받을 수 있습니다.
채널 이름은 이벤트 이름과 동일합니다. 예를 들어, +sdown이라는 채널은 sdown에 들어가는 인스턴스와 관련된 모든 알림을받습니다 (SDOWN은 쿼리중인 Sentinel의 관점에서 인스턴스가 더 이상 도달 할 수 없음을 의미합니다) 조건.
모든 메시지를 얻으려면 간단히 psubscribe를 사용하여 구독 * .
다음은이 API를 사용하여받을 수있는 채널 및 메시지 형식 목록입니다. 첫 번째 단어는 채널 / 이벤트 이름이고 나머지는 데이터 형식입니다.
참고 : 여기서 인스턴스 세부 사항 지정되어 있습니다. 대상 인스턴스를 식별하기 위해 다음 인수가 제공됨을 의미합니다
마스터를 식별하는 부분 ( @ 인수에서 끝까지)은 선택 사항이며 인스턴스가 마스터 자체가 아닌 경우에만 지정됩니다.
- +재설정 마스터-- 마스터가 재설정되었습니다.
- +노예-- 새로운 복제본이 감지되어 부착되었습니다.
- +장애 조치-국가-레코프 슬레이브-- 장애 조치 상태는 Reconf-Slaves 상태로 변경되었습니다.
- +장애 조치 감지-- 다른 센티넬에 의해 시작된 장애 조치 또는 다른 외부 엔티티가 감지되었습니다 (첨부 된 복제본은 마스터로 바뀌 었습니다).
- +슬레이브 레코프-세트-- 리더 인 Sentinel은 새로운 복제본을 위해 재구성하기 위해 복제 명령을이 인스턴스로 보냈습니다.
- +슬레이브-레코프-프로 로그-- 재구성되는 복제본은 새로운 마스터 IP : 포트 쌍의 복제본 인 것으로 나타 났지만 동기화 프로세스는 아직 완료되지 않았습니다.
- +슬레이브 레코프--- 복제본은 이제 새로운 마스터와 동기화되었습니다.
- -Dup-Sentinel-- 지정된 마스터에 대한 하나 이상의 센티넬이 복제 된대로 제거되었습니다 (예 : Sentinel 인스턴스가 다시 시작될 때와 같은 경우).
- +보초-- 이 마스터를위한 새로운 센티넬이 감지되어 첨부되었습니다.
- +Sdown-- 지정된 인스턴스는 이제 주관적으로 아래 상태에 있습니다.
- -Sdown-- 지정된 인스턴스는 더 이상 주관적으로 다운 상태가 아닙니다.
- +오치-- 지정된 인스턴스는 이제 객관적으로 아래 상태에 있습니다.
- -오치-- 지정된 인스턴스는 더 이상 객관적으로 아래 상태에 있지 않습니다.
- +뉴-에크-- 현재 시대가 업데이트되었습니다.
- +시험을 시도하십시오-- 대다수가 선출되기를 기다리는 새로운 장애 조치.
- +선출 된 리더-- 지정된 시대의 선거에서 우승, 실패를 할 수 있습니다.
- +실패 상태-선택-슬레이브-- New Failover State는 Select-Slave입니다 : 우리는 프로모션에 적합한 복제품을 찾으려고 노력하고 있습니다.
- 좋은 슬레이브-- 홍보 할 좋은 복제본은 없습니다. 현재 우리는 얼마 후 시도하지만 아마도 이것은 변경 될 것이며 주 머신은이 경우 장애 조치를 전혀 파괴 할 것입니다.
- 선택된 슬레이브-- 우리는 홍보 할 수있는 좋은 복제본을 발견했습니다.
- 장애 조치-상태-세트 슬라브 로프-- 우리는 프로모션 된 복제본을 마스터로 재구성하려고 노력하고 있습니다.
- 타임 아웃 장애 조치-- 타임 아웃을 위해 종료 된 장애 조치, 복제품은 결국 어쨌든 새로운 마스터와 복제하도록 구성됩니다.
- 장애 조치-- 장애 조치는 성공으로 종료되었습니다. 모든 복제품은 새로운 마스터와 복제하도록 재구성 된 것으로 보입니다.
- 스위치 마스터-- 마스터 새로운 IP와 주소는 구성 변경 후 지정된 주소입니다. 이것은 대부분의 외부 사용자가 관심있는 메시지.
- +경사 -- 틸트 모드가 입력되었습니다.
- -경사 -- 틸트 모드가 종료되었습니다.
-BUSY 상태의 처리
-Busy 오류는 LUA 스크립트가 구성된 LUA 스크립트 시간 제한보다 더 많은 시간 동안 실행될 때 Redis 인스턴스에 의해 반환됩니다. 이런 일이 발생하면 실패를 유발하기 전에 Redis Sentinel은 스크립트 킬 명령을 보내려고합니다. 스크립트가 읽기 전용 인 경우에만 성공합니다.
이 시도 후 인스턴스가 여전히 오류 조건에 있으면 결국 실패합니다.
복제 우선 순위
Redis 인스턴스에는 복제 우선 순위라는 구성 매개 변수가 있습니다 . 이 정보는 정보 출력의 Redis Replica 인스턴스에 의해 노출되며 Sentinel은 마스터를 장애 조치하기 위해 사용할 수있는 복제본을 선택하기 위해이를 사용합니다
- 복제 우선 순위가 0으로 설정되면 복제본은 마스터로 홍보되지 않습니다.
- a 낮추다 우선 순위 번호는 Sentinel이 선호합니다.
예를 들어, 현재 마스터의 동일한 데이터 센터에 복제 S1이 있고 다른 데이터 센터에 다른 복제 S2가있는 경우 100의 우선 순위를 가진 우선 순위와 S2를 설정할 수 있으므로 마스터가 실패하고 S1과 S2를 모두 사용할 수있게되면 S1이 선호됩니다.
복제품을 선택하는 방법에 대한 자세한 내용은 복제 선택 및 우선 순위 이 문서의 섹션.
Sentinel 및 Redis 인증
마스터가 보안 조치로 클라이언트의 인증을 요구하도록 구성된 경우, 복제품은 마스터와 인증하고 비동기 복제 프로토콜에 사용되는 마스터 반응 연결을 만들려면 자격 증명을 알고 있어야합니다.
Redis 액세스 제어 목록 인증
Redis 6부터 시작하여 사용자 인증 및 권한은 ACL (Access Control List)에서 관리됩니다.
Sentinels가 ACL로 구성 될 때 Redis Server 인스턴스에 연결하려면 Sentinel 구성에는 다음 지침이 포함되어야합니다
Sentinel Auth-User Sentinel Auth-Pass
그룹 인스턴스에 액세스하기위한 사용자 이름과 비밀번호는 어디에 있습니까?. 이러한 자격 증명은 최소한의 제어 권한으로 그룹의 모든 Redis 사례에 제공되어야합니다. 예를 들어:
127.0.0.1 : 6379> ACL SetUser Sentinel-User ON> SomePassword AllChannels +Multi +Slaveof +Ping +Exec +Exec +Config | Rewrite +Role +Publish +Info +Client | SetName +Client | Kill +Script | Kill
Redis 비밀번호 전용 인증
Redis 6까지 다음 구성 지시문을 사용하여 인증이 달성됩니다
- 인증 비밀번호를 설정하고 인스턴스가 인증되지 않은 클라이언트에 대한 요청을 처리하지 않도록 마스터의 요구 사항.
- 복제본의 MasterAuth는 복제본이 데이터를 올바르게 복제하기 위해 마스터와 인증하기 위해.
Sentinel이 사용될 때, 장애 조치 복제본이 마스터의 역할을 수행 할 수 있고, 오래된 마스터를 복제본으로 작동시키기 위해 재구성 할 수 있기 때문에 단일 마스터가 없습니다.
마스터에서만 데이터를 보호하고 싶지 않기 때문에 일반적으로 제정신 설정입니다. 복제본에서 동일한 데이터에 액세스 할 수 있습니다.
그러나 인증없이 액세스 할 수있는 복제본이 필요한 드문 경우에도 설정하여 여전히 수행 할 수 있습니다 0의 복제 우선 순위, 이 복제본이 마스터로 홍보되는 것을 방지하고,이 복제본에서는 요구 사항에 대한 지침을 사용하지 않고 MasterAuth 지시문 만 구성하여 데이터를 읽지 못한 클라이언트가 데이터를 읽을 수 있도록합니다.
Sentinels가 요구 사항을 요구할 때 Redis Server 인스턴스에 연결하려면 Sentinel 구성에는 Sentinel Auth-Pass 지시문이 다음 형식으로 포함되어야합니다
센티넬 인증 패스
인증을 통해 Sentinel 인스턴스 구성
Sentinel 인스턴스 자체는 클라이언트가 인증 명령을 통해 인증하도록 요구함으로써 보안을 확보 할 수 있습니다. Redis 6부터 시작합니다.2, ACL (Access Control List)을 사용할 수있는 반면 이전 버전 (Redis 5로 시작합니다.0.1) 비밀번호 전용 인증을 지원합니다.
Sentinel의 인증 구성이 있어야합니다 각 인스턴스에 적용됩니다 배포에서 모든 인스턴스는 동일한 구성을 사용해야합니다. 또한 ACL 및 비밀번호 전용 인증을 함께 사용해서는 안됩니다.
센티넬 액세스 제어 목록 인증
ACL로 Sentinel 인스턴스를 확보하는 첫 번째 단계는 무단 액세스를 방지하는 것입니다. 이를 위해서는 기본 수퍼 유저를 비활성화하고 (또는 최소한 강력한 비밀번호로 설정) 새 암호를 만들고 펍/하위 채널에 액세스 할 수 있도록해야합니다
127.0.0.1 : 5000> ACL SetUser Admin On> Admin-Password AllChannels +@All OK 127.0.0.1 : 5000> ACL SetUser 기본값 OK
기본 사용자는 Sentinel에서 다른 인스턴스에 연결하는 데 사용됩니다. 다음 구성 지시문을 통해 다른 슈퍼 사용자의 자격 증명을 제공 할 수 있습니다
Sentinel Sentinel-User Sentinel Sentinel-Pass
Sentinel의 슈퍼 유저와 비밀번호는 각각 어디에 있습니까 (E.g. 위의 예에서 admin 및 admin-password).
마지막으로 들어오는 클라이언트 연결을 인증하려면 다음과 같은 Sentinel 제한 사용자 프로필을 만들 수 있습니다
127.0.0.1 : 5000> ACL SetUser Sentinel-User on> user-password-@all +auth +client | getName +client | id +client | setName +command +hello +ping +ping +sentinel | get-master-addr-by-name +sentinel | Mas
자세한 내용은 선택한 Sentinel 클라이언트의 문서를 참조하십시오.
Sentinel 비밀번호 전용 인증
비밀번호 전용 인증과 함께 Sentinel을 사용하려면 요구 사항 구성 지시문을 추가하십시오 모두 Sentinel 인스턴스는 다음과 같습니다
요구 사항 "Your_password_here"
이 방법으로 구성되면 Sentinels는 다음과 같은 두 가지 작업을 수행합니다
- Sentinels에 명령을 보내려면 클라이언트의 비밀번호가 필요합니다. 이것은 그러한 구성 지침이 일반적으로 Redis에서 작동하는 방식이기 때문에 분명합니다.
- 또한 로컬 Sentinel에 액세스하도록 구성된 동일한 암호 가이 Sentinel 인스턴스에서 사용하여 연결하는 다른 모든 Sentinel 인스턴스를 인증하기 위해 사용됩니다.
이것은 그것을 의미합니다 모든 Sentinel 인스턴스에서 동일한 요구 사항 비밀번호를 구성해야합니다. 이렇게하면 모든 Sentinel은 다른 모든 Sentinel에 액세스하기 위해 각 Sentinel을 구성 할 필요없이 다른 모든 Sentinel과 대화 할 수 있습니다.
이 구성을 사용하기 전에 클라이언트 라이브러리가 Sentinel 인스턴스에 인증 명령을 보낼 수 있는지 확인하십시오.
센티넬 클라이언트 구현
Sentinel은 시스템이 새로운 마스터 인스턴스 (Virtual IP 또는 기타 유사한 시스템)에 대한 모든 요청을 투명하게 리디렉션하는 스크립트를 실행하도록 구성되지 않는 한 명시적인 클라이언트 지원이 필요합니다. 클라이언트 라이브러리 구현 주제는 문서 Sentinel Clients 지침에 포함됩니다.
더 고급 개념
다음 섹션에서는이 문서의 마지막 부분에서 다룰 구현 세부 사항 및 알고리즘에 의지하지 않고 Sentinel의 작동 방식에 대한 몇 가지 세부 사항을 다룹니다.
Sdown 및 Odown 실패 상태
Redis Sentinel은 두 가지 다른 개념을 가지고 있습니다 다운 중, 하나는 a라고합니다 주관적으로 조건 (sdown) 및 주어진 센티넬 인스턴스에 로컬 인 다운 조건입니다. 다른 하나는 호출됩니다 객관적으로 다운 조건 (Odown) 및 충분한 센티넬 (최소한 모니터링 된 마스터의 쿼럼 매개 변수로 구성된 숫자)이 SDOW 조건을 갖고 Sentinel IS-Mas.
Sentinel의 관점에서 SDOWN 조건은 구성에 지정된 초에 대한 핑 요청에 대한 유효한 답장을받지 못하면 IS-MASTER-DOWN-MILLISECONDS 매개 변수로 도달합니다.
Ping에 대한 허용 가능한 답변은 다음 중 하나입니다
- Ping은 +Pong으로 대답했습니다.
- 핑은 -로드 오류로 대답했다.
- Ping은 -masterdown 오류로 답변했습니다.
다른 답변 (또는 전혀 답장이 없음)은 유효하지 않은 것으로 간주됩니다. 그러나 그 점에 유의하십시오 정보 출력에서 복제본으로 광고하는 논리적 인 마스터는 다운중인 것으로 간주됩니다.
SDOUN은 전체 간격에 대해 허용 가능한 답변을받지 않아야하므로 예를 들어 간격이 30000 밀리 초 (30 초) 인 경우 29 초마다 허용 가능한 핑 응답을 받으면 인스턴스가 작동하는 것으로 간주됩니다.
SDOWN은 장애 조치를 트리거하기에 충분하지 않습니다. 단일 센티넬은 Redis 인스턴스를 사용할 수 없다고 생각합니다. 장애 조치를 유발하려면 Odown State에 도달해야합니다.
Sdown에서 Odown으로 전환하려면 강력한 합의 알고리즘이 사용되지 않고 가십의 형태 만 사용하십시오. 주어진 센티넬이 마스터가 충분한 센티넬에서 작동하지 않는다는보고를받는다면 주어진 시간 범위, SDOWN은 Odown으로 홍보됩니다. 이 인정이 나중에 누락되면 깃발이 지워집니다.
실제로 장애 조치를 시작하려면 실제 다수를 사용하는보다 엄격한 승인이 필요하지만 오드 스테이트에 도달하지 않고는 장애 조치를 트리거 할 수 없습니다.
Odown 조건 마스터에게만 적용됩니다. 다른 종류의 경우 Sentinel은 행동 할 필요가 없으므로 Odown State는 복제본 및 다른 Sentinel에 도달하지 못하지만 Sdown 만.
그러나 Sdown은 또한 의미 론적 영향을 미칩니다. 예를 들어 SDOWN 상태의 복제본은 오류를 수행하는 센티넬에 의해 홍보하도록 선택되지 않습니다.
센티넬 및 복제 자동 발견
센티넬은 서로의 가용성을 상호하게 확인하고 메시지를 교환하기 위해 다른 센티넬과 연결되어. 그러나 Sentinel이 동일한 마스터와 복제본을 모니터링하는 다른 센티넬을 발견하기 위해 Redis Instances Pub/Sub 기능을 사용하기 때문에 실행하는 모든 Sentinel 인스턴스에서 다른 Sentinel 주소 목록을 구성 할 필요는 없습니다.
이 기능은 전송을 통해 구현됩니다 안녕하세요 메시지 __sentinel __라는 채널로 : 안녕하세요 .
마찬가지로 Sentinel 이이 목록 쿼리 쿼리 쿼리를 자동으로 발견하므로 마스터에 첨부 된 복제본 목록이 무엇인지 구성 할 필요가 없습니다.
- 모든 Sentinel은 모든 모니터링 된 마스터 및 복제 펍/하위 채널 __sentinel __에 메시지를 게시합니다. 안녕하세요, 2 초마다 IP, Port, Runid로 그 존재를 발표합니다.
- 모든 Sentinel은 펍/하위 채널 __sentinel __에 가입됩니다. 새로운 센티넬이 감지되면이 주인의 센티넬로 추가됩니다.
- Hello 메시지에는 마스터의 전체 전류 구성도 포함됩니다. 수신 수신 Sentinel에 수신 된 것보다 오래된 주어진 마스터에 대한 구성이있는 경우 즉시 새 구성으로 업데이트됩니다.
- 마스터에 새 센티넬을 추가하기 전에 Sentinel은 항상 동일한 runid 또는 동일한 주소가있는 센티넬이 있는지 확인합니다 (IP 및 포트 쌍). 이 경우 일치하는 모든 센티넬이 제거되고 새로 추가되었습니다.
실패 조치 절차 이외의 인스턴스의 센티넬 재구성
장애 조치가 진행되지 않더라도 Sentinels는 항상 모니터링 된 인스턴스에서 현재 구성을 설정하려고합니다. 구체적으로:
- 마스터라고 주장하는 복제품 (현재 구성에 따라)은 현재 마스터와 복제하기 위해 복제본으로 구성됩니다.
- 잘못된 마스터에 연결된 복제본은 오른쪽 마스터와 복제하도록 재구성됩니다.
Sentinels가 복제본을 재구성하기 위해서는 잘못된 구성을 한동안 관찰해야합니다. 즉, 새로운 구성을 방송하는 데 사용되는 기간보다 더 큽니다.
이렇게하면 Sentinels가 오래된 구성이있는 경우 (예 : 파티션에서 단지 다시 합류했기 때문에) 업데이트를 받기 전에 Replicas 구성을 변경하려고합니다.
또한 항상 현재 구성을 부과하려는 의미론이 파티션에 대한 장애 조치를 더욱 저항하는 방법에 주목하십시오
- 실패한 마스터는 사용 가능한 반환시 복제본으로 재구성됩니다.
- 파티션 중에 분할 된 복제본은 일단 도달 할 수 있으면 재구성됩니다.
이 섹션에 대해 기억해야 할 중요한 교훈은 다음과 같습니다 Sentinel은 각 프로세스가 항상 모니터링 된 인스턴스 세트에 마지막 논리 구성을 부과하려는 시스템입니다.
복제 선택 및 우선 순위
Sentinel 인스턴스가 장애 조치를 수행 할 준비가되었을 때, 마스터가 Odown State에 있고 Sentinel이 알려진 Sentinel 인스턴스의 대부분으로부터 장애 조치를 허가 받았기 때문에 적절한 복제본을 선택해야합니다.
복제 선택 프로세스는 복제본에 대한 다음 정보를 평가합니다
- 마스터의 단절 시간.
- 복제 우선 순위.
- 복제 오프셋 처리.
- ID를 실행하십시오.
구성된 마스터 타임 아웃의 10 배 이상 마스터와 연결이 끊어진 것으로 밝혀진 복제본 (Milliseconds Down-Milliseconds 옵션)과 장애 조치를 수행하는 Sentinel의 관점에서 마스터를 사용할 수없는 시간은 장애 조치에 적합하지 않은 것으로 간주됩니다.
보다 엄격한 용어로, 정보 출력이 마스터와 더 이상 분리되었다고 제안하는 복제본은 다음과 같습니다
(다운 -Milliseconds * 10) + milliseconds_since_master_is_in_sdown_state
신뢰할 수없는 것으로 간주되며 전적으로 무시됩니다.
복제 선택은 위의 테스트를 통과 한 복제본 만 고려하고 다음 순서로 위의 기준에 따라 정렬합니다.
- 복제본은 Redis에서 구성된대로 복제 선고에 의해 정렬됩니다.Redis 인스턴스의 Conf 파일. 최우선 순위가 낮습니다.
- 우선 순위가 동일하면 복제본에 의해 처리 된 복제 오프셋이 점검되고 마스터로부터 더 많은 데이터를받은 복제본이 선택됩니다.
- 다중 복제품이 우선 순위가 동일하고 마스터에서 동일한 데이터를 처리 한 경우 추가 점검을 수행하여 사전 소형 실행 ID로 복제본을 선택합니다. 더 낮은 실행 ID를 갖는 것은 복제본에 대한 진정한 이점은 아니지만, 복제품 선택 프로세스를 임의의 복제본을 선택하는 대신 더 결정적으로 더 결정적으로 만드는 데 유용합니다.
대부분의 경우 복제 우선 순위는 명시 적으로 설정할 필요가 없으므로 모든 인스턴스가 동일한 기본값을 사용합니다. 특정 실패 선호도가있는 경우, 마스터가 미래의 시점에서 복제본이 될 수 있으므로 마스터를 포함한 모든 인스턴스에 복제 선고가 설정되어야합니다. 그러면 적절한 복제 선고 설정이 필요합니다.
REDIS 인스턴스는 특수 복제 선고율로 구성 할 수 있습니다 선택하지 않았습니다 새로운 마스터로서 센티넬에 의해. 그러나 이러한 방식으로 구성된 복제본은 장애 조치 후 새 마스터와 복제하기 위해 Sentinels에 의해 여전히 재구성 될 것입니다. 유일한 차이점은 결코 마스터 자체가되지 않을 것입니다.
알고리즘 및 내부
다음 섹션에서는 Sentinel 행동의 세부 사항을 살펴 보겠습니다. 사용자가 모든 세부 사항을 알고 있어야 할 필요는 없지만 Sentinel에 대한 깊은 이해는 Sentinel을보다 효과적인 방식으로 배포하고 운영하는 데 도움이 될 수 있습니다.
정족수
이전 섹션에서는 Sentinel이 모니터링하는 모든 마스터가 구성된 것으로 나타났습니다 정족수. 장애 조치를 유발하기 위해 마스터의 미확인 또는 오류 조건에 동의 해야하는 Sentinel 프로세스의 수를 지정합니다.
그러나 장애 조치가 트리거 된 후에 실패를 실제로 수행하기 위해, 적어도 대다수의 센티넬은 센티넬이 장애 조치를 허가해야합니다. Sentinel은 소수의 센티넬이 존재하는 파티션에서 장애 조치를 수행하지 않습니다.
좀 더 명확하게 만들어 봅시다
- 쿼럼 : 마스터가 오치.
- 장애 조치는 오치 상태.
- 장애 조치가 트리거되면, Failover를 시도하는 Sentinel은 대다수의 Sentinels에게 승인을 요청해야합니다 (또는 정족수가 대다수보다 많은 수로 설정된 경우 대다수보다 더 많음).
차이는 미묘 해 보일 수 있지만 실제로 이해하고 사용하기가 매우 간단합니다. 예를 들어 5 개의 센티넬 인스턴스가 있고 쿼럼이 2로 설정된 경우 2 명의 센티넬이 마스터가 도달 할 수 없다고 생각하자마자 장애 조치가 트리거되지만, 두 센티넬 중 하나는 최소한 3 개의 센티넬로부터 승인을받을 때만 장애 조치를 취할 수 있습니다.
대신 쿼럼이 5로 구성된 경우 모든 센티넬은 마스터 오류 조건에 동의해야하며 장애 조치를 위해서는 모든 센티넬의 승인이 필요합니다.
이것은 정족수가 Sentinel을 두 가지 방법으로 조정하는 데 사용될 수 있음을 의미합니다
- 정족수가 우리가 배포하는 대부분의 센티넬보다 작은 값으로 설정되면, 우리는 기본적으로 Sentinel이 더 이상 마스터와 대화 할 수 없을 때 마스터 장애에 더 민감하게 만들고 있습니다.
- 정족수가 대다수의 센티넬보다 큰 값으로 설정되면, 우리는 Sentinel이 Mas.
구성 에포크
센티넬은 몇 가지 중요한 이유로 장애 조치를 시작하기 위해 다수로부터 승인을 받아야합니다
Sentinel이 승인되면 독특합니다 구성 에포크 마스터에게는 실패하고 있습니다. 이것은 장애 조치가 완료된 후 새 구성을 버전에 사용하는 숫자입니다. 대다수는 주어진 버전이 주어진 센티넬에 할당되었다는 데 동의했기 때문에 다른 Sentinel 은이를 사용할 수 없습니다. 즉, 모든 장애 조치의 모든 구성이 고유 한 버전으로 버전이 제공됩니다. 우리는 이것이 왜 그렇게 중요한지 알게 될 것입니다.
또한 Sentinels는 규칙이 있습니다. Sentinel이 주어진 마스터의 장애 조치에 대해 다른 Sentinel에 투표 한 경우 다시 동일한 마스터를 장애 조치를 시도하기를 기다릴 것입니다. 이 지연은 Sentinel에서 구성 할 수있는 2 * Failover Timeout입니다.콘크리트 . 이것은 Sentinels가 동시에 같은 마스터를 장애 조치하려고 시도하지 않을 것이라는 것을 의미합니다. 첫 번째로 승인을 요청하는 것은 다른 시간이 지나면 다른 시도를 시도 할 것입니다.
Redis Sentinel은 다음을 보장합니다 라이벌 대다수의 센티넬이 대화 할 수 있다면 마스터가 다운되면 결국 장애 조치 권한이 부여됩니다.
Redis Sentinel도 안전 모든 Sentinel이 다른 것을 사용하여 동일한 마스터를 실패시키는 속성 구성 에포크.
구성 전파
Sentinel이 마스터를 성공적으로 실패시킬 수 있으면 새로운 구성을 방송하기 시작하여 다른 Sentinels가 주어진 마스터에 대한 정보를 업데이트 할 수 있습니다.
장애 조치가 성공적인 것으로 간주되기 위해서는 Sentinel이 복제본을 선택한 복제본으로 보낼 수 없었으며 마스터로의 스위치가 마스터의 정보 출력에서 나중에 관찰되었습니다.
이 시점에서 복제본의 재구성이 진행중인 경우에도 장애 조치가 성공한 것으로 간주되며 모든 센티넬은 새로운 구성을보고해야합니다.
새로운 구성이 전파되는 방식은 모든 Sentinel Failover가 다른 버전 번호 (구성 에포크)로 승인 된 이유입니다.
모든 센티넬. 동시에 모든 센티넬은 메시지가 다른 센티넬이 광고 한 구성이 무엇인지 확인하기 위해 기다립니다.
구성은 __sentinel __ : Hello Pub/Sub Channel에서 방송됩니다.
모든 구성이 다른 버전 번호를 가지기 때문에 더 큰 버전은 항상 작은 버전보다 항상 승리합니다.
예를 들어 마스터 마스터 마스터의 구성은 마스터가 192에 있다고 믿는 모든 센티넬과 함께 시작합니다.168.1.50 : 6379. 이 구성에는 버전 1이 있습니다. 얼마 후 Sentinel은 버전 2로 장애 조치를받을 권한이 있습니다. 장애 조치가 성공하면 새로운 구성을 방송하기 시작합니다.168.1.버전 2와 함께 50 : 9000. 다른 모든 인스턴스는이 구성을보고 그에 따라 구성을 업데이트합니다. 새 구성에는 더 큰 버전이 있으므로.
이것은 Sentinel이 두 번째 Livinges 속성을 보장한다는 것을 의미합니다. 의사 소통 할 수있는 센티넬 세트는 모두 더 높은 버전 번호와 동일한 구성으로 수렴합니다.
기본적으로 그물이 분할되면 모든 파티션은 더 높은 로컬 구성으로 수렴됩니다. 파티션이없는 특별한 경우에는 단일 파티션이 있으며 모든 Sentinel은 구성에 동의합니다.
파티션에서 일관성
Redis Sentinel 구성은 결국 일관성이 있으므로 모든 파티션이 사용 가능한 높은 구성으로 수렴됩니다. 그러나 Sentinel을 사용하는 실제 시스템에는 세 가지 플레이어가 있습니다
- Redis 인스턴스.
- 센티넬 인스턴스.
- 클라이언트.
시스템의 동작을 정의하려면 세 가지를 모두 고려해야합니다.
다음은 3 개의 노드가있는 간단한 네트워크, 각각 Redis 인스턴스를 실행하고 Sentinel 인스턴스가있는 간단한 네트워크입니다
+-------------+ | Sentinel 1 | ----- 클라이언트 A | Redis 1 (m) | + ------------- |+ | + ------------- |+ + ------------+ | Sentinel 2 | -----+-// ---- | Sentinel 3 | ----- 클라이언트 B | Redis 2 (s) | | Redis 3 (m) | +-------------+ +------------+
이 시스템에서 원래 상태는 Redis 3이 마스터 였고 Redis 1과 2는 복제품이었습니다. 구식 마스터를 분리하는 파티션이 발생했습니다. Sentinels 1과 2는 Sentinel 1을 새로운 마스터로 홍보하기 시작했습니다.
Sentinel Properties는 Sentinel 1과 2가 이제 마스터를위한 새로운 구성을 보장합니다. 그러나 Sentinel 3은 다른 파티션에 살기 때문에 여전히 오래된 구성을 가지고 있습니다.
우리는 Sentinel 3이 네트워크 파티션이 치유 될 때 구성을 업데이트 할 것이지만, 구식 마스터와 파티션 된 클라이언트가 있으면 파티션 중에 발생하는 일이 있습니다?
고객은 여전히 오래된 마스터 인 Redis 3에 글을 쓸 수 있습니다. 파티션이 다시 연결되면 Redis 3은 Redis 1의 복제본으로 바뀌고 파티션 중에 작성된 모든 데이터는 손실됩니다.
구성에 따라이 시나리오가 발생할 수있는 것일 수도 있습니다
- Redis를 캐시로 사용하는 경우 데이터가 손실 되더라도 클라이언트 B가 여전히 오래된 마스터에게 쓸 수 있다는 것은 편리 할 수 있습니다.
- Redis를 상점으로 사용하는 경우이 문제가 좋지 않으며이 문제를 부분적으로 방지하려면 시스템을 구성해야합니다.
Redis는 비동기 적으로 복제 되었으므로이 시나리오에서 데이터 손실을 완전히 방지 할 수있는 방법은 없지만 다음 Redis 구성 옵션을 사용하여 Redis 3과 Redis 1 간의 발산을 결합시킬 수 있습니다
Min-Replicas-to-Write 1 Min-Replicas-Max-Lag 10
위의 구성으로 (자체 구성된 Redis를 참조하십시오.자세한 내용은 redis 배포의 conf 예) Mas. 복제는 비동기식이기 때문에 글을 쓸 수 없습니다 실제로 복제본이 연결이 끊어 졌거나 우리에게 비동기식을 보내지 않는다는 것을 의미합니다.
이 구성을 사용하여 위의 예제에서 Redis 3은 10 초 후에 사용할 수 없습니다. 파티션이 치유되면 Sentinel 3 구성이 새 구성으로 수렴되고 클라이언트 B는 유효한 구성을 가져와 계속할 수 있습니다.
일반적으로 Redis + Sentinel은 전체적으로 결국 일관된 시스템 병합 기능이있는 곳 마지막 장애 조치 승리, 그리고 오래된 마스터의 데이터는 현재 마스터의 데이터를 복제하기 위해 폐기되므로 항상 인정 된 글을 잃을 수있는 창이 있습니다. 이것은 Redis 비동기 복제와 시스템의 "가상"병합 기능의 폐기 특성 때문입니다. 이것은 센티넬 자체의 제한이 아니며, 강력하게 일관된 복제 된 상태 머신으로 장애 조치를 조정하는 경우에도 동일한 속성이 여전히 적용됩니다. 인정 된 글을 잃는 것을 피하는 두 가지 방법은 다음과 같습니다
- 동기 복제 (및 복제 된 상태 기계를 실행하기위한 적절한 합의 알고리즘)를 사용하십시오.
- 동일한 객체의 다른 버전을 병합 할 수있는 결국 일관된 시스템을 사용하십시오.
Redis는 현재 위의 시스템 중 어느 것도 사용할 수 없으며 현재 개발 목표를 벗어납니다. 그러나 Soundcloud Roshi 또는 Netflix Dynomite와 같은 Redis 매장 위에 솔루션 "2"를 구현하는 프록시가 있습니다.
센티넬 영구 상태
Sentinel State는 Sentinel 구성 파일에 지속됩니다. 예를 들어, 새 구성이 수신되거나 생성 될 때마다 마스터를 위해 구성이 구성 에포크와 함께 디스크에 지속됩니다. 이것은 센티넬 프로세스를 중지하고 다시 시작하는 것이 안전하다는 것을 의미합니다.
틸트 모드
Redis Sentinel은 컴퓨터 시간에 크게 의존하고 있습니다. 예를 들어 인스턴스를 사용할 수 있는지 이해하려면 Ping 명령에 대한 최신 성공적인 응답 시간을 기억하고 현재 시간과 비교하여 나이가 몇 살인지 이해합니다.
그러나 컴퓨터 시간이 예기치 않은 방식으로 변경되거나 컴퓨터가 매우 바쁘거나 어떤 이유로 든 프로세스가 차단되면 Sentinel은 예상치 못한 방식으로 행동하기 시작할 수 있습니다.
틸트 모드는 시스템의 신뢰성을 낮추는 이상한 내용이 감지 될 때 센티넬이 입력 할 수있는 특수 "보호"모드입니다. 센티넬 타이머 인터럽트는 일반적으로 초당 10 회 호출되므로 타이머 인터럽트로의 두 통화 사이에 100 밀리 초 정도가 길어질 것으로 예상됩니다.
Sentinel이하는 일은 이전 시간에 타이머 인터럽트를 호출하고 현재 통화와 비교하는 것입니다. 시간 차이가 예기치 않거나 예기치 않게 큰 경우 (2 초 이상) 틸트 모드가 입력됩니다 (또는 이미 연기 된 틸트 모드에서 출구로 입력 한 경우).
틸트 모드에서 Sentinel은 모든 것을 계속 모니터링하지만 :
- 그것은 전혀 행동을 멈 춥니 다.
- 실패 감지 기능이 더 이상 신뢰할 수 없으므로 Sentinel IS-Master-Dy-ADDR 요청에 부정적인 답변을 시작합니다.
모든 것이 30 초 동안 정상인 것처럼 보이면 틸트 모드가 종료됩니다.
Sentinel Tilt 모드에서 Info 명령을 보내면 다음과 같은 응답을 얻을 수 있습니다
$ redis -cli -p 26379 127.0.0.1 : 26379> 정보 (Sentinel Server의 기타 정보 건너 뛰기.) # sentinel sentinel_mas.0.0.1 : 6379, 노예 = 0, Sentinels = 1
"sentinel_tilt_since_seconds"필드는 이미 틸트 모드에있는 Sentinel이 이미 몇 초를 나타냅니다. 틸트 모드가 아닌 경우 값은 -1입니다.
어떤면에서 틸트 모드는 많은 커널이 제공하는 단조로운 시계 API를 사용하여 교체 할 수 있습니다. 그러나 현재 시스템이 프로세스가 오랫동안 스케줄러에 의해 정지되거나 실행되지 않는 경우 문제를 피하기 때문에 이것이 좋은 솔루션인지는 여전히 확실하지 않습니다.
이 남자 페이지에 사용 된 노예라는 단어에 대한 메모: Redis 5로 시작하여 후진 호환성이 아닌 경우 Redis 프로젝트는 더 이상 단어 슬레이브를 사용하지 않습니다. 불행히도이 명령에서 라 슬레이브라는 단어는 프로토콜의 일부 이므로이 API가 자연스럽게 더 이상 사용되지 않을 때만 그러한 사건을 제거 할 수 있습니다.
이 페이지에서
이것은 Redis Ltd가 후원하는 커뮤니티 웹 사이트입니다. © 2023. Redis와 Cube 로고는 Redis Ltd의 등록 상표입니다. 이용 약관 및 개인 정보 보호 정책.