영사 아키텍처의 MHA 자동 전환 예에 대한 자세한 설명
소개
오랫동안 masterha_manager 자동 전환 스크립트를 온라인으로 활성화하지 않았습니다. 그 이유는 네트워크가 불안정할 때(네트워크 케이블, 해당 캐비닛 스위치가 불안정할 때) 데이터베이스에 액세스할 수 없다는 보장이 없기 때문입니다. 예를 들어, 탐지 스크립트가 있는 컴퓨터를 다시 시작합니다. 네트워크 카드가 데이터베이스에 문제가 있다는 것을 의미하지는 않으므로 이러한 관점에서는 한 지점을 탐지하는 것만으로는 데이터베이스에 접근할 수 없다고 판단할 수 없습니다. consul을 사용합니다(consul은 DNS 인터페이스를 제공하므로 작성자는 consul을 선호하며 이는 etcd의 기능이 아닙니다). n 클러스터 환경에서는 탐지의 절반 이상이 다중 지점 탐지 메커니즘을 추가합니다. 포인트가 데이터베이스에 문제가 있다고 판단한 후 아래 그림과 같이 masterha_manager.
스크립트를 호출하여 전환하기 시작합니다.
<checkmysql> <checkmysql> <checkmysql> | | | +---------+ +---------+ +---------+ | consul1 | | consul2 | | consul3 | +---------+ +---------+ +---------+ \ | / \ | / \ | / \ | / +----------------------+ | http api && acl | +----------------------+ | | +----------------------+ | consul-template | ----> < mysqlxxx.tpl > ---> <mysqlxxx.conf> +----------------------+ | +--------------------------+ | masterha_manager_consul | +--------------------------+
masterha_manager
脚本进行切换, 如下图所示:mha_manager_consul ├── bin │ ├── checkmysql │ └── masterha_manager_consul ├── conf │ ├── db.cnf │ └── template-config ├── consul │ ├── acl │ │ ├── policy.ano │ │ └── policy.key │ ├── conf │ │ └── consul.conf │ └── conf.d │ └── server.json ├── README.md └── template └── mysql3308.tpl
checkmysql
需要部署到每台 consul server
中, 这样我们就实现了多点检测 MySQL 是否正常, 如果正常, checkmysql
会设置一个值为 1 的键: mysql/mysqlxxxx/node-consul
, 反之则值为 0, 其中 node-consul
的默认值为当前主机的 hostname.
checkmysql
检测完后, 我们使用 consul-template 工具根据模板文件 mysqlxxx.tpl
来监听所有 key 的变更, 如果有变化则生成配置 mysqlxxxx.conf
, 进而调用 masterha_manager_consul
脚本开始进行切换.
我们在 masterha_manager_consul
脚本中重写了方法 MHA::HealthCheck::wait_until_unreachable
, 避免了无限循环检测, 如果少于一半的检测点认为数据库异常, 则退出该轮的调用, 否则启用子进程开始执行切换操作.
备注:
masterha_manager_consul
是基于 MHA v0.5.6 修改的, 并且默认只在当天的21点到第二天的 9 点之间做自动切换, 可以通过 night
选项控制此功能. 另外多台 consul server
checkmysql
는 각 consul 서버
에 배포되어야 MySQL이 정상인지 확인하기 위해 여러 번 클릭할 수 있습니다. 정상이면 checkmysql
이 설정됩니다. 값이 1인 키: mysql/mysqlxxxx/node-consul
, 그렇지 않으면 값은 0이 됩니다. 여기서 node-consul
의 기본값은 현재의 호스트 이름입니다. checkmysql
감지 후 템플릿 파일 mysqlxxx.tpl
에 따라 consul-template 도구를 사용하여 모든 키 변경 사항을 모니터링하고 변경 사항이 있는 경우 mysqlxxxx.conf
를 구성한 다음 masterha_manager_consul
스크립트를 호출하여 전환을 시작합니다. 우리는 masterha_manager_consul
메소드 MHA::에 있습니다. 무한 루프 감지를 피하기 위해 HealthCheck::wait_until_unreachable
이 스크립트에 다시 작성되었습니다. 데이터베이스에서 감지 지점의 절반 미만이 비정상으로 간주되면 호출 라운드가 종료되고, 그렇지 않으면 하위 프로세스가 종료됩니다. 활성화됩니다. 전환 작업 수행을 시작합니다.참고:
masterha_manager_consul
는 MHA v0.5.6을 기준으로 수정되었으며 기본적으로 당일 21:00 사이에만 사용 가능합니다. 그리고 다음날 9시 자동 전환의 경우 야간
옵션을 통해 이 기능을 제어할 수 있습니다. 또한 여러 개의 consul 서버
를 서로 다른 스위치에 배포하는 것이 좋습니다. 또는 캐비닛. 호스트 이름10.0.21.5 | centos 6.5 | ||
---|---|---|---|
10.0.21.7 | centos 6.5 | cz-test2 | |
10.0.21.17 | centos 6.5 | cz-test3 | |
下面所有的操作都假设已经安装好了 备注在运行 #curl -X PUT --data @policy.ano http://localhost:8500/v1/acl/update?token=e95597e0-4045-11e7-a9ef-b6ba84687927 {"ID":"anonymous"} #curl -X PUT --data @policy.key http://localhost:8500/v1/acl/update?token=e95597e0-4045-11e7-a9ef-b6ba84687927 {"ID":"dcb5b583-cd36-d39d-2b31-558bebf86502"} 로그인 후 복사 checkmysql在每个 perl checkmysql --conf db.cnf --verbose --tag mysql3308 --token dcb5b583-cd36-d39d-2b31-558bebf86502 [2017-06-08T10:09:14] mysql/mysql3308/cz-test2 with value 1 no change [2017-06-08T10:09:15] mysql/mysql3308/cz-test2 with value 1 no change 로그인 후 복사
备注如果你的 consul-template在 checkmysql 更新 consul 的相关 key 之后, 如果有任意一个 checkmysql 变更了key 值, 则 consul-template 根据模板文件重新生成 mysqlxxx.conf 文件, 随后开始调用 masterha_manager_consul 脚本, consul-template 的配置详见 # consul-template -config config 2017/05/25 10:11:13 [DEBUG] (logging) enabling syslog on LOCAL5 로그인 후 복사
# node3308 cz-test1:1 cz-test2:1 cz-test3:1 로그인 후 복사 如果少于半数的监测点发现 MySQL 异常, [2017-06-08T10:24:15] status ok, skip switch.. 로그인 후 복사 反之则打印 error 信息, 并开始调用 [2017-05-25T10:24:48] status error, need switch.. Wed May 24 10:24:48 2017 - [info] Reading default configuration from /etc/masterha/app_default.cnf.. ... ... 로그인 후 복사 conf.d/server.json详见 template-config 配置中的 address = "consul.service.consul:8500" 选项; 在网络波动的情况下, address 选项如果只配置一个 consul server 的 ip 的话, consul-template 则不能连接到 consul server 中监控相应的 key 值, 尽管 consul-template 有重试功能, 但是在单 ip 的情况下, 难以确保可以正常获取相关的 key 值信息. conf.d/server.json 配置则将各个 consul server 的 ip 作为一个 dns 条目, 如下所示: # dig @10.0.21.5 consul.service.consul ...... ...... ;; QUESTION SECTION: ;consul.service.consul. IN A ;; ANSWER SECTION: consul.service.consul. 0 IN A 10.0.21.7 consul.service.consul. 0 IN A 10.0.21.5 consul.service.consul. 0 IN A 10.0.21.17 로그인 후 복사 单个 consul server 异常, 会自动跳到正常的 consul-server 中. 主从切换测试我们简单关闭 master 的实例, 看看各工具间的输出状态. 关闭 master关闭 master 后, [2017-06-08T18:16:43] mysql/mysql3308/cz-test2 with value 1 no change DBI connect('mysql_read_default_file=./db.cnf;mysql_read_default_group=mysql3308','',...) failed: Can't connect to MySQL server on '10.0.21.7' (111) at checkmysql line 56 [2017-06-08T18:16:44] set 0 with key mysql/mysql3308/cz-test2 ok DBI connect('mysql_read_default_file=./db.cnf;mysql_read_default_group=mysql3308','',...) failed: Can't connect to MySQL server on '10.0.21.7' (111) at checkmysql line 56 [2017-06-08T18:16:45] mysql/mysql3308/cz-test2 with value 0 no change 로그인 후 복사
# node3308 cz-test1:0 cz-test2:0 cz-test3:0 로그인 후 복사
# consul-template -config config 2017/06/08 12:11:13 [DEBUG] (logging) enabling syslog on LOCAL5 [2017-05-24T12:16:48] status error, need switch.. # 脚本判定超过半数认为数据库不可访问 Wed Jun 08 12:16:48 2017 - [info] Reading default configuration from /etc/masterha/app_default.cnf.. Wed Jun 08 12:16:48 2017 - [info] Reading application default configuration from /etc/masterha/app_56.conf.. Wed Jun 08 12:16:48 2017 - [info] Updating application default configuration from /usr/bin/init_conf_loads.. .... 로그인 후 복사
如果没有超过半数, consul-template 则显示以下: [2017-06-08T12:24:15] status ok, skip switch.. 로그인 후 복사 MHA 切换日志mha 切换的日志则包含以下信息, 日志文件则根据 mha 的具体配置而定: Wed Jun 08 12:45:37 2017 - [info] Starting master failover.. Wed Jun 08 12:45:37 2017 - [info] From: 10.0.21.7(10.0.21.7:3308) (current master) +--10.0.21.17(10.0.21.17:3308) To: 10.0.21.17(10.0.21.17:3308) (new master) ... ... Master failover to 10.0.21.17(10.0.21.17:3308) completed successfully. Wed Jun 08 12:45:41 2017 - [info] Sending mail.. 로그인 후 복사
总结整体上而言, 使用 위 내용은 영사 아키텍처의 MHA 자동 전환 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요! 본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
![]() 핫 AI 도구![]() Undresser.AI Undress사실적인 누드 사진을 만들기 위한 AI 기반 앱 ![]() AI Clothes Remover사진에서 옷을 제거하는 온라인 AI 도구입니다. ![]() Undress AI Tool무료로 이미지를 벗다 ![]() Clothoff.ioAI 옷 제거제 ![]() AI Hentai GeneratorAI Hentai를 무료로 생성하십시오. ![]() 인기 기사
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션
2 몇 주 전
By DDD
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
![]() 뜨거운 도구![]() 메모장++7.3.1사용하기 쉬운 무료 코드 편집기 ![]() SublimeText3 중국어 버전중국어 버전, 사용하기 매우 쉽습니다. ![]() 스튜디오 13.0.1 보내기강력한 PHP 통합 개발 환경 ![]() 드림위버 CS6시각적 웹 개발 도구 ![]() SublimeText3 Mac 버전신 수준의 코드 편집 소프트웨어(SublimeText3) ![]() 뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
![]() ![]()
Cakephp 튜토리얼
![]() ![]()
Steam의 계정 이름 형식은 무엇입니까?
![]() ![]()
Win11 활성화 키 영구
![]() ![]()
NYT 연결 힌트와 답변
![]() ![]() ![]() Xiaomi 14Ultra는 올해 가장 인기 있는 Xiaomi 모델 중 하나입니다. Xiaomi 14Ultra는 프로세서와 다양한 구성을 업그레이드할 뿐만 아니라 사용자에게 많은 새로운 기능 애플리케이션을 제공합니다. 이는 Xiaomi 14Ultra 휴대폰의 판매에서 확인할 수 있습니다. 많이 사용되는 기능이지만 아직은 모르실 수도 있는 일반적으로 사용되는 기능이 있습니다. 그렇다면 Xiaomi 14Ultra는 어떻게 4g와 5g 사이를 전환합니까? 구체적인 내용을 아래에서 소개해드리겠습니다! Xiaomi 14Ultra에서 4g와 5g 사이를 전환하는 방법은 무엇입니까? 1. 휴대폰의 설정 메뉴를 엽니다. 2. 설정 메뉴에서 '네트워크' 및 '모바일 네트워크' 옵션을 찾아서 선택하세요. 3. 모바일 네트워크 설정에 '기본 네트워크 유형' 옵션이 표시됩니다. 4. 이 옵션을 클릭하거나 선택하면 다음과 같은 내용이 표시됩니다. ![]() Win11 Home Edition을 Win11 Professional Edition으로 변환하는 방법 Win11 시스템은 Home Edition, Professional Edition, Enterprise Edition 등으로 나뉘며 대부분의 Win11 노트북에는 Win11 Home Edition 시스템이 사전 설치되어 있습니다. 오늘은 에디터가 win11 홈버전에서 프로페셔널 버전으로 전환하는 단계를 보여드리겠습니다! 1. 먼저, win11 바탕화면과 속성에서 이 컴퓨터를 마우스 오른쪽 버튼으로 클릭하세요. 2. 제품 키 변경 또는 Windows 업그레이드를 클릭합니다. 3. 입력 후 제품키 변경을 클릭하세요. 4. 활성화 키: 8G7XN-V7YWC-W8RPC-V73KB-YWRDB를 입력하고 다음을 선택합니다. 5. 그러면 성공이 보장되므로 win11 홈 버전을 win11 프로페셔널 버전으로 업그레이드할 수 있습니다. ![]() 많은 친구들이 Win 시스템을 처음 접했을 때 익숙하지 않을 수 있습니다. 현재 컴퓨터에는 이중 시스템이 있습니다. 이제 두 시스템 사이를 전환하는 자세한 단계를 살펴보겠습니다. 두 시스템 사이. win10 시스템에서 두 시스템 간 전환하는 방법 1. 단축키 전환 1. "win" + "R" 키를 눌러 실행을 엽니다. 2. 실행 상자에 "msconfig"를 입력하고 "확인"을 클릭합니다. 3. 열린 창에서 " 시스템 구성" 인터페이스에서 필요한 시스템을 선택하고 "기본값으로 설정"을 클릭합니다. 완료 후 "다시 시작"을 클릭하면 스위치가 완료됩니다. 방법 2. 부팅 시 스위치 선택 1. 듀얼 시스템이 있는 경우 선택 작업 인터페이스 부팅할 때 나타납니다. 키보드의 위쪽 및 아래쪽 키를 사용하여 시스템을 선택할 수 있습니다. ![]() Apple 컴퓨터를 시작할 때 Apple 듀얼 시스템 간을 전환하는 방법 Apple 컴퓨터는 자체 macOS 운영 체제를 실행하는 것 외에도 Windows와 같은 다른 운영 체제를 설치하도록 선택하여 듀얼 시스템 전환을 달성할 수도 있습니다. 그렇다면 부팅할 때 두 시스템 간에 어떻게 전환합니까? 이 문서에서는 Apple 컴퓨터에서 듀얼 시스템 간에 전환하는 방법을 소개합니다. 먼저 듀얼 시스템을 설치하기 전에 Apple 컴퓨터가 듀얼 시스템 전환을 지원하는지 확인해야 합니다. 일반적으로 Apple 컴퓨터는 다음을 기반으로 합니다. ![]() SpringDataJPA는 JPA 아키텍처를 기반으로 하며 매핑, ORM 및 트랜잭션 관리를 통해 데이터베이스와 상호 작용합니다. 해당 리포지토리는 CRUD 작업을 제공하고 파생 쿼리는 데이터베이스 액세스를 단순화합니다. 또한 지연 로딩을 사용하여 필요한 경우에만 데이터를 검색하므로 성능이 향상됩니다. ![]() 논문 주소: https://arxiv.org/abs/2307.09283 코드 주소: https://github.com/THU-MIG/RepViTRepViT는 모바일 ViT 아키텍처에서 잘 작동하며 상당한 이점을 보여줍니다. 다음으로, 본 연구의 기여를 살펴보겠습니다. 기사에서는 경량 ViT가 일반적으로 시각적 작업에서 경량 CNN보다 더 나은 성능을 발휘한다고 언급했는데, 그 이유는 주로 모델이 전역 표현을 학습할 수 있는 MSHA(Multi-Head Self-Attention 모듈) 때문입니다. 그러나 경량 ViT와 경량 CNN 간의 아키텍처 차이점은 완전히 연구되지 않았습니다. 본 연구에서 저자는 경량 ViT를 효과적인 ![]() Excel 소프트웨어를 적용할 때 우리는 일부 작업을 보다 쉽고 빠르게 수행하기 위해 단축키를 사용하는 데 익숙합니다. 때로는 Excel의 여러 테이블 간에 관련 데이터가 있을 때 작업 간에 지속적으로 전환해야 합니다. 빠른 전환 방법을 사용하면 전환에 소요되는 시간을 많이 절약할 수 있어 작업 효율을 크게 높일 수 있습니다. 빠른 전환을 완료하려면 어떤 방법을 사용할 수 있나요? 오늘 편집자는 이에 대해 이야기하겠습니다. 내용은 다음과 같습니다. Excel에서 통합 문서를 전환하기 위해 바로 가기 키를 사용합니다. 1. 먼저 열려 있는 엑셀 표 하단에 여러 개의 통합 문서가 표시됩니다. 아래 그림과 같이 여러 통합 문서 사이를 빠르게 전환해야 합니다. 2. 그런 다음 이동하지 않고 키보드의 Ctrl 키를 누르고 필요한 경우 오른쪽에 있는 작업을 선택합니다. ![]() Go 프레임워크 아키텍처의 학습 곡선은 Go 언어 및 백엔드 개발에 대한 친숙도와 선택한 프레임워크의 복잡성, 즉 Go 언어의 기본 사항에 대한 올바른 이해에 따라 달라집니다. 백엔드 개발 경험이 있으면 도움이 됩니다. 다양한 복잡성의 프레임워크는 다양한 학습 곡선으로 이어집니다. ![]() |