华为云Stack的学习(三)
四、华为云Stack公共组件
1.华为云Stack公共负载均衡方案介绍

1.1 LVS原理
LVS是四层负载均衡,建立在OSI模型的传输层之上,所以效率非常高。
LVS有两种转发模式:
- NAT模式的转发主要通过修改IP地址(位于OSI模型的第三层网络层)实现转发。
- DR模式的转发主要通过修改MAC地址(位于OSI模型的第二层数据链路层)实现转发。
云服务框架中使用的DR模式。

1.2 Nginx原理
Nginx是七层负载均衡,建立在OSI模型的应用层之上,基于访问URL进行转发,转发是可以修改URL等数据。
Nginx的模块从功能上分为如下三类:
- **Handlers(处理器模块):**此类模块直接处理请求,并进行输出内容和修改headers信息等操作。Handlers处理器模块一般只能有一个。
- **Filters(过滤器模块):**此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出。
- **Proxies(代理类模块):**此类模块是Nginx和HTTP Upstream之类的模块,这些模块主要与后端一些服务比如FastCGI等进行交互,实现服务代理和负载均衡等功能。

1.3 HAProxy原理
HAProxy支持四层和七层负载均衡,云服务框架中使用的是四层转发,基于访问IP+端口号进行转发,转发时可以修改URL等数据。


1.4 LVS+Nginx+HAProxy部署模式
LVS、Nginx、HAProxy单独两个节点部署,LVS和HAProxy主备部署、Nginx集群部署。
LVS+Nginx+HAProxy采用HCSD一键部署方式,无需人工干预,升级视同DMK升级。



2.华为云Stack域名解析方案介绍
域名解析服务器分为管理侧(OM)和租户侧(Tenant)
- **DNS-OM:**作为云服务的本地DNS服务器,为云服务提供域名解析服务,并代理公网域名的解析。
- **DNS-Tenant:**作为租户虚拟机的本地DNS服务器,为租户虚拟机提供域名解析,同时作为DNS-OM的公网出口,代理解析公网域名。
**管理虚拟机域名解析:**管理虚拟机通过DNS Resolver向DNS-OM发送域名解析请求,若DNS-OM存在相关记录则直接返回结果,否则转发到DNS-Tenant,若DNS-Tenant仍无法解析则转发到外部DNS解析。
**租户虚拟机域名解析:**租户虚拟机通过DNS Resolver向DNS-Tenant发送域名解析请求,如果DNS-Tenant存在相关记录则直接返回解析结果,否则转发到外部DNS解析。

2.1 DNS组件部署模式
公共组件层的DNS包括部署在管理网络平面的DNS-OM和部署在租户网络平面的DNS-Tenant。DNS-OM对应的虚拟机节点为OM-SRV-01和OM-SRV-02,主备部署。DNS-Tenant对应的虚拟机节点为TDNS-TNTP-01和TDNS-TNTP-02,主备部署。
DNS组件采用HCSD一键部署方式,无需人工干预,可在Service OM里查看虚拟机的详细信息。


3.华为云Stack时钟同步方案介绍
3.1 有外部NTP
资源池层FusionSphere OpenStack的NTP服务从外部NTP服务器获取时钟源。
资源池层Service OM、华为分布式块存储(包括FSM和FSA)、ManageOne和公共组件层的OM_NTP从FusionSphere OpenStack的NTP服务获取时钟源。
公共组件层的DMZ_NTP从FusionSphere OpenStack的NTP服务获取时钟源。
云服务、公共组件、管理域ManangeOne等组件所在管理虚拟机从公共组件层的OM_NTP获取时钟源。
租户虚拟机可以根据实际需要,从公共组件层DMZ_NTP获取时钟源,或者从外部NTP服务器获取时钟源。

3.2 无外部NTP
资源池层中的Service OM、华为分布式块存储、ManageOne和公共组件层的OM_NTP从FusionSphere OpenStack的NTP服务获取时钟源。
公共组织层的DMZ_NTP从FusionSphere OpenStack的NTP服务获取时钟源。
云服务、公共组件、管理域ManageOne等组件所在管理虚拟机从公共组件层的OM_NTP获取时钟源。
租户虚拟机可以根据实际需要,从公共组件层的DMZ_NTP获取时钟源。

3.3 NTP组件部署模式
公共组件层的NTP包括部署在管理网络平面的OM_NTP和部署在租户网络平面的DMZ_NTP。OM_NTP对应的虚拟机节点为OM-SRV-01和OM-SRV-02,主备部署。DMZ_NTP对应的虚拟机节点为TDNS-TNTP-01和TDNS-TNTP-02,主备部署。
- OM_NTP对应管理侧,为管理虚拟机提供时钟同步服务。
- DMZ_NTP对应租户侧,为租户虚拟机提供时钟同步服务,同时DMZ_NTP也作为OM_NTP的上级时钟源,从外部时钟源获取时间。


4.DMK介绍
DMK(Deploy Management Kit)提供统一的部署与安装配置平台,实现云服务的安装部署与补丁升级功能。承载IaaS服务、组件和部分运维工具的安装部署功能,降低安装工时。DMK本身也是基于Ansible作为自动化执行引擎来进行相关的自动化运维能力,包括服务/应用部署、升级、回滚、卸载、节点管理、配置管理等。

通常情况下不需要管理员对DMK进行修改,容易导致配置问题,管理员通常通过HCSD,进行修改和部署,HCSD向DMK发送请求,写自动化脚本让DMK实现相应的请求。
4.1 DMK系统逻辑架构

DMK基于开源的Ansible作为执行引擎。
4.2 DMK示例
- 部署向导-任务创建

- 配置管理

- SSH账号管理

4.3 DMK部署模式
DMK与其他云服务合并部署在一个节点内,采用主备部署在OM-SVR-1和OM-SVR02节点;采用HCSD一键部署方式,无需人工干预。
MDK提供Portal界面供用户进行登录,DMK一般不建议用户进行登录,防止误操作,导致华为云Stack组件配置问题。

5.API网关介绍
API网关(PAI Gateway)配套行业解决方案,提供高性能、高可用性、高安全的API托管服务,是一款涵盖PAI运行、管理、分析、安全为一体的端到端API产品,帮助客户实现后台服务、数据与上层应用的解耦,高效拓展业务,聚合提供后台服务和应用的合作伙伴,构建开发者生态。
API网关(PAI Gateway)是面向华为云Stack内部服务的服务。它可以让内部服务注册API,强PAI开放给租户使用。负责底座和高阶场景的注册、转发、负载均衡等能力。


5.1 PAI网关架构


5.2 API网关部署模式
API网关包含2台主主模式部署的管理面API调用时的反向代理和负载均衡虚拟机APIGWLB和3台集群部署的相关组件虚拟机APIGWZK。采用HCSD一键部署方式,无需人工干预。
APIGWZK-03节点不部署asgard。


6.组合API介绍
组合API(APICOM)为弹性云服务器、云硬盘和云硬盘备份等服务提供后台服务,可以理解为console的服务端。组合API作为公共服务平台,支持云服务的请求、响应、子任务持久化。目前已经托管的服务有:弹性云服务器、云硬盘、云硬盘备份、弹性负载均衡、镜像、VPC(创建EIP)、裸金属服务器。
- 多个业务的API统一由组合API提供。
- 云服务申请由Console到API-GW再到组合API,其中console和组合API都要到IAM上做鉴权。
- 组合API可以通过API-GW对外提供服务。

6.1 组合API在华为云Stack方案的位置

6.2 组合API部署模式
组合API(APICOM)以主备模式部署在CPT-SVR-01、CPT-SVR-02两台管理虚拟机上。采用HCSD一键部署方式,无需人工干预,组件版本单独升级,与其他组件一样,通过DMK进行升级。
可通过登录Service OM界面,查看CPTSVR-01、CPT-SVR-02两台管理虚拟机的详细信息。


7.CCS介绍
CCS(Cloud Configuration Service)在华为云Stack方案中,对云区域、可用分区、云主机规格、云磁盘类型以及外部网络提供标签管理功能,并为ECS、EVS、VPC等云服务提供相应标签查询功能。

CCS分为三个组件:
- CCS Console是基于Service OM框架开发的CCS前端,提供给管理员可视化的CCS打标签功能。
- CCS API提供CCS打标签功能的业务逻辑。
- CCS Client提供给管理员命令行级的CCS打标签功能。
7.1 CCS业务流程
①CCS Console/Client下发标签增删改查管理业务。
②api层是基于WSGI封装的Restful接口。api层街道请求后将业务下发到hybrid层,hybrid层实现了业务功能的逻辑。
③如果标签类型为云区域、可用分区、云主机规格以及云磁盘类型,则将标签记录入数据库或者从数据库查询。
④如果标签类型为外部网络,则hybrid层会通过manager转发到driver层,driver层调用OpenStack的neutron接口,将标签同步到neutron的外部网络tags属性中,同时记录进数据库。

7.2 CCS外部依赖

- DNS负责CCS域名映射到CCS浮动IP
- HAProxy负责CCS浮动IP映射
- OpsMonitor负责监控CCS状态
- ELK负责收集CCS日志
- Silvan中注册CCS域名,供对外查询
- ManageOne服务中心通过CCS完成可用分区同步
- CCS和OpenStack各服务交互,提供CCS对外业务支撑
- ECS创建租户虚拟机时查询CCS资源标签接口
- EVS查询指定AZ下的卷类型标签
- VPC查询指定AZ下的网络标签
7.3 CCS部署模式
CCS分别与其他云服务合并部署在一个节点内,采用主备模式部署在OM-SVR-01和OM-SVR-02节点;CCS所使用的GaussDB部署在PUB-DB-01和PUB-DB-02管理虚拟机;采用HCSD一键部署方式,无需人工干预。


8.SDR介绍
SDR作为公共组件,对云服务提供的资源进行准确计量,生成离线话单文件,共计费系统采集完成计费。
SDR具备数据采集能力、对单上传能力,各服务提供话单处理逻辑,共同完成离线话单生成。

计量话单由Controller和Agent两个组件组成,其中Controller负责定时触发话单生成任务;Agent从各数据源采集计量数据,处理完成后生成话单文件,最终将话单文件上传到SFTP服务器。
8.1 SDR业务流程
①Controller定时触发任务并记录入库。
②Controller向Agent下发话单生成任务。
③Agent去各数据源采集数据。
④采集数据完成后生成话单并上传到sftp。
话单上传目录为/opt/meterfiles/uploads,每个服务一个单独的文件夹存储话单。

8.2 SDR外部依赖

8.3 SDR部署模式
计量话单的controller和agent均为无状态节点,采用2+2集群模式部署;Agent和controller使用haproxy做负载均衡;采用HCSD意见部署方式,无需人工干预。
Agent和controller部署在PUB-SVR-01和PUB-SVR-02节点;Controller部署在PUB-SVR-03和PUB-SVR-04节点。SDR所使用的GaussDB部署在PUB-DB-01和PUB-DB-02管理虚拟机。


9.任务中心介绍
任务中心是任务的统一管理界面,支持ManageOne各特性将任务注册或托管进来,运维人员可通过任务中心统一管理注册或拖管至任务中心的任务。同时,任务中心默认支持管理周期资源采集任务,并支持修改资源采集任务调度周期,用户可根据实际情况配置资源采集任务调度周期并管理资源采集任务。

9.1 任务中心业务流程
单个操作基本流程:
①UI下发创建请求到服务。
②接口生成Jobld后,调用任务中心添加接口,将新增对象加入任务中心数据库。
③Job调度过程中拿到真实对象后,调用任务中心更新接口,更新对应对象状态为“creating”。
④若创建成功,调用任务中心删除接口,删除临时对象。
⑤若创建失败,调用任务中心更新接口,更新对象状态为“fauled”。

9.2 任务中心服务外部依赖

9.3 任务中心部署模式
任务中心Service阶段为无状态节点,采用2节点集群模式部署;双节点对外使用HAProxy做负载均衡;采用HCSD一键部署方式,无需人工干预。
TaskCenter与其他云服务合并部署在一个节点内;部署在PUB-SVR-01和PUB-SVR-02管理虚拟机,TaskCenter所使用的GaussDB部署在PUB-DB-01和PUB-DB-02管理虚拟机。


10.GaussDB组件介绍
GaussDB是华为自主研发的关系型磁盘数据库管理系统,具备通用的数据库管理功能。基于PostgreSQL 9.2开发,在兼容性、性能、安全、可用性和可维护性上做了增强。
适用于如下典型应用:
- 主要以插入、删除和查询为主,更新的频率较低。
- 对数据完整性要求比较高的业务型应用。
- 数据级别在500GB以下。
华为云Stack中采用了GaussDB作为关系型数据库载体,保存产品组件相关数据。比如OpenStack各个组件的元数据、运营面和运维面Portal数据等等。

10.1 GaussDB部署架构-OMMHA

GaussDB-OMMHA集群:
- 单AZ部署,主备两个DB节点。
- 业务通过浮动IP访问主节点。
- 主节点故障可自动将备节点提升为主,并将浮动IP绑定到新的主节点。
特点:
- 主备结构,简单可靠
- 对外提供VIP访问
- 主库物理复制到备库,延时小。
缺点:
- 节点间网络隔离情况下有脑裂风险
10.2 GaussDB部署架构-DBMHA

GaussDB-DBMHA集群(SDK):
- 跨AZ部署,一主两备3个DB节点,主AZ两个节点,备AZ一个节点,主用节点障碍则优先切换到同AZ备节点,主AZ故障则切到备AZ备节点。
- 业务节点通过SDK使用浮动IP访问主节点或者本地IP访问主备节点(读写分离)。
- 一套GaussDB-DBMHA高可用可以同时托管多套(最大50)GaussDB容灾集群。
- HA-ETCD不可用不影响其托管的GaussDB集群。
特点:
- 统一的HA架构,数据库三节点(一主两备),分布式仲裁(ETCD),防脑裂(双主)
- 支持跨AZ和跨Region部署,提供容灾能力
- 对外提供VIP或者SDK两种访问模式
缺点:
- 资源占用较多(需要提供仲裁ETCD和SDK ETCD)
10.3 GaussDB部署模式
在华为云Stack中,存在公共的GaussDB和产品、云服务专属的GaussDB;采用HCSD一键部署方式,无需人工干预。
以OMMHA部署架构的GaussDB为例:
- 公共GaussDB部署在PUB-DB-01、PUB-DB-02管理虚拟机上,并主备运行在控制节点。
- ManageOne、CC云连接、AS弹性伸缩等有自用的GaussDB不和其他组件共享,都是主备运行在控制节点。


相关文章:
华为云Stack的学习(三)
四、华为云Stack公共组件 1.华为云Stack公共负载均衡方案介绍 1.1 LVS原理 LVS是四层负载均衡,建立在OSI模型的传输层之上,所以效率非常高。 LVS有两种转发模式: NAT模式的转发主要通过修改IP地址(位于OSI模型的第三层网络层&…...
大数据平台三大优势详解-行云管家
大数据平台三大优势详解 1、轻松进行数据共享 企业在管理以及快速发展过程中,有着越来越多的数据需要进行管理,如果单独管理则工作量巨大,且难免出现问题,同时共享难。因此需要大数据平台对数据进行统一管理,以及轻松…...
智慧景区方案:AI与视频融合技术如何助力景区监管智能化升级?
随着经济的发展,人们对生活的需求也不再局限于温饱层面,越来越多的人们开始追求文化、艺术的高层次需求,旅游也逐渐成为人们日常放松的一种方式。由于我国人口多、易扎堆等特点,景区的运营监管方式也亟需改革。TSINGSEE青犀智能分…...
HTML基础--Form表单--内联元素
目录 Form表单 表单元素 创建表单 () 文本输入 () 密码输入 单选按钮 () 和 复选框 () 下拉列表 () 和 选项 ()提交按钮 () 重置按钮 () 块元素与行内元素(内联元素) Form表单 HTML中的表单(<form>)是一个重要的元…...
【月度刷题计划同款】常规状压 DP 启发式搜索
题目描述 这是 LeetCode 上的 「1879. 两个数组最小的异或值之和」 ,难度为 「困难」。 Tag : 「状压 DP」、「动态规划」、「启发式搜索」 给你两个整数数组 nums1 和 nums2,它们长度都为 n。 两个数组的 异或值之和 为 (nums1[0] XOR nums2[0]) (nums…...
C#: Json序列化和反序列化,集合为什么多出来一些元素?
如下面的例子,很容易看出问题: 如果类本身的无参构造函数, 就添加了一些元素,序列化,再反序列化,会导致元素增加。 如果要避免,必须添加: new JsonSerializerSettings() { Object…...
Docker教程-centos快速安装和配置Docker
# step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2# Step 2: 添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3: 更新并安装 Docker-CE sudo …...
three.js(四):react + three.js
绘制多个立方体 1.搭建reactts 项目 npx create-react-app basics-demo --template typescriptreactts 的用法可参考此链接: https://react-typescript-cheatsheet.netlify.app/docs/basic/setup 2.安装three依赖 npm install three types/three --save3.安装路…...
IDEA全局统一设置Maven
原来每次打开新建的项目都需要经过 File-> Settings 重新配置maven,这样很不爽 然而经过 File-> New Projects Setup -> Settings for New Projects 后,再如上图配置后就全局设置好了...
CSS中的margin与padding
目录 一、margin 1.概念及作用 2.基本语法 3.margin的用法 二、padding 1.介绍 2.基本语法及要求 3. 用法 4.内边距和元素宽度 讲这些之前,先看一张图,便于理解 一、margin 1.概念及作用 CSS margin 属性用于在任何定义的边框之外,…...
匿名内部类、Lambda、方法引用 的总结
在今天的项目中看到这样一行代码 Integer syncCount consumer.consumerInfo( Collections.singletonList(KafkaTopicConst.Event_BMS_SYSLOG_ROLE),consumer::handle); 直接傻眼,无法理解consumer::handle这种用法,因此总结如下 consumer::handle这种写…...
本地docker registry 搭建
#!/bin/bash DOCKER_REGISTRY_ROOT/data0/docker/registry DOMAINexample.host.com #生成证书:https://goharbor.io/docs/2.6.0/install-config/configure-https/ mkdir $DOCKER_REGISTRY_ROOT/certs cd $DOCKER_REGISTRY_ROOT/certs openssl genrsa -out ca.key 40…...
阿里云将关停代销业务
我是卢松松,点点上面的头像,欢迎关注我哦! 阿里云自从逐渐分拆独立之后,做了很多调整。最近它又做了一个大动作:据DoNews消息,阿里云将会在今年9月30日之前,全面关停代销业务。 这件事实际上…...
【ES6】JavaScript的Proxy:理解并实现高级代理功能
在JavaScript中,Proxy是一种能够拦截对对象的读取、设置等操作的机制。它们提供了一种方式,可以在执行基本操作之前或之后,对这些操作进行自定义处理。这种功能在许多高级编程场景中非常有用,比如实现数据验证、日志记录、权限控制…...
[Pandas] 求百分比并添加百分(%)号
导入数据 import pandas as pddf pd.DataFrame(data{orders: [2130,5102,3256,1297,1918,786],repeat_orders: [73,158,89,30,49,18]}) df df[repetition_rate] df[repeat_orders] / df[orders] df df[repetition_rate] df[repetition_rate].apply(lambda x: format(x, .2…...
《算法竞赛·快冲300题》每日一题:“凑二十四”
《算法竞赛快冲300题》将于2024年出版,是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码,以中低档题为主,适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 凑…...
git reset --hard HEAD
git reset --hard HEAD 是用于将你的工作目录重置回最后一次提交状态的命令。- git reset 是 git 的一个命令,用于重置你当前的 HEAD 到指定的状态。 --hard 标志告诉 git 要完全重置工作目录和暂存区,去匹配最后一次提交。在这个过程中,所有…...
机器人编程怎么入门?
机器人已经在我们中间存在了二三十年。如今,机器人在我们的文化中比以往任何时候都更加根深蒂固。大多数机器人机器用于各种装配线,或在世界各地的矿山或工业设施中执行密集的物理操作。 还有一些家用机器人,工程师正在对机器人进行编程&…...
广州华锐互动:VR垃圾分类虚拟科普系统让学习过程更加丰富有趣
在我们的日常生活中,垃圾分类已成为一项重要的公民责任。然而,由于缺乏对垃圾分类的深入理解和相关知识,许多人在实践中往往感到困惑和挫败。为了解决这个问题,一种创新的解决方案应运而生:垃圾分类VR虚拟仿真教学系统…...
手机盖板IR油墨透光率检测仪T03
手机盖板作为手机最外层玻璃面板,其加工一般有落料、倒边、抛光、镀膜、丝印等多道加工工序组成,其中任何一个工序出现差错,都有可能导致手机盖板产生缺陷,例如漏油、透光、IR孔不良、视窗划伤、油墨区划伤、內污、边花等…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
