Day 13 - 安装(三)副本调度设定

前面提到region会产生副本分散在每一个tikv store里,今天如果架设的机器是跨区的,跨机房的,或者云端上不同的zone,要怎麽控制副本的扩充调度就要透过以下的方式设定。

首先我们利用TiKV可以将特殊的属性写在server.labels里头,如下图分别依据zone、dc、rack、host,设定每一台TiKV的位置,我设定每一台TiKV都储存在分离的zone底下,zone1、zone2、以此类推。
https://ithelp.ithome.com.tw/upload/images/20210908/20113220NckqdBAwD2.png
接着要让pd能够知道有哪些位置层级,所以要在pd的replication.location-labels底下设定有这些位置层级标签。
https://ithelp.ithome.com.tw/upload/images/20210908/201132207WOxCCv9EC.png
以上设定要在第一次deploy之前搞定。如果是要事後补票就要改用pd-ctl工具。
pd-ctl config set location-labels zone,dc,rack,host

接下来设定pd的isolation-level。因为初始化的时候我没有设定,所以会采预设值不作限制。
此时原本的replication.max-replicas:3,依据我的层级第一层为zone,表示三个副本会平均分配在三个zone底下。
接下来将副本数改成replication.max-replicas:5,这时候原本的zone层级无法保证可以平均分布5台,就会往下降一层到dc,如果dc有5个可以满足平均分配的要求,这时候就变成不能保证zone底下平均分配,但是保证在dc层级可以平均分布5台,如果dc也无法满足,就在依层级往下。
接下来我用工具指定isolation-level = "zone"
pd-ctl config set isolation-level zone
replication.max-replicas:3的情况下,如果我把zone1的机器关了,那麽即使在剩下两个副本的情况下,因为isolation-level设定为zone,pd也不会再分散第三个副本出来。


<<:  电子书阅读器上的浏览器 [Day21] 翻译功能 (III) Google Translate

>>:  Angular 下拉选单如何选定预设值

[Golang] Deep into Hello World!

Let's start by understanding the hello.go example ...

[30天 Vue学好学满 DAY17] Event Bus

Event Bus 前面提到了父子元件透过emit & prop进行参数传递,当树状结构逐渐...

【Day 13】 实作 - 透过 AWS 服务 - QuickSight 建立互动式仪表板 ( 1 )

大家好~忧郁的星期一 在前几天我们顺利撷取 Google Analytics 资料到 AWS 中,并...

[SwiftUI] 如何统计数字重复的次数

如果我有一个数字的阵列变数[2, 1, 2, 3, 5, 6, 8, 9],想要计算(0~9)各个数...

Day 1 - Series Overview

In this series, I want to introduce some concepts ...