LAMP架构,如果用户分布在全世界各个国家,一个域名多台服务器如何布署和管理

LAMP架构,如果用户分布在全世界各个国家,一个域名多台服务器如何布署和管理?

1、一个域名如何解析到不同的服务器IP上?

2、多台服务器上就会有多套程序和数据库,如何有效管理和保持代码和数据库的同步?

3、如何让用户访问时自动判断,调用比较近的服务器来提供服务?

提示:希望能提供详细可操作的流程说明

阅读 3.9k
3 个回答
  1. DNS 分区域解析,根据不同地区国家解析到不同的服务器。随便看了一下腾讯云的解析服务,只要钱到位,还是可以按照国家、大洲和网络区别分的。
    或者直接解析到子域名,例如 xxx.com -> zh.xxx.com, 然后不同子域名对应不同地区服务器。
  2. 代码同步自己写脚本或者用工具,例如puppet,如果怕各台服务器代码不同会有问题,就只能先把一部分机器的访问关闭,然后更新这部分服务器,更新后开启这部分的访问同时关闭旧代码服务器访问,这样更新就不会有同一时间点代码不同的情况。
    数据库同步就比较复杂,涉及到跨机房同步问题,如果只有一个节点允许写入且不要求强一致性(最终一致性),那没啥问题,最多就是数据有一点延迟。如果要多节点写入就会比较麻烦,MySQL的组复制就号称可以多个节点同时写数据,不过代价就是一次事务的操作时间会比较高。
  3. 使用DNS分地区省份解析可以做到,也可以用CDN的动态加速网络自动判断最佳源站。
  1. DNS 解析都是可以支持分网络线路(例如电信、联通、教育网)、分国内国内、甚至分省的
    中国电信的 DNS 劫持、中国 GFW 的 DNS 投毒,了解一下(论 Google 是如何被国内屏蔽的)
  2. 代码的同步当然是:人为操作、自动化部署工具、平台,各种(Docker、TFS 了解一下)
    数据库的同步,根据对延迟的容忍度有很多方案,例如 MySQL 有主从复制,例如各种消息队列,例如用定时任务同步等等
  3. DNS 分区域解析是最优方案
    统一的一个入口,然后程序判断,再跳转也可以(例如 google.com 会跳转到 google.com.hk 之类的)

1、3 使用负载均衡,阿里云有 SLB 可以用,如果你想自己搭那么搜一下 LVS负载均衡 也有很多相关资料;
2、代码最好是上 CI/CD 工具,数据库的话具体情况具体决策,如果是全部服务器共用数据库,那么这个部署实施不是小问题,需要专门的 DBA 帮你们去做。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题