【小白聊云】中小企业容器化改造建议
中小企业容器化改造建议
企业应用容器化改造,一般有以下三种方式:
• 方式一:单体应用整体容器化,应用代码和架构不做任何改动。
• 方式二:将应用中升级频繁,或对弹性伸缩要求高的组件拆分出来,将这部分组件容器化。
• 方式三:将应用做全面的微服务架构改造,再单独容器化。
对于中小企业而言,首次做容器化改造,建议选择方式一,主要优点有:
• 业务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。
- 点赞
- 收藏
- 关注作者
评论(0)