生命不息,折腾不止 –沃狭基·巴朔德
最近得知京东云活动,趁机入手一台主机,打算把当前万网的博客网站迁移过来,毕竟万网的虚拟主机就是一个web空间,太缺乏可玩性
嗯,就是手痒了
迁移倒是容易,使用PHP7也提升了一部分速度,但是万网的虚拟主机还有半年才到期,不用感觉浪费了,正好可以做负载均衡
然后噩梦就来了
用在京东云端做Nginx反向代理?每次请求都要从用户端跑到京东云再转到万网空间,网络开销包括延迟都不好控制,同一局域网下还好
那就从域名解析层面做负载均衡吧
迅速做好负载均衡后,数据同步却又成了噩梦,DNS负载均衡无法将HTTP请求的上下文逻辑引入到调度策略中,也就是说DNS负载均衡适合上下文不存在逻辑的情况,而部分大型网站使用的DNS负载均衡只是作为一级调度均衡,下面还要做二级负载均衡以保证永远在线,否则DNS的典型缺点就暴露出来了
接下来的解决方案就是:
其中一个节点只做计算节点,数据都从另一个节点拿,于是数据就分为了两个层面
1.数据库,万网不支持自搭建的数据库,只支持自己提供的数据库,于是确定下来万网作为主节点,京东云作为单纯的计算节点
2.web文件,京东云节点还要主动地同步万网节点的web文件,毕竟万网节点就是一个web空间,只有一种FTP方式上传下载文件,如何进行同步呢?
可不可以像mount方式一样,映射为本地的一个目录,这样使用rsync进行同步就可以了
最终还找到了一个工具curlftpfs,使用方式如下:
curlftpfs -o tcp_nodelay ftp://username:password@ftp-address/doc/ /localdoc/
但是这个工具却存在着一个BUG,使用su或runuser以非root身份(此处设为A)执行命令后,相关目录权限变为d????????,root用户甚至不能读取,切换为A用户身份却看到该目录属于root用户
要知道为了安全,京东云的nginx和php-fpm都是以一般用户身份运行的,虽然可以将目录chmod 777但总感觉蛋疼
更为蛋疼的是,后期优化除了wordpress方面的优化,其他的优化一概不能,例如https,http2,memcached或redis等,奈掣肘何?
如此看来万网这个节点真是如同鸡肋,食之无味,弃之可惜,想废物利用实乃蛋疼之举
目前考量,趁早弃置。
转换方向后,目前能想到的优化方案有以下几点:
1.申请 lets-encrypt 证书,开启HTTPS(已完成)
2.使用 service worker(最终使用WP Super Cache实现静态缓存)
3.开启 HTTP2(已完成)
4.支持HTTP2的CDN(已完成,upyun)
5.使用 redis 缓存
目前想到的就这些了,放弃万网节点后,前景一片光明啊