拓扑
一主两从(略过)
orchestrator
注意:在三台Orch机器上分别执行,通过sqlite做orch后端,通过Raft协议做orch高可用!
注意:具体看https://github.com/openark/orchestrator/tree/master/docswget -c https://github.com/openark/orchestrator/releases/download/v3.2.6/orchestrator-3.2.6-1.x86_64.rpm
yum install -y orchestrator-3.2.6-1.x86_64.rpm
cd /usr/local/orchestrator
mkdir -p {log,conf,raftdata}
cp orchestrator-sample.conf.json ./conf/orchestrator.conf.jsonvi ./conf/orchestrator.conf.json
{
"Debug": true,
"EnableSyslog": false,
"ListenAddress": ":3000",
"MySQLTopologyUser": "orc_client_user",
"MySQLTopologyPassword": "orc_client_password",
"BackendDB": "sqlite",
"SQLite3DataFile": "/tmp/orchestrator.sqlite3",
"MySQLConnectTimeoutSeconds": 1,
"DefaultInstancePort": 3306,
"DiscoverByShowSlaveHosts": true,
"InstancePollSeconds": 1,
"HostnameResolveMethod": "default",
"MySQLHostnameResolveMethod": "@@hostname",
"SkipBinlogServerUnresolveCheck": true,
"ExpiryHostnameResolvesMinutes": 60,
"VerifyReplicationFilters": false,
"ReasonableMaintenanceReplicationLagSeconds": 20,
"CandidateInstanceExpireMinutes": 60,
"ReadOnly": false,
"AuthenticationMethod": "",
"ReplicationLagQuery": "select timestampdiff(second, ts, now()) from test.heartbeat",
"DetectClusterAliasQuery": "SELECT 'ci'",
"DetectClusterDomainQuery": "",
"DetectInstanceAliasQuery": "",
"DetectPromotionRuleQuery": "",
"DetectDataCenterQuery": "select CASE @@port WHEN 10111 THEN 'dc-east-1' WHEN 10112 THEN 'dc-east-1' WHEN 10113 THEN 'dc-east-2' WHEN 10114 THEN 'dc-west' END",
"DetectRegionQuery": "select IF(@@port = 10114, 'rgn-west', 'rgn-east')",
"DetectPhysicalEnvironmentQuery": "select 'prod'",
"DetectSemiSyncEnforcedQuery": "",
"DiscoverySeeds": [
"127.0.0.1:10111"
],
"ServeAgentsHttp": false,
"UseSSL": false,
"UseMutualTLS": false,
"MySQLTopologyUseMixedTLS": false,
"StatusEndpoint": "/api/status",
"StatusSimpleHealth": true,
"StatusOUVerify": false,
"BinlogEventsChunkSize": 10000,
"SkipBinlogEventsContaining": [],
"ReduceReplicationAnalysisCount": false,
"FailureDetectionPeriodBlockMinutes": 1,
"FailMasterPromotionOnLagMinutes": 1,
"RecoveryPeriodBlockSeconds": 5,
"RecoveryIgnoreHostnameFilters": [],
"RecoverMasterClusterFilters": [
"*"
],
"RecoverIntermediateMasterClusterFilters": [
"*"
],
"OnFailureDetectionProcesses": [
"echo 'Detected {failureType} on {failureCluster}. Affected replicas: {countSlaves}' >> /tmp/recovery.log"
],
"PreGracefulTakeoverProcesses": [
"echo 'Planned takeover about to take place on {failureCluster}. Master will switch to read_only' >> /tmp/recovery.log"
],
"PreFailoverProcesses": [
"echo 'Will recover from {failureType} on {failureCluster}' >> /tmp/recovery.log"
],
"PostFailoverProcesses": [
"echo '(for all types) Recovered from {failureType} on {failureCluster}. Failed: {failedHost}:{failedPort}; Successor: {successorHost}:{successorPort}' >> /tmp/recovery.log"
],
"PostUnsuccessfulFailoverProcesses": [],
"PostMasterFailoverProcesses": [
"echo 'Recovered from {failureType} on {failureCluster}. Failed: {failedHost}:{failedPort}; Promoted: {successorHost}:{successorPort}' >> /tmp/recovery.log"
],
"PostIntermediateMasterFailoverProcesses": [
"echo 'Recovered from {failureType} on {failureCluster}. Failed: {failedHost}:{failedPort}; Successor: {successorHost}:{successorPort}' >> /tmp/recovery.log"
],
"PostGracefulTakeoverProcesses": [
"echo 'Planned takeover complete' >> /tmp/recovery.log"
],
"CoMasterRecoveryMustPromoteOtherCoMaster": true,
"DetachLostSlavesAfterMasterFailover": true,
"ApplyMySQLPromotionAfterMasterFailover": true,
"PreventCrossDataCenterMasterFailover": false,
"PreventCrossRegionMasterFailover": true,
"MasterFailoverDetachReplicaMasterHost": false,
"MasterFailoverLostInstancesDowntimeMinutes": 0,
"PostponeReplicaRecoveryOnLagMinutes": 0,
"RaftEnabled": true,
"RaftDataDir": "/usr/local/orchestrator/raftdata",
"RaftBind": "192.168.15.7",
"DefaultRaftPort": 10008,
"RaftNodes": [
"192.168.15.7",
"192.168.15.8",
"192.168.15.9"
],
"ConsulAddress": "127.0.0.1:8500",
"ConsulAclToken": ""
}
systemctl start orchestrator
systemctl status orchestrator
显示当前已知的集群(复制拓扑)
./orchestrator-client -c clusters通过 -i 传递集群名称,打印拓扑实例树
./orchestrator-client -c topology -i alma:3306
web端验证!
http://192.168.15.7:3000