微服务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
- 三、 创建虚拟机
- 3.1 虚拟机模板镜像上传
- 3.2 创建虚拟机
- 3.2.1 配置虚拟机基本信息配置
- 3.2.2 虚拟硬盘配置
- 3.2.3 虚拟机操作系统初始化
- 3.2.4 虚拟机网络配置
- 3.2.5 虚拟机用户名密码配置
- 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的虚拟机,为了获得最佳性能和资源利用效率,需要考虑以下几个方面:
- 物理 CPU 架构:
- 物理主机有两个 CPU 插槽,每个插槽有 10 个内核,共 20 个物理内核。
- 每个物理内核可能支持超线程技术,这意味着每个物理内核可以模拟两个逻辑处理器,因此总共可能有 40 个逻辑 CPU。
- 虚拟机 CPU 配置:
为了优化性能,应该考虑以下几点:- 分配的 CPU 数量:选择合适的 CPU 数量以匹配虚拟机的应用需求。
- CPU 核心数与线程数:决定每个虚拟 CPU 是否对应一个物理核心,还是多个虚拟 CPU 共享一个物理核心。
- NUMA 结构:考虑虚拟机的 NUMA 结构与物理主机的 NUMA 结构相匹配。
- 最优配置:
核心数:建议将虚拟机的 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地址。
本文服务器规划仅适用于开发环境,对于正式环境应该考虑服务器和应用服务的高可用性。
相关文章:
微服务CI/CD实践(一)环境准备及虚拟机创建
微服务CI/CD实践系列: 微服务CI/CD实践(一)环境准备及虚拟机创建 微服务CI/CD实践(二)gitlabs部署 微服务CI/CD实践(三)nexus3部署 微服务CI/CD实践(四)数据库,redis,n…...
【SpringBoot】优化慢启动应用的用户体验
通过深入分析SpringBoot中WebServer的启动流程,插入自定义的Loading页面展示逻辑,优化软件使用时的用户体验。 背景 Java本身的特点,再加上开发人员能力差,软件开发工程化程度低等等问题,经过一段时间的迭代之后&…...
String str=“i“ 与 String str=new String (“i“) 一样吗?
String str"i" 与 String strnew String ("i") String str"i" 这种形式声明了一个 String 对象,其中 "i" 字符串字面量直接赋值给 str。在 Java 中,字符串字面量会自动放入字符串常量池中,这是一个…...
【数据结构】二叉树链式结构的实现
前置声明:在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。由于现在大家对二叉树结构掌握还不够深入,为了降低大家学习成本,此处手动快速创建一棵简单的二叉树,快速进入二叉…...
如何有效找到目标客户群体?
在激烈的市场竞争中,找到并锁定目标客户群体是企业成功的关键。以下是几种有效的策略,帮助您精准定位并吸引目标客户。 1. 明确市场定位与客户画像 首先,企业需要明确市场定位,并绘制详细的客户画像,包括年龄、性别、…...
机器学习-混淆矩阵
文章目录 一、混淆矩阵1.混淆矩阵简介2.混淆矩阵图列 二、混淆矩阵指标1. 准确率(Accuracy)2. 精确率(Precision)3. 召回率(Recall)4. F1分数(F1 Score) 三、总结 一、混淆矩阵 1.混…...
数据结构----栈
一丶概念 只能在一端进行插入和删除操作的线性表(又称为堆栈),进行插入和删除操作的一端称为栈顶,另一端称为栈底 二丶特点 先进后出 FILO first in last out 后进先出 LIFO last in first out 三丶顺序栈 逻辑结构&…...
STL六大组件
STL(Standard Template Library,标准模板库)是C标准库的一部分,提供了丰富且高效的数据结构和算法。STL主要由6大组件构成,分别是容器、算法、迭代器、适配器、仿函数和空间配置器。 容器(Containers&#…...
【机器学习】CNN的数学基础
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 CNN的数学基础1. 引言2. 卷积运算2.1 连续卷积2.2 离散卷积2.3 互相关 3. 激活函…...
最小路径和[中等]
优质博文:IT-BLOG-CN 一、题目 给定一个包含非负整数的m x n网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入:grid [[…...
【题库】——数组 小鱼比可爱
#include<bits/stdc.h> using namespace std; int main() {int n,m,i;cin>>n;int arr[n]; for(i0;i<n;i) {int count 0;cin>>arr[i];for(mi;m>0;m--){if(arr[i]>arr[m])count;} cout<<count<<" "; } return 0; }...
基于飞腾平台的Hbase的安装配置
【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适…...
【springboot】springboot接口参数全局解密,解决request内容修改后如何重新设置回去的问题
文章目录 核心思路spring&servelt基础核心接口类核心代码 body解密核心原理讲解get解密核心原理讲解get query请求讲解get pathVariables请求讲解 总结 本文不仅介绍了body内容修改后如何传递,也介绍了get请求 在修改内容后如何继续传递。 【原创作者 csdn: 孟秋…...
yml基本语法
YAML(YAML Ain’t Markup Language)是一种简洁且易读的数据序列化格式,常用于配置文件。Spring Boot 中的 application.yml 文件使用 YAML 来配置应用程序的属性。 YAML 基本语法 1. 键值对 基本的键值对表示形式为:key: value…...
橙色简洁大气体育直播自适应模板赛事直播门户自适应网站源码
源码名称:酷黑简洁大气体育直播自适应模板赛事直播门户网站 源码开发环境:帝国cms 7.5 安装环境:phpmysql 带采集,可以挂着电脑上自动采集发布,无需人工操作! 橙色简洁大气体育直播自适应模板赛事直播门户…...
【启明智显技术分享】工业级HMI芯片Model系列GUI合成到项目中的指南
在工业自动化、智能终端HMI、车载仪表盘等领域,高性能的HMI(人机界面)芯片是不可或缺的核心组件。启明智显推出的Model系列(如Model3C、Model3、Model4)HMI芯片,以其卓越的性能和广泛的应用领域,…...
开源服务器运维工具1Panel
1Panel是杭州飞致云信息科技有限公司推出的一款现代化、开源的Linux服务器运维管理面板。 以下是对1Panel的详细介绍: 一、基本信息 产品名称:1Panel所属公司:杭州飞致云信息科技有限公司编写语言:Golang上线时间:20…...
新版本源2.0大模型发布:Yuan2-2B-July-hf
引言 近日,浪潮信息的新一代基础语言大模型源2.0 迎来了重要更新。浪潮信息正式发布了 Yuan2-2B-July-hf 模型,标志着源2.0系列模型在性能和功能上的进一步提升。这一版本将为开发者和研究人员提供更强大的工具,以满足各种语言处理需求。…...
用python生成GIF动图—用于博客插图或封面等
生成GIF动图🚀 由于目前自己是在做大模型,还有一些树莓派硬件之类的东西,一是大模型的流式输出的例子需要用到GIF,二是做单片机的时候例如一些灯的闪烁和变化需要用到,所以之前也是一直有这个打算所以就记录一下这个生…...
[RCTF2019]draw
下载是一个文本文档,百度AI cs pu lt 90 fd 500 rt 90 pd fd 100 rt 90 repeat 18[fd 5 rt 10] lt 135 fd 50 lt 135 pu bk 100 pd setcolor pick [ red orange yellow green blue violet ] repeat 18[fd 5 rt 10] rt 90 fd 60 rt 90 bk 30 rt 90 fd 60 pu lt 90 f…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...
手动给中文分词和 直接用神经网络RNN做有什么区别
手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动)…...
二叉树-144.二叉树的前序遍历-力扣(LeetCode)
一、题目解析 对于递归方法的前序遍历十分简单,但对于一位合格的程序猿而言,需要掌握将递归转化为非递归的能力,毕竟递归调用的时候会调用大量的栈帧,存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧,而非…...
ABB馈线保护 REJ601 BD446NN1XG
配电网基本量程数字继电器 REJ601是一种专用馈线保护继电器,用于保护一次和二次配电网络中的公用事业和工业电力系统。该继电器在一个单元中提供了保护和监控功能的优化组合,具有同类产品中最佳的性能和可用性。 REJ601是一种专用馈线保护继电器…...
