利用OpenVPN访问阿里云VPC中的资源(Docker方案)
请勿在不恰当的地方使用相关技术,否则后果自负需求背景YDJSIR在腾讯云和阿里云各有一个轻量云服务器。和真·云服务器相比,轻量云真的少了太多的东西……(想学技术还是得上完整版服务器)。轻量云在网络和存储的可拓展性实在是太差了,连个防火墙都不能上安全组,只能单独调规则。由于某些课程的需要,YDJSIR需要在便宜的(性能也不算太差)的轻量云上跑点计算项目(如Flink、Spark等),它们会需要暴露大量端口。YDJSIR很显然想故技重施,利用OpenVPN进入到内网访问。不过,由于服务器不是专用的,且OpenVPN的负载显然不重,装一个OpenVPN在主机还要修改很多配置,故将OpenVPN封装在容器里显然是一个好主意。
实现效果
对于可以向外直接暴露的端口,并不需要走OpenVPN。(根据IP分流区分内网外网给予不同权限除外)。对于风险较高,鉴权较弱的端口则可以考虑先经过OpenVPN而后从内网访问,防火墙处隔绝外网。在能相互连通的VPC内的其他服务也可以通过这样的方式访问(只要路由表配置恰当)
参考资料
直接看Docker Hub上的版本就好。这部分的说明和他GitHub上的描述好像是 ...
利用OpenVPN访问阿里云VPC中的资源(裸机方案)
请勿在不恰当的地方使用相关技术,否则后果自负需求背景众所周知,将SSH端口直接暴露在公网上是有一定风险的。尽管基于证书的验证是相当安全的,但是只要端口暴露了就总会有人试图往里面泼水。在阿里云上也是一样。很显然,只是需要SSH连接的话可以用网页端的免密登录来进行操作。然而,有的时候需要的并不仅仅是一个SSH端口。例如,YDJSIR在做数据集成的作业时就发现Hadoop,Spark等软件一旦启动会暴露非常多的端口,且默认状态下都没有鉴权,这显然是很危险的。特别是Spark,总要绑定一个网卡实际有的IP才行,但那是阿里云内网IP,没法直接访问(其实有一个workaround,先给当前ECS实例加一个弹性网卡,然后开一个弹性公网IP,以EIP网卡可见模式绑定即可)。然而,即使可以访问,这也是非常不安全的。为了解决上述问题,最直接的思路显然是想办法让运维/开发人员的设备与云服务器置身同一内网中。不过,阿里云提供的相关服务门槛相当高,不适合小微开发者。既然如此,那么就自己动手,丰衣足食吧。YDJSIR选择了开源的OpenVPN (UDP+TUN方案)来解决这样的需求。为什么选择它?他和传统L2TP ...
2022春数据集成环境搭建
~承载平台承载平台是YDJSIR的安装着Windows10 教育版的台式机上的HyperV虚拟机。该虚拟机利用虚拟交换机桥接到路由器上,而后连到南大校内网。
性能方面,分配了QQBZ(i9 9900 ES版,以7核心超线程状态运行)的四个物理核心,宿主机内存双通道32GB,8GB静态全量分配给虚拟机。
为了方便团队协作,YDJSIR在路由器(网件R8000P)上部署了OpenVPN。队友可以通过OpenVPN的方式连到YDJSIR的宿舍内网,访问上述虚拟机和YDJSIR的NAS和软路由等服务。
所有对服务器的访问均通过SSH进行,该虚拟机不直接映射任何端口到校内网。
环境一览软件版本1234567891011121314.├── flink-1.13.6-bin-scala_2.11.tgz├── hadoop-2.7.4.tar.gz├── install.sh # 宝塔面板├── kafka_2.11-2.1.1.tgz├── scala-2.11.12.rpm # 独立的Scala├── spark-2.4.8-bin-without-hadoop.tgz # 有Scala没H ...
技术团队合作的思考
~作为一个软件工程专业的学生和技术爱好者,在技术团队中的合作经历显然是不少的。为什么这里说的是技术团队,而不是软件团队或开发团队呢?因为技术团队可以是运维,可以是数据分析,可能是行情研究或者是做综述,可能是顾问,当然也可以是实际软件开发。下面提到的例子显然和软硬件有关。YDJSIR不在此处记录那些YDJSIR全程与技术无关的记录.
半商业性项目类
这部分会特别注意不涉密
南小宝——凤凰项目 负责人YDJSIR致力于引入DevOps的工作流程,使得南小宝的研发效能进一步提高。
竞赛项目类第17届(2022)花旗杯队友都是神仙,对任务从不挑剔,使命必达。YDJSIR甚至怀疑YDJSIR是不是因为这样的经历过度简化了团队合作的难度。作为Team Leader,YDJSIR过得太舒服了。这也是第一次对接一个比较真实的外部需求(需求方不是软件专业人员,也不是课程团队)。不过这么好的甲方估计也没处找了。
不过除了代码本身以外,PPT雕花工程也得下不少功夫。YDJSIR的确也从中学会了不少PPT技巧。回想一下,自己之前的PPT还真就把东西堆上去就完事了,而绝没有想每一步是怎么推演得到下一步的。一致 ...
江门市第一中学——YDJSIR的中二时光
准确的来说,YDJSIR是江门市第一中学景贤学校(当年江门一中唯一的公办初中部)的学生。YDJSIR的初中岁月,是在原江门一中的校园里度过的。恰好赶上分班的YDJSIR享受了三年特快班的生活。特快班带来的不是更大的升学压力,而是教育资源高度集中带来的自由与放松。那是YDJSIR在学业上最无忧无虑的时光。
在大学,YDJSIR基本上已经不再提起初中时光,但《虚忆定格》的发布改变了这一切。严格来说,这部作品带有一定的玄幻色彩,并不是单纯的恋爱游戏。一年前就开始发布先行体验版的它让YDJSIR等得好辛苦,发售当天(2022年3月12日)YDJSIR毫不犹豫地将它纳入仓库中。
这游戏的设定实在是戳到YDJSIR了。注释版呈现如下。
山海市(江门市):
一座临海城市(粤港澳大湾区西部重要城市),市中心有一条主干河流(蓬江河),把山海市分成南北两区——北山区(蓬江区)和南海区(江海区)。北山区山地较多,而南海区则是平原。
景礼高中(江门市第一中学)、敬贤高中(江门市第一中学景贤学校):
山海市的两所名校。两所学校原本是同一所,但由于一些历史原因,分开成两所学校。
景礼坐落于南海区临海沿岸,注重学 ...
CICD with Jenkins & GitLab
DevOps!虽然很显然只有Jenkins和GitLab是还远远算不上完整的DevOps的,但至少YDJSIR离DevOps进了一步。
由于花旗杯的契机,YDJSIR开始认真研究Jenkins。虽然说也不能研究得多么深入,但总归是有些尝试。
花旗杯相关的内容显然还不能过早放出,但软工三方面积累的经验还是可以分享的。
软件工程与计算三环境说明该容器运行在一台腾讯轻量云服务器(上海,4C4G8M)的Docker容器中,通过Agent的方式,控制另一台腾讯轻量服务器(上海,4C4G8M)进行代码拉取、自动构建打包测试与发布等工作。
Jenkins通过南大Git上的镜像仓库获得WebHook推送++代码,相关操作均按照文档进行。前/后端和Python服务在生产环境中均运行在容器内。目前设置上以master分支为生产环境,仅该分支的推送会触发构建。构建状态会用GitLab Connection推回给南大Git。日常开发主分支是develop。
部署图如下。
仓库列表和说明如下。
课程仓库
南大Git镜像
备注
http://172.29.4.49/MXYZyyds/backend- ...
图像处理实践
缩放旋转滤镜篇
因为有跨域请求的问题,双击打开会出问题,请不要双击打开文件。代码地址如下:
https://github.com/YDJSIR-NJU/NJUSE-21-Frontend/tree/main/OnlinePS
实现功能本代码实现了以下所有功能。
滤镜功能,可以选择一组预设滤镜;
手动更改属性(例如亮度,对比度,饱和度)以获得所需的结果;
裁剪、旋转和缩放图像;
图像风格迁移;
代码说明本项目全部使用了本地缓存的CSS和JavaScript,没有使用Node.js或CDN。
直接双击打开index.html会有跨域问题。请保证访问时网页放在一个HTTP服务器中。我采用的是nginx-1.16.1。
选项区左上角可以上传待修改的图片或下载画布的内容(格式为png)。
滤镜与图像风格迁移本项目使用的是Lena.js。仓库地址:https://github.com/davidsonfellipe/lena.js
左侧的是三种滤镜,红色,灰度与反色,而右侧是三种图像风格。代码调用部分十分简单,举一个例子。
1234567891011fliter1.addEvent ...
Node.js后端+MySQL数据库+jQuery前端实现
~
源代码地址:
https://github.com/YDJSIR-NJU/NJUSE-21-Frontend/tree/main/LoginAndRegister
通用组件部分数据定义
username:用户名;
email:邮件;
hash:密码加盐的盐值;
passwd:加密后的密码;
uid:数据表主键,用于唯一标识一个用户;
我们约定,用户名是不可以重复的,但是邮箱是可以重复的。约束放在后端来做。除了邮箱以外,其他的字符串类型的数据都是严格区分大小写的。
在我提供的导出的数据库文件中,已经包含了三个账户,用户名分别是ss1,ss2,ss3,密码都是ssss1111。数据库转移文件是base_info.sql。
数据库为了便于开发和调试,我选择了在docker中启动MySQL(数据库)和phpMyAdmin(面板)服务。启动过程如下所示,十分简洁明了。提交文件中附有转移数据表使用的SQL脚本文件,可轻松迁移到其他平台。
1234docker pull mysql:8.0.1docker run --name YDJSIR-mysql -p 3307:3306 -e M ...
部署一个toy级别的Spark集群
~环境相关本次实验中共使用了5台华为云ECS,其中1台作为master节点,3台作为workers节点,1台作为观察用的机器。(由于绑定外网相关设置复杂,我们组开了同一地域的一个虚拟机专门用于访问其他四台机器的网页)除了观察用的机器是Windows Server 2012R2 64位简体中文版以外,其他的机器使用的都是Ubuntu Server 18.04。剩余四台主机的主机名、内网IP与公网IP如下。
主机名
内网IP
外网IP
作用
ecs-master
192.168.0.142
主节点
ecs-d202
192.168.0.17
Worker节点
ecs-d203
192.168.0.100
Worker节点
ecs-d204
192.168.0.102
Worker节点
由于IP绑定的问题,通过外网直接访问时,需要主动将网页提供的URL中的内网IP替换为内网IP才可以正常访问。但是在专门准备的观察机器上访问则没有这个问题,因为可以内网直通。
工具相关由于网络问题,此处涉及的所有安装文件都是本地下载后用WinSCP上传到既定位置的。相关操作按 ...
全屋Wifi覆盖系列计划
YDJSIR的亲戚们对于网络的投入通常而言是极为有限的。这也导致YDJSIR的网络体验非常不好。YDJSIR决心自费改变这种局面,并将于寒假期间进行工程实践。
商品房1号 完成组网协议中国电信e-Link
网络拓扑
组网效果
覆盖效果:全屋2.4G Wi-Fi无死角,5G覆盖所有房间。
黄色代表5G Wi-Fi区域,蓝色代表2.4G信号强区域,红色代表2.4G信号弱区域。
绿色线代表千兆链路,蓝色线代表百兆链路。
说明户主在不使用Wi-Fi的情形下会关闭Wi-Fi节点(因此这个组网必须有足够的弹性),且门口的“弱电箱”只能塞下光猫一个设备,也没有多余的电源插座,且户主不允许外挂设备以防止破坏外观(没法加更多路由器或者交换机,VLAN方案不可行)。IPTV是必须的,而且户主要求必须将千兆线留给电视以保证其上网质量(实测机顶盒能吃到17MB/s的速度,百兆能用,但是画质可能会受到影响),但是去客厅的只有一条千兆线和一条电话线(没错,是4芯的电话线,这是2020年以后),百兆有线回程估计也比那个光猫的无线回程强得多,便只好拿他做组网链路。实际测试了一下,广东电信的IPTV是走VLAN方案 ...