当前位置:网站首页>【小白聊云】中小企业容器化改造建议
【小白聊云】中小企业容器化改造建议
2022-07-02 12:26:00 【华为云】
中小企业容器化改造建议
企业应用容器化改造,一般有以下三种方式:
• 方式一:单体应用整体容器化,应用代码和架构不做任何改动。
• 方式二:将应用中升级频繁,或对弹性伸缩要求高的组件拆分出来,将这部分组件容器化。
• 方式三:将应用做全面的微服务架构改造,再单独容器化。
对于中小企业而言,首次做容器化改造,建议选择方式一,主要优点有:
• 业务0修改:应用架构和代码不需要做任何改动。
• 提升部署和升级效率:应用可构建为容器镜像,确保应用环境一致性,提升部署效率。
• 降低资源成本:Docker对系统资源利用率高。相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
确定容器化改造方式后,企业就可以着手改造。以近期遇到的某中小企业改造为例。
企业现状:该企业目前2台web服务器作为前端,mysql数据库,软件负载均衡器,无数据库中间件,后端EVS云硬盘。
企业改造点:
1、负载均衡应用改造点:选择合适的负载均衡器。一般中小型的Web应用可以使用ngnix或HAProxy,大型网站或重要的服务可以使用LVS,目前该企业业务规模较小,选取nginx作为负载均衡器;
2、web应用改造点:应用存在长时间执行请求。增加消息队列,通过消息队列将长任务与用户请求解耦。
3、应用服务器应用改造点:应用实例依赖于本地的存储来持久化数据。日志建议变成流汇聚到分布式日志系统中。如果必须要使用存储,要使用共享文件系统如NFS。
4、资源及集群规划:目前采用单集群规划(假设云资源中有其他应用项目),给出示意图如下:
.png)
5、 高可用规划
• 分别在2个AZ中部署两套CCE集群,K8S Master采用本地3节点高可用部署。
• 应用AZ内高可用部署,通过ClusterIP服务调用不跨AZ。
• 应用发布LoadBalancer类型的Service对接到集群所在AZ的融合ELB服务实例。
• 应用通过VIP访问数据库,数据库自动切换应用不感知。
• 支持多AZ动态容器存储,根据pod所在AZ创建数据卷。
6、 网络规划
集群内部应用默认可通过ClusterIP类型服务相互通信。k8s集群内置DNS服务,服务间访问可以通过IP或域名访问。K8S内部应用网络互通示意图如下:
.png)
Step1:kube-proxy、core-dns从Master中kube-apiserver订阅service,POD2的Service创建时,kube-proxy刷新本节点iptables,core-DNS更新路由数据。
Step2:Pod2通过域名访问Pod4的service4,发起到core-dns查询请求,并获取对应的ClusterIP(如果使用ClusterIP直接访问则忽略这一步骤)
Step3:Pod2发送业务报文,目的地址为获取到的ClusterIP。容器网络根据目的地址匹配策略后进行VxLAN封装,封装源地址为容器所在的VM IP地址,目的地址为目的容器所在VM IP,并将报文发给I层vSwitch,然后转发至目的容器所在VM,容器网络解VxLAN封装后,根据ClusterIP将业务报文发送目的service及POD。
边栏推荐
- 【LeetCode】200-岛屿数量
- 2279. Maximum number of backpacks filled with stones
- 【idea】推荐一个idea翻译插件:Translation「建议收藏」
- 6091. 划分数组使最大差为 K
- /Bin/ld: cannot find -lxml2
- [leetcode] 577 reverse word III in string
- Make p12 certificate [easy to understand]
- Pyobject to char* (string)
- How to use percona tool to add fields to MySQL table after interruption
- 使用 percona 工具给 MySQL 表加字段中断后该如何操作
猜你喜欢

Postgressql stream replication active / standby switchover primary database no read / write downtime scenario

已知兩種遍曆序列構造二叉樹
![[leetcode] 1162 map analysis](/img/9a/d04bde0417d4d5232950a4e260eb91.png)
[leetcode] 1162 map analysis

Two traversal sequences are known to construct binary trees
![[leetcode] 417 - Pacific Atlantic current problem](/img/30/c541bc1e81eb4e348ca11116a05e84.png)
[leetcode] 417 - Pacific Atlantic current problem
![[salesforce] how to confirm your salesforce version?](/img/ce/4c844b1b686397faa1b6aa3d57e034.png)
[salesforce] how to confirm your salesforce version?

《大学“电路分析基础”课程实验合集.实验六》丨典型信号的观察与测量

【Salesforce】如何确认你的Salesforce版本?

可视化技术在 Nebula Graph 中的应用
![[leetcode] 1905 statistics sub Island](/img/82/d2f7b829f5beb7f9f1eabe8d101ecb.png)
[leetcode] 1905 statistics sub Island
随机推荐
/bin/ld: 找不到 -lgssapi_krb5
Why does the system convert the temp environment variable to a short file name?
【LeetCode】344-反转字符串
Thoroughly understand browser strong cache and negotiation cache
Deux séquences ergodiques connues pour construire des arbres binaires
List of sergeant schools
目标检测—利用labelimg制作自己的深度学习目标检测数据集
智联招聘的基于 Nebula Graph 的推荐实践分享
[leetcode] 189 rotation array
Add an empty column to spark dataframe - add an empty column to spark dataframe
Wavedec2 in MATLAB, talk about the wavedec2 function [easy to understand]
[salesforce] how to confirm your salesforce version?
Use ffmpeg command line to push UDP and RTP streams (H264 and TS), and ffplay receives
beforeEach
Experiment collection of University "Fundamentals of circuit analysis". Experiment 6 - observation and measurement of typical signals
【Experience Cloud】如何在VsCode中取得Experience Cloud的MetaData
[leetcode] 1162 map analysis
Golang MD5 encryption and MD5 salt value encryption
如何实现十亿级离线 CSV 导入 Nebula Graph
蚂蚁集团大规模图计算系统TuGraph通过国家级评测