You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

14 KiB

Ushio

汐 - IoTcat的私人分布式信息支持系统

English Version

项目由来

Ushio 汐 - 取名源自日漫Clannad主人公的女儿。2019.7.18京阿尼第一工作室遭人纵火,最温柔的一群人受到了最残忍的对待。我所能做的,只有将其所传达的精神传递下去。希望借助Ushio系统,去找到真实的自己。去找到真正属于我的责任;去找到真正属于我的幸福;去找到真正值得我全力以赴的那个人,那些人。

项目定位

汐,黄昏时刻的涌水。Ushio系统的设想是,可以分布式地弹性地部署在各种设备上,为我的开发行为提供工具集,运行环境,以及维护途径。如果说我所开发的诸种服务相互之间的依赖关系是一张蜘蛛网,那么Ushio系统就是这张网的构架者和维护者。此外,有一些Ushio接口通过API形式,向公众开发。详见iotcat/ushio-api

实现方法

第一代ushio iotcat/ushio-cn-old:old

第一次架构完成于2019年7月,是由Ushio用户运行的,集成在cn.yimian.xyz服务器的CentOS7系统上的一系列应用程序。此时,仍然使用主机的文件系统。

第二代ushio iotcat/ushio-linux

第二次重构完成于2020年3月,是由Ushio用户运行的,以onedrive作为文件系统,以本机为缓存系统,有独立的系统分区和权限隔离的Linux子系统。

第三代ushio iotcat/ushio-cn

第三次重构完成于2020年6月,是由root用户运行的,以onedrive作为文件系统,以本机为缓存系统,由docker-compose控制的docker集群。

第四代ushio

第四次重构正在进行中,预计2020.12前完成。在第三代的基础上,使用Kubernetes和Helm取代docker-compose进行进程弹性管理,使用DroneCI和Github进行持续集成,使用Kafka进行跨区域集群的通信。

设计理念

  • Reliable
  • Fast
  • Safe
  • Integrated
  • Extensible
  • OpenSource
  • Smart

开发理念

  • 不断重构,迭代发展
  • 面向开发
  • 考虑到量子计算发展,将主要使用AES256,减少RSA使用

架构及标准

文件系统

Ushio使用git配合git.yimian.xyz管理配置文件,秘钥,凭据,数据库密码,以及对访问速度要求较高的静态文件。此外,Ushio使用onedrive存储占用空间较大的静态文件,比如视频文件等。Ushio使用Huawei Cloud Storage存储需要在跨区域集群间高速访问的共享文件,比如某些数据文件等。与此同时,Ushio使用主机磁盘存储日志文件,运行缓存等动态文件。

Ushio文件系统通用结构如下,其中,/onedrive目录,/mnt/var目录由所有Ushio主机共享,并同步。/home目录,/mnt/etc目录,/mnt/config目录,以及/mnt/docker目录使用git作管理以及灾备,方便版本控制以及快速恢复。/var/tmp使用系统根目录地址,存储动态文件以及缓存。

|Ushio-fs
|
|---|onedrive (使用rclone挂载)
|
|---|mnt (IoTcat/ushio-private)
|   |---config (共享配置文件)
|   |---etc(共享局部配置文件)
|   |---docker(共享docker-compose配置文件)
|   |---var (共享华为云存储)
|   
|---|home(使用git管理)
|   |---www (本地高速网站文件,如php)
|   |---opt (本地开发文件)
|   |---lib (本地共享库)
|   
|---|var
|   |---log (本地日志)
|   |---cache (本地缓存)
|
|---|tmp (临时文件)

跨区域通信

Ushio集群通过华为云存储, mqtt分布式集群,以及Kafka消息队列(待实现)进行数据交流。

服务列表

主机列表

实时列表看这里

重要节点

Ushio核心服务

网站服务

  • api.yimian.xyz: 提供公共API接口
  • log.yimian.xyz: 提供日志记录接口
  • session.yimian.xyz: 提供js-session服务
  • cdn.yimian.xyz: CDN加速服务
  • image.yimian.xyz: 提供图片获取服务
  • storage.yimian.xyz: 提供文件缓存服务
  • danmaku.yimian.xyz: 视频弹幕服务

用户服务

  • login.yimian.xyz: 提供Ushio系统用户登录服务
  • user.yimian.xyz: 提供用户个人信息管理页面
  • auth.yimian.xyz: 提供Ushio用户系统认证和权限管理服务

IoT服务

  • mqtt.yimian.xyz: 提供mqtt通信服务
  • ota.yimian.xyz: 为IoT节点提供OTA服务

其它服务

  • dns.yimian.xyz: 提供dns服务
  • frp.yimian.xyz: 提供内网穿透服务
  • docker.yimian.xyz: 提供docker镜像托管服务
  • db.yimian.xyz: mysql 存储服务
  • ushio-win.yimian.xyz: win系统Ushio服务通信接口

依赖Ushio的服务

公共服务

私人服务

重要模块

ushio-session

基于iotcat/js-session提供session服务。 详见iotcat/session

ushio-js

提供网页端的ushio接口,提供aplayer, fp, js-session, tips灯服务。详见iotcat/ushio-js

ushio-nginx

在nginx源码基础上修改而成的反代软件,其实主要实现的效果就是使得http header中的server是Ushio/1.16.1。。之后如果有能力我会进一步优化nginx。详见iotcat/ushio-nginx

ushio-dns

使用dnsmasq,提供dns服务。如需使用,请将您的dns主机地址修改为114.116.85.132,80.251.216.25

redis数据库

为本地提供高速缓存服务。

mongoDB数据库

提供分布式文件存储。目前主要是由弹幕模块使用。

php-fpm

使用crunchgeek/php-fpm:7.3镜像,提供php网络发布服务。

frps内网穿透

为内网主机提供内网穿透服务。

emqx mqtt

提供mqtt服务。

ushio-monitor

基于serverstatus 提供服务器监控服务。 详见https://monitor.yimian.xyz

oneindex

基于oneindex提供onedrive文件发布服务。

ushio-log

提供日志服务。

部署方法

脚本部署

目前支持CentOS7的一键脚本部署。实现了可以自动化和无人值守的扩展服务器。比如,如果需要,我现在可以在十分钟内(前提网络好)新填一台日本或其他国家的Ushio服务器,并开始提供服务。脚本详见iotcat/ushio-centos-ini



历史

系统架构(第二代)

|Ushio
|
|---|core
|   |
|   |---git.yimian.xyz
|   |---docker.yimian.xyz
|   |---safe.yimian.xyz
|   |---ssl.yimian.xyz
|   |---dbkey.yimian.xyz
|   |---nginx.yimian.xyz
|   |---redis.yimian.xyz
|   |---mqtt.yimian.xyz
|   |---db.yimian.xyz
|   |---backup.yimian.xyz
|
|---|service
|   |
|   |---token.yimian.xyz
|   |---user.yimian.xyz
|   |---api.yimian.xyz
|   |---session.yimian.xyz
|   |---frp.yimian.xyz
|   |---ssr.yimian.xyz
|   |---ota.yimian.xyz
|   |---danmaku.yimian.xyz
|   |---log.yimian.xyz
|
|---|app
|   |
|   |---login.yimian.xyz
|   |---blog.yimian.xyz(www.eee.dog)
|   |---chat.yimian.xyz
|   |---home.yimian.xyz
|   |---shorturl.yimian.xyz(eee.dog)
|   |---cloud.yimian.xyz
|   |---video.yimian.xyz(acg.watch)
|   |---rss.yimian.xyz(www.eee.dog/feed)
|   |---homepage.yimian.xyz
|   |---img.yimian.xyz
|   |---imgbed.yimian.xyz
|   |---msc.yimian.xyz
|   |---resume.yimian.xyz
|   |---iot.yimian.xyz
|   |---settlement.yimian.xyz
|   |---ques.yimian.xyz(问卷系统)
|   |---vpn.yimian.xyz
|   |---data.yimian.xyz
|   |---ai.yimian.xyz
|   |---game.yimian.xyz
|   |---translate.yimian.xyz
|   |---search.yimian.xyz
|   |---report.yimian.xyz
|   |---monitor.yimian.xyz
|   |---pay.yimian.xyz
|

系统架构(第一代)

|Ushio
|
|---|iis
|   |
|   |---Blog(博客,记录生活,引导)=SEO(搜索引擎收录)
|   |   |
|   |   |---YimianReading(追番/阅读记录)
|   |   |---YimianYulu(记录自己的中二语录)
|   |   |---WeiBlog(类似说说)
|   |   |---YimianDev(开发记录)
|   |   |---留言板
|   |   |---RSS
|   |   |---笔记存档系统
|   |
|   |---HomePage(主页,引导作用)=SEO
|   |   |
|   |   |---YimianGuide(导航页)
|   |   |---私人pc浏览器主页
|   |   |---私人phone浏览器主页
|   |   |---Resume(简历)
|   |
|   |---ACG.WATCH(收藏的动漫,电影,电视剧等视频)=SEO
|   |   |
|   |   |---珍藏的蓝光动漫/视频
|   |   |---国内被禁的神作(与b站互补)
|   |
|   |---OVO.RE(图床)=SEO
|   |---YimianMsc(跨域不间断网页音乐服务)(基于网易云音乐)
|   |---YimianCloud(私人网盘+公共分享)(分布式)(内网+外网)
|   |---iot(物联相关)
|   |   |
|   |   |---电子器件管理系统
|   |
|   |---YimianQues(简易的问卷系统)
|   |---YimianPC(笔记本上的简易系统,方便内网/外网访问与文件共享)
|   |---YimianData(提供简易的大数据展示功能)
|   |---YimianChat(简易的在线聊天平台)
|   |---UshioFee(Ushio运行累计耗资统计)
|   |---YimianSSR(翻墙服务管理界面)
|
|---|login(用户管理系统)
|   |
|   |---iis(注册,登录,找回密码页面)
|   |---临时用户系统(随机/QQ/微信/google)
|
|---|ssr/vpn(代理,辅助提供翻墙服务)
|
|---|frp(内网穿透服务)
|
|---|iot
|   |
|   |---ota(固件更新服务)
|   |---MQTT
|
|---|storage
|   |
|   |---SQL(表单,日志)
|   |---NoSQL(网站缓存,视频系列信息)
|   |---对象存储(速度敏感的大文件)
|   |---onedrive(大文件,与yimianPC同步)
|
|---|API
|   |
|   |---mail
|   |---sms
|   |---咕咕机
|   |---pic/moe(图片)
|   |---一言
|   |---dans(弹幕服务)
|   |---图片压制/剪切
|   |---视频压制/转码
|   |---翻译(google translate)
|   |---搜索(站内搜索+综合google)
|
|---|pay
|   |
|   |---alipay
|   |---weichatpay
|   |---bitcon
|   |---paypal
|
|---|ai
|   |
|   |---wiot自定义训练模型
|   |---用户分类(投其所好推送内容)
|   |---简易的聊天机器人
|
|---|game(游戏服务器)
|   |
|   |---战地2
|   |---红色警戒2尤里复仇
|   |---模拟城市5
|
|---|log(日志系统)
|   |
|   |---系统日志
|   |---iis访问日志
|   |---蜘蛛访问日志
|   |---api访问日志
|
|---|monitor(监视/控制系统)
|   |
|   |---iis(相关服务异常时自动引导用户至指定页面,防止google惩罚,同时向站长警告)
|   |---控制各服务开关状态
|   |---证书管理(自动续费)
|
|---|backup(备份系统)
|   |
|   |---github备份
|   |---YimianPC文件备份
|   |---YimianPhone文件备份
|   |---数据库备份
|   |---服务器系统镜像备份
|
|---|report(报表系统)
|   |
|   |---站点每日概况
|
|

核心依赖

使用的服务

  • 华为云 CDN
  • 华为云 对象存储
  • 华为云 分布式缓存 Redis
  • 华为云 云数据库 RDS
  • 华为云 弹性云服务器 ECS
  • 腾讯云 域名解析
  • 腾讯云 云通信 短信
  • 腾讯云 域名解析
  • 腾讯云 CDN
  • 腾讯云 云服务器
  • 腾讯云 无服务器云函数
  • 腾讯 企业邮箱
  • 阿里云 轻量应用服务器
  • 阿里云 邮件推送
  • Github 代码托管服务
  • Vultr VPS
  • Godaddy 域名管理
  • internetbs 域名管理
  • UptimeRobot iis监视服务
  • onedrive 文件存储服务
  • GoogleAnalytics 站点访问统计