学校小组作业 小说馆项目 部署

项目源码地址

https://github.com/NaZawsze/bookweb

https://github.com/NaZawsze/storyweb

其他项目源码地址

https://github.com/kubesphere/kubesphere

这也是我第一次试验,个人能力有限,可能有很多漏洞和问题。

起因

老师布置的小组作业,我的任务只是负责部署服务。

规划

只部署静态网页,前端涉及html,css,js。项目分为两个站点,一个引导界面,一个小说馆主界面。引导界面使用cloudflare pages部署,小说馆主站点使用k8s集群+nginx部署实现高可用。另外为以后可能部署后端,提前部署数据库。
暂时使用NodePort访问,这次部署没能实现nginx ingress。
本次部署是一个非常简单的试验,kubesphere多集群容器管理平台一键部署,并且自带多个关键服务: Prometheus,Grafana,各类探针等

k8s高可用架构: keepalived+haproxy
数据库架构: 一主一从,暂时没做服务端的读写分离

结论

book页面,即导航页面加载时间为1.40s左右。当然这个速度取决于具体的网络状况,cloudflare国内减速不是吹的。
story页面,即小说馆主页面使用家用公网做frp,页面加载速度为500ms左右。
所有图片做了压缩及转webp处理。book页面由于托管在cf pages,框架None,不做构建,跨域问题即使按照官方参考文档也无法解决(个人技术问题),所以图片也是从github仓库读到cf,加载直接从cf读取的。而story页面将图片上传TG CDN图床,所以加载速度快很多。

实现

环境配置

云平台: 未来网络试验设施 ceni.ustc.edu.cn

系统: CentOS Linux release 7.9.2009 (Core)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
kubectl version v1.23.10
kubesphere: v3.3.2
Nginx version: nginx/1.23.4(docker nginx/latest)
SQL version: MariaDB-10.6.13

docker version:
Client:
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
······

Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Experimental: false
containerd:
Version: v1.4.9
runc:
Version: 1.0.1
docker-init:
Version: 0.19.0
······

服务器IP地址:

1
2
3
4
5
6
7
8
9
10
11
12
172.16.10.1     vip.cluster.local
172.16.10.11 lb01
172.16.10.12 lb02
172.16.11.11 master1a
172.16.11.12 node1a
172.16.11.13 node2a
172.16.11.21 master1b
172.16.11.22 node1b
172.16.11.23 node2b
172.16.11.31 mysql01
172.16.11.32 mysql02
172.16.11.33 nfs