微服务CI/CD实践(一)环境准备及虚拟机创建

微服务CI/CD实践系列:

微服务CI/CD实践(一)环境准备及虚拟机创建
微服务CI/CD实践(二)gitlabs部署
微服务CI/CD实践(三)nexus3部署
微服务CI/CD实践(四)数据库,redis,nacos等基础中间件部署
微服务CI/CD实践(五)Jenkins部署
微服务CI/CD实践(六)Server服务器环境初始化
微服务CI/CD实践(七)Jenkins + Dokcer 部署微服务后端项目
微服务CI/CD实践(八)Jenkins + Dokcer 部署微服务前端VUE项目
微服务CI/CD实践(九)Minio服务器部署及应用

文章目录

  • 一、环境准备
  • [二、 配置VMware ESXi](#二、 配置VMware ESXi)
  • [三、 创建虚拟机](#三、 创建虚拟机)
    • [3.1 虚拟机模板镜像上传](#3.1 虚拟机模板镜像上传)
    • [3.2 创建虚拟机](#3.2 创建虚拟机)
      • [3.2.1 配置虚拟机基本信息配置](#3.2.1 配置虚拟机基本信息配置)
      • [3.2.2 虚拟硬盘配置](#3.2.2 虚拟硬盘配置)
      • [3.2.3 虚拟机操作系统初始化](#3.2.3 虚拟机操作系统初始化)
      • [3.2.4 虚拟机网络配置](#3.2.4 虚拟机网络配置)
      • [3.2.5 虚拟机用户名密码配置](#3.2.5 虚拟机用户名密码配置)
      • [3.2.6 使用xshell远程连接检查安装是否成功](#3.2.6 使用xshell远程连接检查安装是否成功)
  • [四、 服务器规划](#四、 服务器规划)

文章主旨是在本地环境使用一台物理主机搭建CI/CD环境并部署一套前后端分离微服务项目。微服务项目采用前后端分离,前端主要是VUE架构,后端是Spring Cloud Alibaba 微服务架构。服务部署采用Jenkins + GitLab + Docker的CI/CD体系。基于Docker的CI/CD体系适用于服务节点规模不是特别大(通常是100以内)的场景 ,大规模服务节点部署建议使用k8s + server

一、环境准备

物理主机和虚拟机规划可以根据条件自行调整,操作系统因为对centos最熟悉,所有还是选择最熟悉Centos7作为虚拟服务器的镜像。

  • 物理主机:Lenovo ThinkSystem SR658 20 CPUs x Intel® Xeon® Silver 4210R CPU @ 2.40GHz
  • 虚化软件:ESXi-7.0U3n-21930508-standard (VMware, Inc.)
  • 虚拟镜像: CentOS-7-x86_64-DVD-2009.iso

二、 配置VMware ESXi

创建虚拟机使用 VMware ESXi 进行虚拟机的管理,选择 VMware ESXi是因为购买物理主机已经内置授权的商用 VMware ESXi ,如果没有安装虚化软件可以选择免费开源的KVM虚化软件。

使用外部显示器、键盘、鼠标等外设连接物理主机,开机根据指引初始化 VMware ESXi ,初始化完成重启服务器,进入ESXi 7.0 正式页面

按【F2】键输入root用户密码进入主机配置模式

首次登录后,建议更改默认密码

在主机模式,选择"IPv4 Configuration"对IP进行配置,IP4配置根据实际的局域网情况对IP地址、子网掩码、网关路由、DNS解析进行配置。

完成主机配置便可以使用浏览器远程访问ESXi 7.0 UI 。

三、 创建虚拟机

VMware ESXi 提供桌面管理UI 和 ESXi Shell继续虚拟机的维护管理,其中ESXi Shell默认是关闭的,如果有远程连接物理主机的需求,需要在物理主机上进行设置。

ESXi UI 通常是 https://{物理主机的IP}/ui/#/host,使用上一步骤设置的用户名和密码登录后进入ESXi 管理页面,ESXi UI 提供了主机管理、虚拟机管理、存储、网络等功能。

3.1 虚拟机模板镜像上传

直接下载Centos官方镜像速度缓慢,我们使用阿里云国内镜像源进行下载:CentOS-7-x86_64-DVD-2009.iso

下载完成后 点击ESXi UI 功能导航>存储>datastore1>数据存储浏览器>上载 进行模板镜像上传

上载成功后,可以在存储浏览器中查看相关文件信息

3.2 创建虚拟机

虚拟机配置说明参考官方文档

step1 点击左侧菜单导航>虚拟机管理>创建虚拟机>创建新的虚拟机

3.2.1 配置虚拟机基本信息配置

step2 配置虚拟机名称和客户机操作系统,这里选择linux centos7 64位操作系统,进入下一步

step3 选择存储,这里没有创建新的存储,直接下一步

3.2.2 虚拟硬盘配置

step4 自定义设置-cpu配置

我们计划配置一个8个cpu的虚拟机,为了获得最佳性能和资源利用效率,需要考虑以下几个方面:

  1. 物理 CPU 架构:
    • 物理主机有两个 CPU 插槽,每个插槽有 10 个内核,共 20 个物理内核。
    • 每个物理内核可能支持超线程技术,这意味着每个物理内核可以模拟两个逻辑处理器,因此总共可能有 40 个逻辑 CPU。
  2. 虚拟机 CPU 配置:
    为了优化性能,应该考虑以下几点:
    • 分配的 CPU 数量:选择合适的 CPU 数量以匹配虚拟机的应用需求。
    • CPU 核心数与线程数:决定每个虚拟 CPU 是否对应一个物理核心,还是多个虚拟 CPU 共享一个物理核心。
    • NUMA 结构:考虑虚拟机的 NUMA 结构与物理主机的 NUMA 结构相匹配。
  3. 最优配置:
    核心数:建议将虚拟机的 CPU 核心数设置为 8,这样每个虚拟 CPU 都可以对应到一个物理核心。
    NUMA 结构: 如果虚拟机的应用程序能够从 NUMA 优化中受益,可以考虑将虚拟机配置为 NUMA 意识型,比如将虚拟机配置为两个 NUMA 节点,每个节点有 4 个核心。NUMA 结构主旨是提升多核心处理内存性能,降低内存访问延迟、提升内存带宽以及内存资源分配优化,NUMA 架构非常适合数据库服务器和高性能计算集群,因为它可以提供更高的内存带宽和更低的延迟。但是NUMA 结构同样会带来跨节点访问延迟、内存一致性、调度复杂度、编程复杂度、资源竞争等问题。因此,在所安装的应用程序没有明确指名对NUMA进行支撑和优化,建议避免使用跨核心配置。

如下图,是8内核虚拟机的参考配置

step5 自定义设置-存储配置

存储配置根据虚拟机实际情况进行合理配置

step5 自定义设置-驱动配置

选择数据存储ISO文件

选择步骤1.2.1 上载的虚拟机模板镜像

其他配置选择默认,直接进入下一步,点击完成。

3.2.3 虚拟机操作系统初始化

step6 开机->进行虚拟机初始页面,选择Install Centos7

step7 等待系统自检完成进入Centos7 Install 引导页面,选择语言>中文>简体中心,继续下一步

step8 选择软件安装>

根据需求选择合适的基本环境和选择环境的附加选项,如果没有特殊需求,建议选择基础设施服务器,他模式下会安装网络服务器必备的系统软件。

3.2.4 虚拟机网络配置

step9 选择网络配置

进入网络配置页面,配置主机名并点击配置进入网络配置

在网络配置页面选择IPV4设置->手动设置

点击add,新增IPV4配置,点击保存完成配置

返回网络配置页面,点击启用按钮会显示ipv4设置信息,并点击完成

3.2.5 虚拟机用户名密码配置

完成上述配置后点击完成,进入密码设置页面,配置虚拟机root账户和用户

step10 配置虚拟机root账户、普通账户

设置完用户名密码后自动进行软件安装,等待系统完成安装即可

初始完成后,点击重启

重启完成,查看虚拟机基本信息

3.2.6 使用xshell远程连接检查安装是否成功

四、 服务器规划

文章的示例基于spring cloud alibaba 微服务框架, 后端工程基座采用jdk8 + Spring Boot 2.2.9.RELEASE + spring-cloud Hoxton.SR7 + spring-cloud-alibaba 2.2.1.RELEASE + postgresql + redis + minio,前端采用VUE框架。按照上述前后端技术栈完成微服务前后端服务的CI/CD预计需要6台虚拟机。

虚拟服务器具体规划如下:

  • gitlab-server 8C16G 500GB硬盘
  • db-server 8C16G 500GB硬盘 包含postgresql 和 redis
  • jenkins-server 4C8G 200GB硬盘
  • nacos-server/nexus3 4C8G 200GB硬盘
  • minio-server 4C8G 200GB硬盘
  • docker-server 16c 16G 200GB硬盘
    虚拟服务器需要分配固定IP地址。

本文服务器规划仅适用于开发环境,对于正式环境应该考虑服务器和应用服务的高可用性。

相关推荐
远游客07137 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
kaixin_learn_qt_ing8 小时前
Bazel CI
ci/cd
Java程序之猿9 小时前
微服务分布式(一、项目初始化)
分布式·微服务·架构
LIKEYYLL9 小时前
GNU Octave:特性、使用案例、工具箱、环境与界面
服务器·gnu
云云32110 小时前
搭建云手机平台的技术要求?
服务器·线性代数·安全·智能手机·矩阵
云云32110 小时前
云手机有哪些用途?云手机选择推荐
服务器·线性代数·安全·智能手机·矩阵
CircleMouse10 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
Yvemil711 小时前
《开启微服务之旅:Spring Boot Web开发举例》(一)
前端·spring boot·微服务
木子Linux11 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
不惑_11 小时前
小白入门 · 腾讯云轻量服务器部署 Hadoop 3.3.6
服务器·hadoop·腾讯云