【今日话题】 大家都是怎么管理线上的配置,配置变更的分发? 1、360用zk弄了一个解决方案:Qconf - 黑夜路人 2、把不同环境的配置存 etcd里,服务器或者项目里放一个环境标识 - 荒野猎人 3、etcd,实在不行你放es里面我也不说啥,或者consul,zk - 我不叫大脸猫 4、etcd 挺好 - 明 5、consul更好,比etcd轻量, 跟etcd好像是一家, 可惜k8s不支持consul - 我不叫大脸猫 6、zk etcd consul有啥具体特点 ? - linbo 7、我用下来,zk 不走 http 协议,所以每个语言需要 client,长连接,所以有 session 临时节点概念,etcd 走 http 和 grpc,靠 ttl 来管理临时节点,zk 实现的是一个简化的 paxos 协议,性能一般,etcd consul 都是 go raft 的实现,consul 好像还支持从 server 发起的健康检查,好像不错,不过没用过,zk 如果在非 ssd 的机子上发生主从切换,整个集群会发生诡异的情况,运维起来比较蛋疼 - yangmls 8、集群会失效?- linbo 9、报错很多,io wait 太高,大量 client 断开 session 然后重连,zk 收到大量写入请求,从节点狂写错误日志报跟不上主节点 - yangmls 10、我想说一下今天的话题,配置也可以版本化? - 荒野猎人 11、git么 - 我不叫大脸猫 12、先判断环境,再判断是否有 本地覆盖,然后是版本化,不是GIT,就是CONFIG,比如 V1版的程序 配V1版的CONFIG,等V2版的程序开发出来,不是改V1版的CONFIG,而是新增加V2版的CONFIG,然后 V2版的CONFIG先上线,程序再上线,这样不会出现先有鸡还是先有蛋的问题,程序回滚,CONFIG也都在 - 荒野猎人 13、我比较好奇数据库变更如何回滚 - 我不叫大脸猫 14、数据库结构变更就不行了 - 荒野猎人 15、有可能有的字段删除了啊 - 我不叫大脸猫 16、一般我们都是要求配置向后兼容的,不会出现 v2 的问题,也可以的,字段只允许加 ,如果要修改,要确保兼容 - yangmls 17、分表, 分库操作呢 - 我不叫大脸猫 18、不兼容的,给你起一个新的库 - yangmls 19、无法兼容呢 - 我不叫大脸猫 20、两边同步,上线之后切库 - yangmls 21、双写? - 我不叫大脸猫 22、没有流量再把老库下线,不是双写,有类似 otter 那样的服务把两个库同步 - yangmls 23、不还是双写喽, 叫法不一样喽,看来果然没有什么太优雅的方案 - 我不叫大脸猫 24、不一样,双写是需要改代码,这种类似主从同步 - yangmls 25、程序双写或者通过binlog双写么 - 我不叫大脸猫 26、服务本身是无感知的 - yangmls 27、还有, 你新老库同步, 表结构如果不一样, otter这块还是要加代码处理的吧 - 我不叫大脸猫 28、这种苦的都是 dba 和中间件团队,业务方很轻松 - yangmls 29、对啊, 还是不优雅咩 - 我不叫大脸猫 30、不用写代码,写个配置就行,哪个字段对应哪个,已经很优雅了,服务不停机,业务无感知,还想怎样 - yangmls 31、dba还是苦逼啊,小团队哪儿还分什么dba和中间件团队,基本都是运维一肩扛了,最后还是要靠研发想办法解决 - 我不叫大脸猫 32、我们 dba 搞过一套 zk agent 比 mha 得多的数据库主从自动切换的方案,结果我问他,这玩意在线上用了吗?他说还没敢上,太自动化也不是好事,有时候手动切更靠谱一点 - yangmls 33、不敢上不是太自动化的问题, 是自动化没办法预测未知问题, 可能有问题直接就跳过了, 否则阿里那么强的数据库研发实力, 早就有比mha牛逼的方案了 - 我不叫大脸猫 34、用zk下发配置文件 - 如末 35、用什么都行 只要能维护一个 自增长的版本号 有任务能拉到这个版本的配置 基本就没啥问题吧 - 李冬 36、我们直接rsync下发 - 锋 37、我们所有线上配置是在redis缓存,所有系统加载统一取缓存,后台维护修改配置,先改库 然后再刷新缓存。生产做两级验证,其中灰度环境独立,配置变更先推送灰度验证。验证没问题,生产正式环境再刷新缓存。同时支持若验证有问题,支持从生产环境缓存回滚覆盖库。缓存区中设置了备份块,万一生产上才发现问题,使用备份刷回。 -紫川 38、我们有统一的配置团队。提供web和API修改方式。线上线下每台机器都有配置agent.agent负责做分发,管理。 - 猫_mt 【其他问答】 1、抱歉插入问个问题,CentOS主机间共享存储是不是nfs比较好? - 水浸街 1:nfs比较好,我们就用的nfs - 我不叫大脸猫 2:nfs 并发大 会卡...,单进程的好像。。。之前用过。。。做图片存储共享。。。发现IO 不行 - 明 3:用nfs的一般都是静态资源了,静态资源一般都走cdn了, 也没啥并发 - 我不叫大脸猫 2、咨询个问题,php用pdo链接数据库,链接的时候设置的是持久话链接,如果创建的链接时间大于my.cnf里面配置的wait_timeout,这个链接在快到达这个时间的时候没有使用,会自动断开吗? - 杜世伟 1:创建连接的时候有单独的timeout - 胜邪 2:创建的时候没有指定的,使用的是默认值 - 杜世伟 3:实际情况我知道 不过按常理 应该是从连接建立成功后才计算时间的 - 胜邪 4:我设置的是持久话链接,那这个时间和哪个时间去比较呢?在什么情况下会关闭掉这个链接 - 杜世伟 5:看了下mysql变量,有connect_timeout - 胜邪 6:wait_timeout? - 杜世伟 7:对啊,就是这个 - 胜邪 8:connect_timeout 这个应该是创建链接的时间吧,不是保持的时间 - 杜世伟 9:你持久不持久 对MySQL 一样 , 就是wait 啊 - 胜邪 10:我就是想确认一下:就是用pdo设置持久话链接,从链接创建时间达到wait_timeout时间戳就会自动断开链接对吧? - 杜世伟 11:不会 - 胜邪 12:需要就上,上了就有经验了,平时多看多听多学, - 明 3、nginx woker 和php-cgi 进程数 怎么设置调优? - 碎语真颜 1:不是CPUx2么。大家一般都这么条。还能怎么调 - Today 2:cpu x 2 ? 那会有进程的切换吧 - 碎语真颜 3:无论如何都会有cpu切换... cpu一直在切换.... - Nemo 4:nginx一般不是 cpu x1?一般坐负载均衡都是绑CPU的 ,作为cgi我就不知道了 - 黄隆 5:php-cgi的数呢?进程数呢 - 碎语真颜 6:也许减少CPU切换也是好事,1:1和1:2都可以做一下压力测试,然后你就会有结论了,我觉得是io密集型可以1:2,CPU密集型1:1更好 - 黄隆 7:nginx的话cpu worker 1:1 ? - 碎语真颜 8:恩, - 黄隆
9:嗯,压一下看看实际情况 - 碎语真颜 10:一般是这样,这个和你PHP程序应该有关? - 黄隆 11:php-fpm 按内存大小 - liyang 12:nginx和php解释器通过socket通信,如php-fpm,PHP-fpm是多进程的。我觉得nginx这个时候应该是当了负载均衡的角色。至于php-fpm又相当另外的一个woker,这个woker应该就和PHP程序有关了。 所以在单台nginx 1:1的情况下可以测试php-fpm的1:1和1:2配置 ,测试画表格,当然也要看看内存和CPU负载,别浪费资源了 - 黄隆
13:fpm 里面就是从 nginx获取执行的文件名 读文件 exec php代码的 剩下的就是 zend的事了 - 李冬 14:fpm跟nginx没关系啊,执行文件名是走的cgi协议通过poll由php-cgi进程处理的。fpm是管理这些php-cgi进程的 - 廖强 15:fpm里面直接执行的 php - 李冬 16:fpm 怎么能执行PHP…… fastcgi process management - Eddy 17:phpfpm 代码里面有 一句叫 fpm-request-script - 李冬 18:fpm是进程管理器啊,调用进程执行cgi请求 - tlanyan 19:都用了,fascgi 还用cgi协议?这部多此一举么fastcgi - 李冬 20:fatcgi是请求协议啊 - tlanyan 21:为啥要用两次通信? - 李冬 22:fastcgi也是协议 fpm是其实现 - tlanyan 23:我知道他是实现了 fastcgi 完了还有管理进程的功能 我说的是 通过fastcgi接收到文件名后 直接在 fpm里面执行php代码的 我没说你们对于fastcgi那块说的错 但是fpm没有cgi协议啊 - 李冬 24:php-fpm的管理对象是php-cgi。但不能说php-fpm是fastcgi进程的管理器、分享链接[ 搞不清FastCgi与PHP-fpm之间是个什么样的关系 ] - 黄隆 25:没有说是fastcgi进程管理器,我说的是管理进程的功能,刚才讨论的唯一不同点在于 有人说 PHPfpm 需要跟cgi通信 - 李冬 26:cgi是协议,你说的应该是php-cgi进程 - 廖强 27:phpfpm 没有实现 cgi协议吧 - 李冬 28:php-fpm应该相当于fork,否则php就单进程了 - liyang 29:没有 - 廖强 30:他只是一个工具。与协议没有任何关系 - 如末 31:这不就达成共识了 - 李冬 32:就拿吃饭来说,用手抓饭吃烫的一比,后来人发明了筷子,勺子。也可以来让人吃饭,速度又快又不烫,还可以夹菜。 - 如末 33:fpm跟nginx没关系啊,执行文件名是走的cgi协议通过poll由php-cgi进程处理的。fpm是管理这些php-cgi进程的 20:这个是你说的 - 李冬 34:nginx和php是fastcgi协议 ,fpm跟nginx确实没有关系啊 - tiyee 35:是没关系 - 李冬 36:执行走的应该是php.exe跟phpfpm也没关系 - liyang 37:其实 fastcgi和cgi是啥关系呢 - 黄隆 38:具体某个请求处理跟fpm也没关系啊 - 廖强 39:nginx跟php是独立的进程,只是他们通过fast-cgi实现的交互,php-fpm只是php的进程管理器 - tiyee 40:Fastcgi只是一个模式而已,进程常驻提高效率。cgi才是标准啊 - 廖强 41:其实,你也可以不用nginx ,我理解的fast-cgi,是cgi的子集 - tiyee 42:嗯,nginx 代理,转化协议吧,http - |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|