Skip to content

Commit 7317d1a

Browse files
committed
support migarte etcd mds and snapshot
Signed-off-by: caoxianfei1 <[email protected]>
1 parent b1a3a4e commit 7317d1a

File tree

17 files changed

+627
-11
lines changed

17 files changed

+627
-11
lines changed

cli/command/migrate.go

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,31 @@ import (
3939

4040
var (
4141
MIGRATE_ETCD_STEPS = []int{
42-
playbook.STOP_SERVICE,
43-
playbook.CLEAN_SERVICE, // only container
42+
playbook.ADD_ETCD_MEMBER,
4443
playbook.PULL_IMAGE,
4544
playbook.CREATE_CONTAINER,
4645
playbook.SYNC_CONFIG,
46+
playbook.AMEND_ETCD_CONFIG,
4747
playbook.START_ETCD,
48+
playbook.AMEND_MDS_CONFIG, // add a etcd endpoint
49+
playbook.RESTART_SERVICE, // restart all mds then add a etcd endpoint in mds.conf
50+
playbook.REMOVE_ETCD_MEMBER,
51+
playbook.STOP_SERVICE,
52+
playbook.CLEAN_SERVICE, // only container
53+
// playbook.AMEND_MDS_CONFIG, // remove a etcd endpoint
54+
// playbook.RESTART_SERVICE, // restart all mds then remove a etcd endpoint in mds.conf
55+
// playbook.RELOAD_METASERVER
4856
playbook.UPDATE_TOPOLOGY,
4957
}
5058

5159
// mds
5260
MIGRATE_MDS_STEPS = []int{
53-
playbook.STOP_SERVICE,
54-
playbook.CLEAN_SERVICE, // only container
5561
playbook.PULL_IMAGE,
5662
playbook.CREATE_CONTAINER,
5763
playbook.SYNC_CONFIG,
5864
playbook.START_MDS,
65+
playbook.STOP_SERVICE,
66+
playbook.CLEAN_SERVICE, // only container
5967
playbook.UPDATE_TOPOLOGY,
6068
}
6169

@@ -157,7 +165,7 @@ func checkMigrateTopology(curveadm *cli.CurveAdm, data string) error {
157165
} else if len(dcs2add) < len(dcs2del) {
158166
return errno.ERR_DELETE_SERVICE_WHILE_MIGRATING_IS_DENIED
159167
}
160-
// len(dcs2add) == len(dcs2del)
168+
161169
if len(dcs2add) == 0 {
162170
return errno.ERR_NO_SERVICES_FOR_MIGRATING
163171
}
@@ -199,6 +207,7 @@ func genMigratePlaybook(curveadm *cli.CurveAdm,
199207
migrates := getMigrates(curveadm, data)
200208
role := migrates[0].From.GetRole()
201209
steps := MIGRATE_ROLE_STEPS[role]
210+
etcdDCs := curveadm.FilterDeployConfigByRole(dcs, topology.ROLE_ETCD)
202211

203212
// post clean
204213
if options.clean {
@@ -221,10 +230,14 @@ func genMigratePlaybook(curveadm *cli.CurveAdm,
221230
config := dcs2add
222231
switch step {
223232
case playbook.STOP_SERVICE,
224-
playbook.CLEAN_SERVICE:
233+
playbook.CLEAN_SERVICE,
234+
playbook.ADD_ETCD_MEMBER:
225235
config = dcs2del
226236
case playbook.BACKUP_ETCD_DATA:
227237
config = curveadm.FilterDeployConfigByRole(dcs, topology.ROLE_ETCD)
238+
case playbook.AMEND_MDS_CONFIG,
239+
playbook.RESTART_SERVICE:
240+
config = curveadm.FilterDeployConfigByRole(dcs, topology.ROLE_MDS)
228241
case
229242
playbook.CREATE_PHYSICAL_POOL,
230243
playbook.CREATE_LOGICAL_POOL,
@@ -251,6 +264,11 @@ func genMigratePlaybook(curveadm *cli.CurveAdm,
251264
optionsKV[comm.KEY_POOLSET] = poolset
252265
case playbook.UPDATE_TOPOLOGY:
253266
optionsKV[comm.KEY_NEW_TOPOLOGY_DATA] = data
267+
case playbook.ADD_ETCD_MEMBER,
268+
playbook.AMEND_ETCD_CONFIG,
269+
playbook.AMEND_MDS_CONFIG:
270+
optionsKV[comm.KEY_MIGRATE_SERVERS] = migrates
271+
optionsKV[comm.KEY_CLUSTER_DCS] = etcdDCs
254272
}
255273

256274
pb.AddStep(&playbook.PlaybookStep{

client.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
kind: curvefs
2+
s3.ak: curve
3+
s3.sk: Netease@2023
4+
s3.endpoint: 10.182.26.46:19005
5+
s3.bucket_name: curvefs
6+
container_image: quay.io/opencurve/curve/curvefs:v2.7.0-rc1_d8a1137
7+
mdsOpt.rpcRetryOpt.addrs: 10.182.26.46:6700,10.182.26.35:6700,10.182.26.36:6700
8+
log_dir: /home/caoxianfei/client/logs
9+
data_dir: /mnt/v27cache
10+
diskCache.fullRatio: 90
11+
diskCache.safeRatio: 70
12+
diskCache.trimRatio: 50
13+
diskCache.maxUsableSpaceBytes: 10737418240
14+
diskCache.maxFileNums: 1000000
15+
diskCache.trimCheckIntervalSec: 5
16+
client.loglevel: 9

curve

16.4 MB
Binary file not shown.

internal/common/common.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ const (
5757
// migrate
5858
KEY_MIGRATE_STATUS = "MIGRATE_STATUS"
5959
KEY_MIGRATE_COMMON_STATUS = "MIGRATE_COMMON_STATUS"
60+
KEY_CLUSTER_DCS = "CLUSTER_DCS"
6061

6162
// check
6263
KEY_CHECK_WITH_WEAK = "CHECK_WITH_WEAK"

internal/configure/topology/dc_get.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,11 @@ func (dc *DeployConfig) GetInstances() int { return dc.instanc
121121
func (dc *DeployConfig) GetHostSequence() int { return dc.hostSequence }
122122
func (dc *DeployConfig) GetInstancesSequence() int { return dc.instancesSequence }
123123
func (dc *DeployConfig) GetServiceConfig() map[string]string { return dc.serviceConfig }
124-
func (dc *DeployConfig) GetVariables() *variable.Variables { return dc.variables }
124+
func (dc *DeployConfig) SetServiceConfig(key, value string) {
125+
dc.serviceConfig[key] = value
126+
}
127+
128+
func (dc *DeployConfig) GetVariables() *variable.Variables { return dc.variables }
125129

126130
// (2): config item
127131
func (dc *DeployConfig) GetPrefix() string { return dc.getString(CONFIG_PREFIX) }

internal/configure/topology/variables.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,9 @@ var (
118118
{name: "cluster_mds_dummy_addr"},
119119
{name: "cluster_mds_dummy_port"},
120120
{name: "cluster_chunkserver_addr", kind: []string{KIND_CURVEBS}},
121-
{name: "cluster_snapshotclone_addr", kind: []string{KIND_CURVEBS}},
121+
{name: "cluster_snapshotclone_addr"},
122122
{name: "cluster_snapshotclone_proxy_addr", kind: []string{KIND_CURVEBS}},
123-
{name: "cluster_snapshotclone_dummy_port", kind: []string{KIND_CURVEBS}},
123+
{name: "cluster_snapshotclone_dummy_port"},
124124
{name: "cluster_snapshotclone_nginx_upstream", kind: []string{KIND_CURVEBS}},
125125
{name: "cluster_snapshot_addr"}, // tools-v2: compatible with some old version image
126126
{name: "cluster_snapshot_dummy_addr"}, // tools-v2

internal/errno/errno.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,9 @@ var (
404404
ERR_GET_CHUNKSERVER_COPYSET = EC(410026, "failed to get chunkserver copyset")
405405
ERR_GET_MIGRATE_COPYSET = EC(410027, "migrate chunkserver copyset info must be 2")
406406
ERR_CONTAINER_NOT_REMOVED = EC(410027, "container not removed")
407+
ERR_GET_CLUSTER_ETCD_ADDR = EC(410028, "failed to get cluster_etcd_addr variable")
408+
ERR_ADD_ETCD_MEMEBER = EC(410029, "failed to add etcd member to existing etcd cluster")
409+
ERR_REMOVE_ETCD_MEMBER = EC(410030, "failed to remove etcd member from existing etcd cluster")
407410
// 420: common (curvebs client)
408411
ERR_VOLUME_ALREADY_MAPPED = EC(420000, "volume already mapped")
409412
ERR_VOLUME_CONTAINER_LOSED = EC(420001, "volume container is losed")

internal/playbook/factory.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ const (
8484
INSTALL_CLIENT
8585
UNINSTALL_CLIENT
8686
ATTACH_LEADER_OR_RANDOM_CONTAINER
87+
ADD_ETCD_MEMBER
88+
AMEND_ETCD_CONFIG
89+
AMEND_MDS_CONFIG
90+
REMOVE_ETCD_MEMBER
8791

8892
// bs
8993
FORMAT_CHUNKFILE_POOL
@@ -251,6 +255,14 @@ func (p *Playbook) createTasks(step *PlaybookStep) (*tasks.Tasks, error) {
251255
t, err = comm.NewInstallClientTask(curveadm, config.GetCC(i))
252256
case UNINSTALL_CLIENT:
253257
t, err = comm.NewUninstallClientTask(curveadm, nil)
258+
case ADD_ETCD_MEMBER:
259+
t, err = comm.NewAddEtcdMemberTask(curveadm, config.GetDC(i))
260+
case AMEND_ETCD_CONFIG:
261+
t, err = comm.NewAmendEtcdConfigTask(curveadm, config.GetDC(i))
262+
case AMEND_MDS_CONFIG:
263+
t, err = comm.NewAmendMdsConfigTask(curveadm, config.GetDC(i))
264+
case REMOVE_ETCD_MEMBER:
265+
t, err = comm.NewRemoveEtcdMemberTask(curveadm, config.GetDC(i))
254266
// bs
255267
case FORMAT_CHUNKFILE_POOL:
256268
t, err = bs.NewFormatChunkfilePoolTask(curveadm, config.GetFC(i))

internal/task/scripts/enable_etcd_auth.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
15-
*/
15+
*/
1616

1717
/*
1818
* Project: Curveadm
1919
* Created Date: 2023-08-02
2020
* Author: wanghai (SeanHai)
21-
*/
21+
*/
2222

2323
package scripts
2424

internal/task/scripts/script.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ var (
3939
WAIT string
4040
//go:embed shell/report.sh
4141
REPORT string
42+
//go:embed shell/add_etcd.sh
43+
ADD_ETCD string
44+
//go:embed shell/remove_etcd.sh
45+
REMOVE_ETCD string
4246

4347
// CurveBS
4448

0 commit comments

Comments
 (0)