我是服务器管理和网络设计的新手。要求如下:
我有三台专用服务器。这三台服务器需要完成以下任务:
- 有一个主数据库
- 有一个从属数据库
- 有一个生产网络服务器
- 有一种方法可以包含开发阶梯:开发=>测试=>生产
- 通过 SVN 进行版本控制(也可以使用 git)
我将使用带有 apache、mysql、php 的 RHEL。
给定三台专用服务器我该如何实现这一点?
编辑:
我是否应该拥有更多服务器?在做出决定之前,我应该满足哪些先决条件。
答案1
你听起来像是力不从心——这是一个非常广泛的问题,答案是沉重取决于您的环境。
如果您热爱您的公司和数据,请在继续之前寻求 ServerFault 以外的专业帮助。
如果您选择不听从我上面的警告,这里有一些非常基本的提示(不是完整的解决方案——为您提供完整的解决方案就像要求将一公斤纯系统管理员知识塞进您的脑袋中)。请记住,根据我下面概述的内容,负载和使用情况将决定您可以摆脱什么:
您描述的架构实际上无法在三个物理机上实现,除非您对其中一些物理机进行虚拟化 - 无法正确分离开发/阶段/生产环境。您有两个基本选项:
- 虚拟化所有 3 台机器(一台是开发堆栈,一台是阶段/测试堆栈,一台是生产堆栈)
- 虚拟化两台机器(数据库是专用的,一个盒子是生产(从属数据库,Web),一个盒子是虚拟化开发堆栈)。
理想情况下,您的版本控制服务器应与其他所有东西分开(并进行严格备份)。如果您采用虚拟路线,它可以是 VM。
您可能希望包括一项计划,让一台机器进行备份(运行 bacula)或一项计划,用于异地 rsync。
目前,您可能希望从平面网络拓扑开始(所有内容都在一个网络/VLAN 上)。最终,您可能需要更复杂的东西(例如,将数据库服务器和版本控制放入单独的、访问受限的子网中)。这将需要一些防火墙魔法。
答案2
您的“开发阶梯”应该远离生产网络,无论是主网络还是从网络。而且 SVN 也应该离生产网络很远 —— 在某种程度上,它是一种灾难恢复,特别是当您使用它进行部署时。