安装git
sudo yum install git
docker build -t orchestrator:latest .
docker run -d -p 3000:3000 \-v /docker/orchestrator/conf.json:/etc/orchestrator.conf.json \--name orc dzd624175217/orchestrator
下列环境变量可用,并且如果没有配置文件绑定安装到容器中,则以下环境变量生效 /etc/orchestrator.conf.json
ORC_TOPOLOGY_USER:默认为 orchestrator
ORC_TOPOLOGY_PASSWORD:默认为 orchestrator
ORC_DB_HOST:默认为 db
ORC_DB_PORT:默认为 3306
ORC_DB_NAME:默认为 orchestrator
ORC_USER:默认为orc_server_user
ORC_PASSWORD:默认为 orc_server_password
要设置这些变量,可以将它们添加到环境文件中,然后在其中添加它们key=value(每行一对)。然后,您可以将此环境文件传递给docker命令,添加—env-file=path/to/env-file到该docker run命令中
conf.json
{"Debug": true,"EnableSyslog": false,"ListenAddress": ":3000","MySQLTopologyUser": "orc_client_user","MySQLTopologyPassword": "orc_client_password","MySQLTopologyCredentialsConfigFile": "","MySQLTopologySSLPrivateKeyFile": "","MySQLTopologySSLCertFile": "","MySQLTopologySSLCAFile": "","MySQLTopologySSLSkipVerify": true,"MySQLTopologyUseMutualTLS": false,"BackendDB": "sqlite","SQLite3DataFile": "/usr/local/orchestrator/orchestrator.sqlite3","MySQLConnectTimeoutSeconds": 1,"DefaultInstancePort": 3306,"DiscoverByShowSlaveHosts": true,"InstancePollSeconds": 5,"DiscoveryIgnoreReplicaHostnameFilters": ["a_host_i_want_to_ignore[.]example[.]com",".*[.]ignore_all_hosts_from_this_domain[.]example[.]com","a_host_with_extra_port_i_want_to_ignore[.]example[.]com:3307"],"UnseenInstanceForgetHours": 240,"SnapshotTopologiesIntervalHours": 0,"InstanceBulkOperationsWaitTimeoutSeconds": 10,"HostnameResolveMethod": "default","MySQLHostnameResolveMethod": "@@hostname","SkipBinlogServerUnresolveCheck": true,"ExpiryHostnameResolvesMinutes": 60,"RejectHostnameResolvePattern": "","ReasonableReplicationLagSeconds": 10,"ProblemIgnoreHostnameFilters": [],"VerifyReplicationFilters": false,"ReasonableMaintenanceReplicationLagSeconds": 20,"CandidateInstanceExpireMinutes": 60,"AuditLogFile": "","AuditToSyslog": false,"RemoveTextFromHostnameDisplay": ".mydomain.com:3306","ReadOnly": false,"AuthenticationMethod": "","HTTPAuthUser": "","HTTPAuthPassword": "","AuthUserHeader": "","PowerAuthUsers": ["*"],"ClusterNameToAlias": {"127.0.0.1": "test suite"},"SlaveLagQuery": "","DetectClusterAliasQuery": "SELECT SUBSTRING_INDEX(@@hostname, '.', 1)","DetectClusterDomainQuery": "","DetectInstanceAliasQuery": "","DetectPromotionRuleQuery": "","DataCenterPattern": "[.]([^.]+)[.][^.]+[.]mydomain[.]com","PhysicalEnvironmentPattern": "[.]([^.]+[.][^.]+)[.]mydomain[.]com","PromotionIgnoreHostnameFilters": [],"DetectSemiSyncEnforcedQuery": "","ServeAgentsHttp": false,"AgentsServerPort": ":3001","AgentsUseSSL": false,"AgentsUseMutualTLS": false,"AgentSSLSkipVerify": false,"AgentSSLPrivateKeyFile": "","AgentSSLCertFile": "","AgentSSLCAFile": "","AgentSSLValidOUs": [],"UseSSL": false,"UseMutualTLS": false,"SSLSkipVerify": false,"SSLPrivateKeyFile": "","SSLCertFile": "","SSLCAFile": "","SSLValidOUs": [],"URLPrefix": "","StatusEndpoint": "/api/status","StatusSimpleHealth": true,"StatusOUVerify": false,"AgentPollMinutes": 60,"UnseenAgentForgetHours": 6,"StaleSeedFailMinutes": 60,"SeedAcceptableBytesDiff": 8192,"PseudoGTIDPattern": "","PseudoGTIDPatternIsFixedSubstring": false,"PseudoGTIDMonotonicHint": "asc:","DetectPseudoGTIDQuery": "","BinlogEventsChunkSize": 10000,"SkipBinlogEventsContaining": [],"ReduceReplicationAnalysisCount": true,"FailureDetectionPeriodBlockMinutes": 60,"RecoveryPeriodBlockSeconds": 3600,"RecoveryIgnoreHostnameFilters": [],"RecoverMasterClusterFilters": ["_master_pattern_"],"RecoverIntermediateMasterClusterFilters": ["_intermediate_master_pattern_"],"OnFailureDetectionProcesses": ["echo 'Detected {failureType} on {failureCluster}. Affected replicas: {countSlaves}' >> /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"],"CoMasterRecoveryMustPromoteOtherCoMaster": true,"DetachLostSlavesAfterMasterFailover": true,"ApplyMySQLPromotionAfterMasterFailover": true,"PreventCrossDataCenterMasterFailover": false,"PreventCrossRegionMasterFailover": false,"MasterFailoverDetachSlaveMasterHost": false,"MasterFailoverLostInstancesDowntimeMinutes": 0,"PostponeSlaveRecoveryOnLagMinutes": 0,"OSCIgnoreHostnameFilters": [],"GraphiteAddr": "","GraphitePath": "","GraphiteConvertHostnameDotsToUnderscores": true}
docker run -d --name orc \--net orchnet --ip 172.20.0.10 \-v /home/docker/orc/conf.json:/etc/orchestrator.conf.json \-p 3000:3000 dzd624175217/orchestrator:latest
for N in 1 2 3do docker run -d --name=node$N --hostname=node$N --net orchnet --ip "172.20.0.1$N" \-v $PWD/d$N:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mypass \mysql/mysql-server:8.0.15 \--server-id=$N \--enforce-gtid-consistency='ON' \--log-slave-updates='ON' \--gtid-mode='ON' \--log-bin='mysql-bin-1.log'done
docker exec -it node1 mysql -uroot -pmypass \-e "CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'slavepass';" \-e "GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';" \-e "SHOW MASTER STATUS;"
for N in 2 3do docker exec -it node$N mysql -uroot -pmypass \-e "CHANGE MASTER TO MASTER_HOST='172.20.0.11', MASTER_PORT=3306, \MASTER_USER='repl', MASTER_PASSWORD='slavepass', MASTER_AUTO_POSITION = 1;"docker exec -it node$N mysql -uroot -pmypass -e "START SLAVE;"done
docker exec -it node1 mysql -uroot -pmypass \-e "CREATE USER 'orc_client_user'@'172.20.0.10' IDENTIFIED BY 'orc_client_password';" \-e "GRANT SUPER, PROCESS, REPLICATION SLAVE, RELOAD ON *.* TO 'orc_client_user'@'172.20.0.10';" \-e "GRANT SELECT ON mysql.slave_master_info TO 'orc_client_user'@'172.20.0.10';"

参考
【官方】docker镜像制作
https://github.com/wagnerjfr/orchestrator-mysql-replication-docker
https://segmentfault.com/a/1190000017838535
https://www.cnblogs.com/zhoujinyi/p/10387581.html
