组复制旨在部署在服务器实例彼此非常接近的集群环境中,并且受网络延迟和网络带宽的影响。
由于之前使用过PXC,,并使其更加可用。
在 000webhost.com项目和 hAPI(Hostinger API)中,我们使用前面提到的独特解决方案,该解决方案使用 Layer3 协议选择主节点。
我们最好的朋友之一是 BGP 和 BGP 协议,它已经足够老了,所以我们经常使用它。此实现还使用 BGP 作为底层协议,并有助于指向真正的主节点。为了运行 BGP 协议,我们使用 ExaBGP 服务并从两个主节点将 VIP 地址宣布为任播。
您应该会问但是您如何确保
MySQL 查询会转到同一个实例,而不是同时命中两个实例?我们使用 Zookeeper 的临时节点 来获取互斥锁。
Zookeeper 就像是 BGP 发言人和 MySQL 客户端之间的断路器。如果获得了锁,我们会从主节点宣布 VIP,应用程序会将查询发送到此路径。如果释放了锁,另一个节点可以接管它并宣布 VIP,因此应用程序将毫不费力地发送查询。
MySQL 设置 Hostinger
Requires 第二个问题来了:要满足什么条件才能停止宣布 VIP?这可以根据用例以不同的方式实现,但如果 MySQL 进程使用ExaBGP 单元文件中的systemd 停止,我们会释放锁:
此外,无论是否指定 After=,只要有一个单元明确停止,该单元也会停止。
使用 systemd,我们可以创建一个良好的依赖关系树,确保所有依赖关系都得 土耳其手机号码格式 到满足。停止、终止甚至重新启动 MySQL 都会使 systemd 停止 ExaBGP 进程并撤回 VIP 公告。最终结果是选择了新的主服务器。当 Hostinger还是一家小公司时,市场上只有Nagios、Cacti和Ganglia作为开源监控工具。现在它们不那么出名了,但 Nagios 和 Cacti 仍在开发中。
即使没有自动化工具
Bash + Perl也能完成工作。如果你想扩大团队和你自己的规模,自动化是不可忽视的。没有自动化意味着更多的手工工作。
我们一开始有大约 150 台物理服务器。相比之下,我们目前有大约 2000 台服务器,包括内部用途的虚拟机和物理机箱。
所有上述工具(Nagios、Cacti 和 Ganglia)大多使用 SNMP 协议,在我看来,这很糟糕。
对于网络设备,SNMP 仍然可以在全球 当你参加这些活动时 范围内使用,但是目前,随着白盒交换机的出现,它已变得不再必要。
相反,运行_node_exporter_或交换机内的任何其他导出器,并以人类可读的格式公开您需要的任何内容。
我们使用 CumulusOS,在我们的案例中它主要是 x86 架构,因此运 沙特阿拉伯电话号码 行任何类型的 Linux 都绝对没有问题。
2015 年,当我们开始自动化所有可以自动化我们知道在关键情 的东西时,我们引入了Prometheus 生态系统。一开始,我们有一个监控箱,里面运行着 Alertmanager、Pushgateway、Grafana、Graylog 和 rsyslogd。