主要为mysql集群以及redis集群
1 mysql集群:
mysql单主模式以及双主模式,使用gtid复制模式代替传统的binlog pos复制⽅式。在 findBestPrimaryServer 函数中,⾸先会检查所有节点中 show variables like
'rpl_semi_sync_master_enabled' 值为ON的节点,如果没有找到则使⽤默认节点 mysql statefulset的第⼆
个POD实例
由于是statefulset的pod是采⽤了默认的顺序启动⽅式,如果第⼆个实例还没起来,则将会使⽤第⼀个实
例即lastHeathHost这样的最后健康可连接的实例作为master。
因此集群第⼀次启动和全体POD宕机重启的情况下,mysql-0将作为master,如果mysql-0挂掉,则基于
lastHeathHost的机制采⽤mysql-2作为master。
如果mysql-0是master,在mysql-2 挂掉的情况下,mysql-0和mysql-1在执⾏复制,此时⼲掉mysql-0,
mysql-1将作为master,在mysql-2启动之后将会通过 findBestPrimaryServer 函数得出当前最佳master节
点是mysql-1。 写⼊到master-0上的⽇志将会在启动后捐赠给当前的master mysql-1
如果mysql-2和mysql-1由于某种奇怪的原因,导致都认为⾃⼰是master,那么他们将会在三秒后的下⼀
次 findBestPrimaryServer 中修正到底谁才是master。 
2 redis集群:
实现了传统的哨兵模式集群,以及cluster模式集群。cluster模式最少需要6个节点以保证集群的稳定性,只要有一个节点存活就可以拉起所有宕机节点,并且主从可以快速切换,不需要复杂的选举;
根据开源软件加上自己更改实现redis_cluster的proxy,实现单一入口调用redis并且在k8s的pod IP地址不断变换的时候可以无缝重新适配每个节点,不会影响redis网络调用。
点击空白处退出提示














评论