近期有人询问如何部署300台MySQL服务器,本人没有遇到过这种奇葩需求,以下是不负责任的纯臆想
这种量级的批量部署是需要使用批量部署工具来操作和管理的
如ansible或salt-stack,以及基于这些开发出来的运维管理平台
该方案的解决方法有很多,这里简单讲一讲克隆脚本流的方法:
1° 依据《CentOS6实验机模板搭建部署》和《编译安装MariaDB-10.1.30》
搭建部署一台克隆的模板机,编译安装MySQL,但不建库
2° 编写配置文件,内容包含IP、HOSTNAME、SERVERID
该配置文件就是批量搭建部署的MySQL服务器各自的IP和主机名以及MySQL实例信息
保证一个IP对应一个HOSTNAME且对应一个SERVERID
可以写多个SERVERID实现MySQL的多实例部署,这只是脚本层面的功能问题
3° 配置root用户自己免密登录自己的ssh通道公私钥
4° 编写自动执行的脚本,相应功能如下:
/etc/udev/rules.d/70-persistent-net.rules 修改调整
/etc/sysconfig/network-scripts/ifcfg-eth0 修改为dhcp
脚本自动重启机器,修改ifcfg-eth0配置,将dhcp改为自动获取的静态IP
读取第2步的配置文件,根据IP修改主机名,根据SERVERID修改my.cnf,建库
删除root用户下的ssh私钥,作为管理机器的主机保留私钥,做批量管理
该脚本只运行一次,运行后自动删除
5° 设置网络设备dhcp模式,并指定dhcp的地址池从100开始
6° 使用命令批量克隆模板机为MySQL服务器,启动,自动跑初始部署脚本
如何使用命令批量克隆模板机,需要根据自己使用的虚拟化平台寻找方法
但无论是KVM还是vSphere或其他虚拟化架构都有相应的功能
该方案可以在一个网段中部署150台左右服务器(因为dhcp从100开始)
设置第二个网段则可以完成300台机器的部署
7° 本方案使用ssh免密登录的方式由一台管理机器控制其余剩下的MySQL服务器
存在管理机单点、无资产管理、无操作记录、并发维护性不强等缺点
解决方案是使用ansible或salt-stack等批量部署工具,开发相应的管理平台解决
这种业务需求最正规的解决方案是聘用一个DEVOPS