10.17日学习笔记
- HBase 容灾演练:主集群 → 备份集群异步复制
复制链路配置
主集群 hbase1(5 台 RegionServer),备集群 hbase2(3 台),跨机房 2 ms 延迟。
在 hbase1 开启 replication:
xml
alter 'order', {NAME => 'cf1', REPLICATION_SCOPE => '1'}
在 hbase1 加对等集群:
Shell
add_peer '2', CLUSTER_KEY => "zk2,zk3,zk4:2181:/hbase2"
验证
用 org.apache.hadoop.hbase.replication.VerifyReplication 对比 100 万行,0 缺失,延迟 600 ms(写入主集群后 600 ms 内到备集群)。
故障注入
主集群 2 台 RegionServer 宕机,写吞吐从 8w → 5w QPS,备集群延迟升至 1.2 s。
网络抖动 200 ms,主集群 WAL 堆积 3.8 GB,自动降级为 batch 模式,恢复后 30 s 追平。
切换演练
业务层使用阿里云 OTS SDK 配置双写开关,一键把读流量切到备集群,RPO ≈ 1 min,RTO ≈ 3 min。
2. VM 模板自动化构建(Packer + Kickstart)
流程图
ISO → Packer → Kickstart → VMware-ISO builder → .vmx template → vSphere
关键片段
centos9.json:
JSON
{
"builders": [{
"type": "vmware-iso",
"iso_url": "CentOS-Stream-9-x86_64-dvd.iso",
"iso_checksum": "sha256:xxx",
"vm_name": "centos9-tmpl",
"guest_os_type": "centos9-64",
"disk_size": "40G",
"vnc_disable_password": true,
"boot_command": [
"
"linux inst.ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg
],
"http_directory": "http"
}],
"provisioners": [{
"type": "shell",
"inline": [
"dnf update -y",
"systemctl enable vmware-tools"
]
}]
}
执行:
bash
packer build centos9.json
45 min 后得到 centos9-tmpl.vmx,导入 vSphere 做模板,后续克隆 200 台平均 90 s/台。
优化
把 disk_type = "thin" 改为 "eager_zeroed",首次写入性能提升 15 %,但模板大小增加 100 %;按需选择。
3. 杂项排错
HBase replication 异常
日志 ReplicationSource: Failed to ship edits
原因:备集群表 order 不存在列族 cf2,主集群却作用域 1。
解决:备集群先 alter 添加列族,再 enable_table_replication。
Packer 无法获取 IP
VMware Workstation 17 在 Win11 22H2 需以管理员运行,否则 VNC 绑定失败;加 "headless": false 可视化排错。
浙公网安备 33010602011771号