当前位置:网站首页>【小白聊云】中小企业容器化改造建议
【小白聊云】中小企业容器化改造建议
2022-07-02 12:26:00 【华为云】
中小企业容器化改造建议
企业应用容器化改造,一般有以下三种方式:
• 方式一:单体应用整体容器化,应用代码和架构不做任何改动。
• 方式二:将应用中升级频繁,或对弹性伸缩要求高的组件拆分出来,将这部分组件容器化。
• 方式三:将应用做全面的微服务架构改造,再单独容器化。
对于中小企业而言,首次做容器化改造,建议选择方式一,主要优点有:
• 业务0修改:应用架构和代码不需要做任何改动。
• 提升部署和升级效率:应用可构建为容器镜像,确保应用环境一致性,提升部署效率。
• 降低资源成本:Docker对系统资源利用率高。相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
确定容器化改造方式后,企业就可以着手改造。以近期遇到的某中小企业改造为例。
企业现状:该企业目前2台web服务器作为前端,mysql数据库,软件负载均衡器,无数据库中间件,后端EVS云硬盘。
企业改造点:
1、负载均衡应用改造点:选择合适的负载均衡器。一般中小型的Web应用可以使用ngnix或HAProxy,大型网站或重要的服务可以使用LVS,目前该企业业务规模较小,选取nginx作为负载均衡器;
2、web应用改造点:应用存在长时间执行请求。增加消息队列,通过消息队列将长任务与用户请求解耦。
3、应用服务器应用改造点:应用实例依赖于本地的存储来持久化数据。日志建议变成流汇聚到分布式日志系统中。如果必须要使用存储,要使用共享文件系统如NFS。
4、资源及集群规划:目前采用单集群规划(假设云资源中有其他应用项目),给出示意图如下:
5、 高可用规划
• 分别在2个AZ中部署两套CCE集群,K8S Master采用本地3节点高可用部署。
• 应用AZ内高可用部署,通过ClusterIP服务调用不跨AZ。
• 应用发布LoadBalancer类型的Service对接到集群所在AZ的融合ELB服务实例。
• 应用通过VIP访问数据库,数据库自动切换应用不感知。
• 支持多AZ动态容器存储,根据pod所在AZ创建数据卷。
6、 网络规划
集群内部应用默认可通过ClusterIP类型服务相互通信。k8s集群内置DNS服务,服务间访问可以通过IP或域名访问。K8S内部应用网络互通示意图如下:
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。
边栏推荐
- Demo of converting point cloud coordinates to world coordinates
- [network security] network asset collection
- locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db‘: 没有那个文件或目录
- lseek 出错
- [leetcode] 577 reverse word III in string
- 6090. 极大极小游戏
- 2303. Calculate the total tax payable
- 树-二叉搜索树
- How to use percona tool to add fields to MySQL table after interruption
- 奥比中光 astra: Could not open “2bc5/[email protected]/6“: Failed to set USB interface
猜你喜欢
【LeetCode】1162-地图分析
基于 Nebula Graph 构建百亿关系知识图谱实践
Wechat Alipay account system and payment interface business process
【LeetCode】1254-统计封闭岛屿的数量
How to use percona tool to add fields to MySQL table after interruption
隐藏在 Nebula Graph 背后的星辰大海
PHP static members
[salesforce] how to confirm your salesforce version?
[leetcode] 1162 map analysis
Finally, I understand the event loop, synchronous / asynchronous, micro task / macro task, and operation mechanism in JS (with test questions attached)
随机推荐
fastjson List转JSONArray以及JSONArray转List「建议收藏」
Aiko ai Frontier promotion (7.2)
已知两种遍历序列构造二叉树
(5) Flink's table API and SQL update mode and Kafka connector case
奥比中光 astra: Could not open “2bc5/[email protected]/6“: Failed to set USB interface
[leetcode] 1162 map analysis
[leetcode] 877 stone game
How to use percona tool to add fields to MySQL table after interruption
《大学“电路分析基础”课程实验合集.实验六》丨典型信号的观察与测量
愛可可AI前沿推介(7.2)
【LeetCode】189-轮转数组
Thoroughly understand browser strong cache and negotiation cache
【LeetCode】876-链表的中间结点
Digital collection system development (program development) - Digital Collection 3D modeling economic model system development source code
Use ffmpeg command line to push UDP and RTP streams (H264 and TS), and ffplay receives
Deux séquences ergodiques connues pour construire des arbres binaires
2278. 字母在字符串中的百分比
爱可可AI前沿推介(7.2)
Cultural scores of summer college entrance examination
2278. Percentage of letters in string