集群部署机器,缓解单台机器内存容量资源不足的方案详解

背景:刚来公司,小组长提出了新需求,把单台机器进行集群部署。因为现有的一台机器运行了很多服务,服务需要计算,从而占用大量CPU内存资源,让服务的请求响应变慢。客户需要我们提出一个方案解决这个问题。

公司提出的解决方案是:在主机上构建两个虚拟机,搭建一个3个机器的集群。在前后端搭建nginx服务,前端的请求通过nginx负载均衡(轮询策略),将请求分给3个机器执行,合理分配虚拟机的CPU和内存。在虚拟机中跑服务,使用多服务集群

提高服务的性能。

单机器的问题:跑一个转换服务,当请求转换1G的原型,会阻塞线程池里其他的转换任务,使其他任务不能分配足够的CPU和内存,从而导致其他的转换任务无法转换,而且其他的渲染服务同样因为没有足够内存而性能下降。

集群的解决:跑三个转换服务,当请求转换1G原型时,会阻塞当前机器,但是下一个请求会分发给其他两台机器,因为机器之间内存和CPU不受影响,所以第二个请求不会被阻塞。

 

目前需要验证两个假设:

1.集群之间可以共享文件路径

2.虚拟机调用主机共享路径下的.exe命令不会占用主机CPU内存资源,会占用虚拟机自身的资源。

 

验证两个假设的前提:

1.主机安装虚拟机,为虚拟机分配1/3的主机CPU内核 ,1/3的主机的内存容量。

2.主机和虚拟机安装win10系统。

 

进行验证阶段:

第一个假设:集群之间可以共享文件路径已满足。

主机有一个D:/盘,里面存放服务相关的资源,如原型、转换命令等。

虚拟机可以把主机的D:/盘映射到自己的D:/路径,可以访问,修改等操作。

验证实现方式:

  1. 主机确认开启虚拟化,如果没有,去BIOS系统中设置VM Machine Tech:enable,重启电脑。
  2. 主机的D:/开启可以网络共享,如果没有,右键-属性-共享-点击共享-确定。
  3. 虚拟机配置共享映射文件夹D:/,如果没有,关闭虚拟机-编辑虚拟机设置-选项-共享文件夹-选择总是启动按钮-添加D:/盘作为一个映射(可多选)-确定。
  4. 虚拟机配置映射网络驱动器,如果没有,开启虚拟机-我的电脑-右键-映射网络驱动器-驱动器选择D:/-浏览选择主机的网络映射D:/。当虚拟机分卷名称包含D盘,驱动器选项里不会出现D盘,应该修改分卷D盘为另外的盘符如E(我的电脑-管理-磁盘管理-右键D盘-更改驱动器号和路径-更改-分配以下驱动器选择E盘-确定),则驱动器选项会再次出现D盘。

 

第二个假设:虚拟机调用主机共享路径下的.exe命令不会占用主机CPU内存资源,会占用虚拟机自身的资源。

主机和虚拟机都部署且运行服务。配置nginx.conf的upstream包含主机和虚拟机,开启负载均衡。

主机和虚拟机在请求执行命令的时候,本机的任务管理器监测的CPU和内存会升高。执行完成后监测到CPU和内存会下降。其他机器打开任务管理器监测到CPU和内存不受到影响,没有一点变化。

验证实现方式:

  1. 主机安装nginx服务,配置nginx.conf,并重新加载nginx配置。
  2. 在主机和2台虚拟机中同时运行3个服务,并建立D盘的服务相关的文件和路径。
  3. 打开3台机器的服务运行日志和任务管理器,监测服务运行和CPU等资源。
  4. Postman打开,发送post请求给nginx,确定能收到命令,且从日志打印内容确认3台机器轮流收到请求,并可以正常执行。从任务管理器中确认一台机器执行转换命令时本机CPU和内存会上升,其他机器没有影响。从日志中看出执行一条转换命令消耗的时间和本机CPU内存资源充足与否,不影响其他机器执行命令。

 

具体的图文可以参考其他的文章:

如何在win10系统主机中安装win10系统虚拟机(附win10镜像和VMware Station 15 Pro安装包) - IT知识生产小店铺 - 博客园 (cnblogs.com)

如何让虚拟机共享主机路径一致的映射文件 - IT知识生产小店铺 - 博客园 (cnblogs.com)

转发-win10下cmd执行jar包中文乱码文件 - IT知识生产小店铺 - 博客园 (cnblogs.com)

Win10系统中常用的Nginx命令 - IT知识生产小店铺 - 博客园 (cnblogs.com)

 

posted @ 2023-07-20 09:54  IT知识生产小店铺  阅读(71)  评论(0编辑  收藏  举报