小说馆项目一些架构的考虑

  1. k8s集群架构
  2. 数据库架构
  3. nginx集群架构

k8s的高可用方案

首先考虑k8s的高可用方案

https://zhuanlan.zhihu.com/p/106531282

按功能组划分

  1. SLB
  • LVS
  • HAProxy
  1. etcd
  2. K8S Node (Master / Worker)

本次项目使用的方案为keepalived+haproxy
kubesphereOnVsphere-zh-architecture-C.png
架构图来自于kubesphere官方文档C
https://www.kubesphere.io/zh/docs/v3.3/installing-on-linux/on-premises/install-kubesphere-on-vmware-vsphere/

数据库方案

本次项目采用两个集中式数据库Mariadb10.6,虽然本次只部署静态网页,kubesphere数据也没有存储到数据库……说不定过一段时间心血来潮就实现了呢?嗯,大概……

本次部署,架构方面采取一主一从,主从复制,为后端读写分离做准备。

数据库主从复制原理图

sql-Master-Slave1-C.png

一主两从示例图(本次项目一主一从)
sql-Master-Slave2-C.png

读写分离技术博客参考:
https://zhuanlan.zhihu.com/p/199217698
(示例图提供)
https://blog.csdn.net/inrgihc/article/details/108293738
https://www.cnblogs.com/donlyluik/p/database_split.html

Web部署方案

book页面采用cloudflare pages部署。这里的 Serverless 架构主要体现的价值是:

事件触发能力:函数计算服务与事件源(OSS)的原生集成让使用者无需管理队列资源,队列自动扩展,实时处理上传的多媒体文件;
高弹性和按需付费:图片和视频(不同大小的视频)需要的计算资源规格是不同的,流量的波峰波谷对资源的需求是不同的,现在这种弹性由服务提供,按照用户的真实使用去扩容缩容,让用户 100% 地利用资源,无需为闲置资源付费。

story页面采用Nginx集群部署,暂时使用NodePort访问,当然也可以选择vip节点访问。

nginx访问(本次项目使用NodePort)
Nodeport-C.png

参考:
https://zhuanlan.zhihu.com/p/495599653

部分的容器挂载pvc持久卷,pvc持久卷由nfs服务器提供。