登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
Gitee 年度开源项目评选结果正式揭晓,速戳👉
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
30
Star
23
Fork
110
openGauss
/
CM
代码
Issues
25
Pull Requests
15
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
201
[民生银行需求]cm两节点部署cm_server.conf参数third_party_gateway_ip支持以逗号分隔的多个ip[master分支提交]
已合并
cczhu:masterThirdIp
openGauss:master
cczhu
创建于 2024-04-25 15:46
克隆/下载
HTTPS
SSH
复制
下载 Email Patch
下载 Diff 文件
<!-- 感谢您提交Pull Reqeust --> <!-- 提交说明: 请按照以下的模板提交PR,下列内容均为必填项。如果未补充对应内容,不允许提交PR。 --> 【标题】[民生银行需求]cm两节点部署cm_server.conf参数third_party_gateway_ip支持以逗号分隔的多个ip[master分支提交] 【实现内容】:cm两节点部署cm_server.conf参数third_party_gateway_ip支持以逗号分隔的多个ip 两节点部署且,cms_enable_failover_on2nodes配置为true时,当节点1与节点2发生网络网络隔离时。 节点1与节点2的cm_server会将以与第三方网关的连通条件作为cm_server是否升主的条件之一。 为了允许允许配置多个三方网关,cm_server.conf参数third_party_gateway_ip需要支持以逗号分隔的多个ip。 【根因分析】: 在两节点环境中,cms_enable_failover_on2nodes配置为true时,节点1与节点2的cm_server会将以与第三方网关的连通条件作为cm_server是否升主的条件之一。具体如下: 当节点cm与三方网关中配置的所有ip都能ping通时,cm会升主; 当节点cm与三方网关中配置的所有ip都不能ping通时,cm会降备。即cm升主与降备的条件是三方网关的所有ip都能ping通或者不能ping通。 考虑下面的场景,如果三方网关配置为两个ip。发生网络分区时,节点1、节点2与这两个ip都能ping通,则节点1、节点2cm都会升主;在这个基础上,节点1只能ping通其中的一个ip了,节点1的cm不会降备;如果节点1与这两个ip都不能ping通时,则节点1 的cm会降备。 【实现方案】: 【关联需求或issue】: https://gitee.com/opengauss/CM/issues/I8H165 【开发自验报告】: 测试用例一: 部署一主一备两节点集群,cms_enable_failover_on2nodes=true, third_party_gateway_ip=17.12.1.17(初始时,两个节点都能与17.12.1.17ping通) 初始时,集群一切正常。 构造网络故障:使用iptables -I OUTPUT -d 17.12.1.22 -j DROP; iptables -I INPUT -s 17.12.1.22 -j DROP; 阻断节点1与节点2的网络 预期:节点1上cm升为ptimary,节点2cm升为primary 实际:符合预期 恢复网络:恢复两个节点的网络 预期:两个节点的cm为1primary1standby 实际:与预期一致 测试用例二: 部署一主一备两节点集群,cms_enable_failover_on2nodes=true, third_party_gateway_ip=17.12.1.17,17.12.1.18 (初始时,两个节点都能与17.12.1.17、17.12.1.18ping通),集群一切正常。 构造网络故障:使用iptables -I OUTPUT -d 17.12.1.22 -j DROP; iptables -I INPUT -s 17.12.1.22 -j DROP; 阻断节点1与节点2的网络 预期:节点1上cm升为ptimary,节点2上cm升为primary 实际:节点1上cm升为ptimary,节点2上cm升为primary 在此基础上继续施加故障 操作:在节点1上构造节点1与17.12.1.17的网络隔离,使得节点1不能ping通17.12.1.17 预期:节点1的cm保持为primary、节点2的cm保持为primary 实际:与预期一致 在此基础上继续施加故障 操作:在节点1上构造节点1与17.12.1.18的网络隔离,使得节点1不能ping通17.12.1.18(此时节点1不能ping通17.12.1.17、172.23.1.18) 预期:节点1的cm降为standby、节点2的cm保持为primary 实际:与预期一致 在此基础上继续施加操作 操作:取消节点1上与17.12.1.18的网络隔离,此时节点1只能ping通17.12.1.18 预期:节点1的cm保持为standby、节点2的cm保持为primary 实际:与预期一致 在此基础上继续施加操作 操作:取消节点1上与17.12.1.17的网络隔离,此时节点1能ping通17.12.1.17、17.12.1.18 预期:节点1的cm升为primary、节点2的cm保持为primary 实际:与预期一致 恢复网络:取消节点1与节点2的网络隔离 预期:两个节点的cm为1个primary1个standby 实际:与预期一致。 测试用例三: 部署一主一备两节点集群,cms_enable_failover_on2nodes=true, third_party_gateway_ip=17.12.1.17,17.12.1.18 (初始时,节点1能与17.12.1.17、17.12.1.18ping通、节点2能与17.12.1.18ping通),集群一切正常。 构造网络故障:使用iptables -I OUTPUT -d 17.12.1.22 -j DROP; iptables -I INPUT -s 17.12.1.22 -j DROP; 阻断节点1与节点2的网络 预期:节点1上cm升为ptimary,节点2上cm为standby 实际:节点1上cm升为ptimary,节点2上cm为standby 在此基础上继续施加操作 操作:取消节点2上与17.12.1.17的网络隔离,此时节点2能与17.12.1.17、17.12.1.18ping通 预期:节点1的cm保持为primary、节点2的cm升为primary 实际:与预期一致 在此基础上继续施加操作 恢复网络:取消节点1与节点2的网络隔离 预期:两个节点的cm为1个primary1个standby 实际:与预期一致。 【其他说明】: 代码中third_party_gateway_ip为128位的字符数组,ip最长为255.255.255.255(15位),故考虑逗号,该参数最多可以支持8个ip. 这个pr是在前面的pr基础上https://gitee.com/opengauss/CM/pulls/182修改的,之前的pr对需求理解有一些偏差。 关联资料pr:https://gitee.com/opengauss/docs/pulls/6310
此 Pull Request 需要通过一些审核项
类型
指派人员
状态
审查
opengauss-bot
已完成
(0/0人)
测试
opengauss-bot
已完成
(0/0人)
怎样手动合并此 Pull Request
git checkout master
git pull https://gitee.com/zhu--chen/CM.git masterThirdIp
git push origin master
评论
25
提交
1
文件
1
检查
代码问题
0
批量操作
展开设置
折叠设置
审查
Code Owner
审查人员
yz
yz_db
dengyong
dengyong2
wangwei5
wangwei5
zjxqxf
zjxqxf
胡习林
hu-xilin
wanghuanzhuo
wanghuanzhuo
熊小军
xiong_xjun
周斌
justbk
胡正超
gentle_hu
杨皓
yanghaos
alfredwang
alfredwang82
peibaoyi
peibaoyi
陈栋
chendong76
zhulixia
zhulixia
cchen676
struggle_hw
yangwei
yangwei129
yewk
yewk
黄堰蛟
huang-yanjiao
songlinxuan
muyulinzhong
Carl
chen-zhikai-999
薛蒙恩
xue_meng_en
周聪
congzhou2603
opengauss-bot
opengauss-bot
未设置
最少人数
0
测试
yz
yz_db
dengyong
dengyong2
wangwei5
wangwei5
zjxqxf
zjxqxf
胡习林
hu-xilin
wanghuanzhuo
wanghuanzhuo
熊小军
xiong_xjun
周斌
justbk
胡正超
gentle_hu
杨皓
yanghaos
alfredwang
alfredwang82
peibaoyi
peibaoyi
陈栋
chendong76
zhulixia
zhulixia
cchen676
struggle_hw
yangwei
yangwei129
yewk
yewk
黄堰蛟
huang-yanjiao
songlinxuan
muyulinzhong
Carl
chen-zhikai-999
薛蒙恩
xue_meng_en
周聪
congzhou2603
opengauss-bot
opengauss-bot
未设置
最少人数
0
优先级
不指定
严重
主要
次要
不重要
标签
approved
opengauss-cla/yes
ci-pipeline-success
lgtm-chendong76
lgtm-yz_db
sig/cm
codecheck-success
关联 Issue
I8H165
opengauss CM相关需求【M】
里程碑
未关联里程碑
参与者
(6)
1
https://gitee.com/opengauss/CM.git
git@gitee.com:opengauss/CM.git
opengauss
CM
CM
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册