云原生 | 13手把手教你搭建ferry开源工单系统

Posted 小鹏linux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生 | 13手把手教你搭建ferry开源工单系统相关的知识,希望对你有一定的参考价值。

🍁博主简介
        🏅云计算领域优质创作者
        🏅2022年CSDN新星计划python赛道第一名

        🏅2022年CSDN原力计划优质作者
        🏅阿里云ACE认证高级工程师
        🏅阿里云开发者社区专家博主

💊交流社区CSDN云计算交流社区欢迎您的加入!

目录

系统功能介绍

1.准备工作

1.1 关闭防火墙和selinux

2.安装docker

2.1 更新yum索引

2.2 卸载旧版本docker

2.3 安装依赖包

2.4 设置阿里云镜像源

2.5 安装并启动docker

3.docker中部署mysql

3.1 安装启动mysql

3.2 进入mysql实例

4.docker中部署redis

4.1 安装启动mysql

4.2 查看容器是否正常启动

5.部署启动ferry

5.1 获取本机ip

5.2 安装git命令并拉取ferry代码

5.3 修改ferry配置文件

5.4 创建needinit文件

6.启动ferry

6.1 创建ferry容器并启动

6.2 查看容器状态

7.登录工单系统页面

 👑👑👑结束语👑👑👑


开源软件ferry是集工单统计、任务钩子、权限管理、灵活配置流程与模版等等于一身的开源工单系统,当然也可以称之为工作流引擎。 致力于减少跨部门之间的沟通,自动任务的执行,提升工作效率与工作质量,减少不必要的工作量与人为出错率。

系统功能介绍

工单系统相关功能:

  • 工单提交申请

  • 工单统计

  • 多维度工单列表,包括(我创建的、我相关的、我待办的、所有工单)

  • 自定义流程

  • 自定义模版

  • 任务钩子

  • 任务管理

  • 催办

  • 转交

  • 手动结单

  • 加签

  • 多维度处理人,包括(个人,变量 (创建者、创建者负责人))

  • 排他网关,即根据条件判断进行工单跳转

  • 并行网关,即多个节点同时进行审批处理

  • 通知提醒(目前仅支持邮件)

  • 流程分类管理

权限管理相关功能,使用 casbin 实现接口权限控制:

  • 用户、角色、岗位的增删查改,批量删除,多条件搜索

  • 角色、岗位数据导出 Excel

  • 重置用户密码

  • 维护个人信息,上传管理头像,修改当前账户密码

  • 部门的增删查改

  • 菜单目录、跳转、按钮及 API 接口的增删查改

  • 登陆日志管理

  • 左菜单权限控制

  • 页面按钮权限控制

  • API 接口权限控制

本次部署环境为CentOS7操作系统

1.准备工作

1.1 关闭防火墙和selinux

[root@xiaopeng ~]# setenforce 0                      #关闭selinux
[root@xiaopeng ~]# systemctl stop firewalld          #关闭防火墙
[root@xiaopeng ~]# systemctl disable firewalld        #设置开机不自启

2.安装docker

2.1 更新yum索引

[root@xiaopeng ~]# yum makecache fast

2.2 卸载旧版本docker

[root@xiaopeng ~]# yum remove docker \\
                  docker-client \\
                  docker-client-latest \\
                  docker-common \\
                  docker-latest \\
                  docker-latest-logrotate \\
                  docker-logrotate \\
                  docker-engine

2.3 安装依赖包

[root@xiaopeng ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

2.4 设置阿里云镜像源

[root@xiaopeng ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@xiaopeng ~]# ls /etc/yum.repos.d/             #查看有docker-ce.repo生成
bak  CentOS-7.repo  docker-ce.repo  epel.repo

2.5 安装并启动docker

[root@xiaopeng ~]# yum install -y docker-ce             #安装
[root@xiaopeng ~]# systemctl start docker               #启动docker
[root@xiaopeng ~]# systemctl disable docker             #设为开机自启动
[root@xiaopeng ~]# docker version                       #查看docker版本

3.docker中部署mysql

3.1 安装启动mysql

[root@xiaopeng ~]# docker run -d -p3306:3306 --name=mysql5 -e MYSQL_ROOT_PASSWORD=111111 mysql:5   #密码设置为111111

如下图,镜像下载并完成容器启动,等待即可:

3.2 进入mysql实例

[root@xiaopeng ~]# docker exec -it mysql5 bash           #进入mysql容器
root@df379c1e9abe:/# mysql -uroot -h127.0.0.1 -p111111   #登录mysql
mysql> create database ferry;                            #创建数据库ferry
mysql> exit                                              #退出mysql
root@df379c1e9abe:/# exit                                #退出容器

4.docker中部署redis

4.1 安装启动mysql

[root@xiaopeng ~]# docker run --name=redis6.0  -d -p 6379:6379 redis:6.0

如下图,镜像下载并完成容器启动,等待即可:

4.2 查看容器是否正常启动

[root@xiaopeng ~]# docker ps -a			#STATUS列显示UP状态为容器正常启动,如下图:

5.部署启动ferry

5.1 获取本机ip

[root@xiaopeng ~]# ip a		

5.2 安装git命令并拉取ferry代码

[root@xiaopeng ~]# yum -y install git
[root@xiaopeng ~]# git clone https://github.com/lanyulei/ferry.git	#拉取代码成功如下图:

5.3 修改ferry配置文件

[root@xiaopeng ~]# cd ferry/
[root@xiaopeng ferry]# vim config/settings.yml
找到如下配置:
database:
    dbtype: mysql
    host: ferry_mysql
    name: ferry
    password: 123456
    port: 3306
    username: root
做如下修改:
mysql 配置(更改host 和密码为你自己的):
host: ferry_mysql -> host: 192.168.0.3
password: 123456 -> password: 111111

找到如下配置:
redis:
    url: redis://ferry_redis:6379
做如下修改:
redis 配置(更改host为你自己的):
url: redis://ferry_redis:6379 -> url: redis://192.168.0.3:6379

5.4 创建needinit文件

[root@xiaopeng ferry]# touch config/needinit

注意:在config 目录新建 needinit 文件, 第一次启动的时候db中没有数据,此时可以通过这命令初始化数据,服务正常启动后再删该文件(以防下次容器启动时候再次初始化)

6.启动ferry

6.1 创建ferry容器并启动

[root@xiaopeng ferry]# docker run -itd --name ferry -v /root/ferry/config:/opt/workflow/ferry/config -p 8002:8002 lanyulei/ferry:1.0.1

# 命令解释
# docker run -it -v   宿主机目录绝对路径:容器目录绝对路径 镜像ID或NAME /bin/bash
# -it   交互式运行容器
# -d   在后台运行容器,并且打印容器id
# --name ferry   容器名称为ferry
# -v    挂载volume数据卷
# 宿主机目录绝对路径   宿主机中config配置文件目录所在路径。挂载之后容器运行可以将当前目录的配置文件挂载到容器内指定的目录调用
# -p 8002:8002   端口映射,注意:p小写是将容器的端口映射到宿主机的制定端口,大写是将容器的端口映射到宿主机的随机端口

若失败可以下载我安装成功后打包下来的配置文件模板直接进行修改 ,配置文件模板

如下图,镜像下载并完成容器启动,等待即可:

6.2 查看容器状态

[root@xiaopeng ferry]# docker ps -a
# mysql、redis、ferry三个容器状态都为UP则正确,如下图:

7.登录工单系统页面

浏览器访问ip:8002即可,如下图:

输入账号:admin

输入密码:123456

登录进入,如图:

 👑👑👑结束语👑👑👑

云原生新边界——阿里云边缘计算云原生落地实践

日前,在由全球分布式云联盟主办的“Distributed Cloud | 2021 全球分布式云大会·云原生论坛”上阿里云高级技术专家黄玉奇发表了题为《云原生新边界:阿里云边缘计算云原生落地实践》的主题演讲。



大家好,我是阿里云云原生团队的黄玉奇,非常感谢能有这个机会来跟大家分享。今天分享的题目是《云原生新边界∶ 阿里云边缘计算云原生落地实践》,从题目也能看到,分享内容应该是包括几个部分:云原生、边缘计算、二者结合架构设计、阿里云在商业和开源的实践以及案例。

今天大家所熟知的云原生(Cloud Native)理念,本质是一套“以利用云计算技术为用户降本增效”的最佳实践与方法论。所以,云原生这个术语自诞生,到壮大,再到今天的极大普及,都处于一个不断的自我演进与革新的过程当中。云原生已经作为一系列的工具、架构、方法论而深入人心,并为广泛使用;那么云原生到底是如何定义的呢?早期,云原生含义包括∶ 容器、微服务、Devops、CI/CD;2018 年以后 CNCF 又加入了服务网格和声明式 Api。

而回过头,我们再粗线条的看看云原生的发展历史,早期因为 Docker 的出现,大量的业务开始容器化、Docker 化。容器化通过统一交付件、隔离性从而带来了 Devops 的快速发展;Kubernetes 的出现让资源编排调度与底层基础设施解耦,应用和资源的管控也开始得心应手,容器编排实现资源编排、高效调度;随后,lstio 为代表的服务网格技术解耦了服务实现与服务治理能力。今天云原生几乎"包罗万象"般的无处不在,越来越多的企业、行业开始拥抱云原生。

云原生新边界——阿里云边缘计算云原生落地实践

而阿里巴巴作为云原生技术的践行者之一,云原生早已成为阿里的核心技术战略之—,这源自于过去十多年阿里在云原生领域的积累、沉淀和实践。大致可以分为三个阶段:

  • 第一阶段通过应用架构的互联网化沉淀了核心中间件、容器、飞天云操作系统等基础云原生能力;

  • 第二阶段是核心系统的全面云原生以及云原生技术的全面商业化;

  • 第三是云原生技术的全面落地和升级阶段,尤其是以 Serverless 为核心代表的下一代云原生技术正在引领整个技术架构升级。





阿里云容器服务 ACK 作为阿里云原生能力相关的商业化平台,正在为广大客户提供丰富的云原生产品及能力,这些都是拥抱云原生最好的佐证,我们坚信云原生是未来。

云原生技术已经无处不在, 阿里云作为云原生服务的提供者,我们认为云原生技术会继续高速发展,并被应用于"新的应用负载"、"新的计算形态"和"新的物理边界";从阿里云云原生产品家族大图中我们可以看到∶ 容器正被用于越来越多类型应用和云服务中;并且通过越来越多的计算形态承载,如 Serverless、函数计算等等;而丰富的形态也开始从传统的中心云走向边缘计算,走向终端。这就到了今天分享的主题:边缘计算中的云原生,下面我们看看什么是边缘计算。

首先,我们从直观感受上看看什么是边缘计算。随着 5G、loT、音视频、直播、CDN 等行业和业务的发展,我们看到一个行业趋势,就是越来越多的算力和业务开始下沉到距离数据源或者终端用户重近的地方,从而来获得很好的响应时间和降低成本;这明显区别传统的中心式的云计算模式。并越来越被广泛应用于汽车、农业、能源、交通等各行各业。

云原生新边界——阿里云边缘计算云原生落地实践

再从 IT 架构上看边缘计算,可以看到它具有明显的按照业务时延和计算形态来确定的分层结构,这里分别引用 Gartner 和 IDC 对边缘计算顶层架构的解释∶ Gartner 将边缘计算分为"Near Edge"、"Far Edge"、"Cloud"三部分,分别对应常见的设备终端,云下 IDC/CDN 节点,以及公共云/私有云;而 IDC 则将边缘计算定义为更直观的"Heavy Edge"、"Light Edge"来分别表示数据中心维度,和低功耗计算的端侧。从图中我们可以看到分层结构中,层层相依。互相协作。

这种定义也是现在业界对边缘计算和云计算关系所达成的一个共识。说完背景、架构,我们再看看边缘计算的趋势;我们尝试从业务、架构和规模三个维度去分析边缘计算的三大趋势∶

第一,Al、loT 与边缘计算的融合,会有种类越来越多、规模越来越大、复杂度越来越高的业务运行在边缘计算场景中,从图上我们也能看到一些非常震撼人心的数字。

第二,边缘计算作为云计算的延伸,将被广泛应用于混合云场景,这里面需要未来的基础设施能够去中心化、边缘设施自治、边缘云端托管能力,同样图上也有部分引用数字。

第三,基础设施的发展将会引爆边缘计算的增长,随着 5G、loT、音视频行业的发展,边缘计算的爆发是理所当然,去年疫情期间在线直播、在线教育行业的爆发式增长也是一个例子。

随着架构的共识形成,在落地过程中我们发现,边缘计算的规模、复杂度正逐日攀升,而短缺的运维手段和运维能力也终于开始不堪重负,那么如何去解决这个问题呢? 

云和边缘天然就是不可分割的有机整体,"云边端一体"的运维协同是目前比较能形成共识的一种方案。而作为云原生领域的从业人员,我们试着从云原生的角度来思考和解决这个问题;试想,如果"云边端一体"有云原生的加持,将会更好的加速云边融合进程。

云原生新边界——阿里云边缘计算云原生落地实践

在这个顶层架构设计下,我们抽象出了云边端协同的云原生架构:在中心(云),我们保留了原汁原味的云原生管控和产品化能力,通过云边管控通道将之下沉到边缘,使海量边缘节点和边缘业务摇身一变成为云原生体系的工作负载,通过服务流量和服务治理更好的和端进行交互;从而完成业务、运维、生态的一体化;而通过边缘云原生,我们可以获得和云上一致的运维体验,更好的隔离性,安全性以从及效率。产品落地就顺师理成章了许多。

接下来我们介绍阿里云在商业化和开源上的边缘计算云原生实践。

云原生新边界——阿里云边缘计算云原生落地实践

阿里云 ACK@Edge 主打“云端标准管控,边缘适度自治”的服务理念;“云边端”三层结构分层明显,能力协同。第一层是中心的云原生管控能力,提供标准的云原生北向接口供上层业务集成,诸如城市大脑、工业大脑、CDN PaaS,loT PaaS 等;第二层是云边运维管控通道,有多规格、软硬多链路方案来承载云边下沉管控流量和业务流量;再往下就是关键的边缘侧,我们在原生的 K8s 能力基础上叠加了类似:边缘自治、单元化管理,流量拓扑,边缘算力状态精细化检测等能力;边云协同,从而构成了一个完整的云边管控闭环;目前,这套架构已经广泛用于 CDN、loT 等领域。

那么边缘容器到底需要哪些核心能力和业务目标呢,图中所示包括∶ 四个能力,五个目标;四个能力是边缘算力管理、边缘业务容器化管理、边缘业务高可用支持和最终要实现的边缘云原生生态;从而实现边缘算力可接入、可运维,业务可管理、编排,服务高可用,业务有生态。下面对这些核心能力的设计做简单阐述。

阿里云边缘容器产品 ACK@Edge 通过内置 SD-WAN 能力实现云上云下网络互联,业务流量互通,大大提升云边协同效率和稳定性、安全性;而通过云端资源对接,实现了云上云下的资源弹性互通,提升了边缘场景下的业务弹性能力。

云原生新边界——阿里云边缘计算云原生落地实践

第二个核心能力是边缘自治能力,在云边一体架构中,运维协同是一项重要的能力,但是通常受限于云和边缘之前的网络条件,边缘需要适当的自治能力来保证业务的连续性和持续稳定运行,换句话讲就是边缘资源和边缘业务能够在脱离云端管控的条件下继续完成业务的全生命周期管理,包括创建、启停、迁移、扩缩容等。

云原生新边界——阿里云边缘计算云原生落地实践

第三个异构资源的支持比较好理解,边缘计算区别于传统中心云计算的一个标志性特征就是计算资源、存储资源种类多样、异构明显。ACK@Edge 目前支持 arm x86 cpu 架构,支持 linux、windows 操作系统,支持将 linux 应用和 windows 应用混合部署,来很好地解决边缘场景资源异构问题。

通过配合阿里云容器镜像服务,提供在边缘场景下的多地域交付能力,能够支持多种云原生制品的多地域交付,包括容器镜像,应用编排资源包等。

云原生新边界——阿里云边缘计算云原生落地实践

这里还要和大家同步一个信息,就是上述所有核心的边缘容器能力我们都开源在边缘容器平台项目 OpenYurt 中,OpenYurt 是 CNCF 的边缘容器官方项目,是一个延伸原生 Kubernetes 到边缘计算的智能开放平台项目。

作为 ACK@Edge 的核心框架,已经服务了超百万容器实例规模,并被广泛应用于主流的边缘计算场景中;在介绍完商业和开源实践后,还有几个案例和大家分享:

云原生新边界——阿里云边缘计算云原生落地实践

第一个,是盒马鲜生基于边缘云原生实现的“人货场”数字化融合转型,通过云原生体系将多种类型的边缘异构算力统一接入、统一调度,包括∶ENS(阿里公共云边缘节点服务)、线下自建边缘网关节点, GPU 节点等。获取了强大的资源弹性和业务混编带来的灵活性;并通过 ACK@Edge 提供的边缘云原生 Al 解决方案,构建云、边、端一体化协同的天眼 Al 系统,充分发挥了边缘计算就近访问,实时处理的优势,轻松实现全方位的降本提效,门店计算资源成本节省 50%,新店开服效率提升 70%。

云原生新边界——阿里云边缘计算云原生落地实践

第二个是我们在一家视频网站客户的案例,使用 ACK@Edge 来管理跨 region、跨类型、跨地域的边缘 算力,用于部署视频加速服务,通过对异构资源的支持,客户在边缘计算场景获得了强大的资源弹性能力;有一个数字分享给大家,通过边缘容器的弹性和异构资源管理能力,能够节省 50% 左右的成本。


第三个案例是 ACK@Edge 在 loT 智慧楼宇项目中的落地,其中 loT 网关设备作为边缘节点托管在 ACK@Edge 的云端管控,网关设备上的业务和楼宇的智能设备交互;网关和端设备的运维都统一收编到中心云,效率大大提升。

在和社区同学的充分讨论下,OpenYurt 社区也发布了 2021 roadmap,欢迎有兴趣的同学来一起贡献。

OpenYurt 社区 2021 roadmap:

https://github.com/openyurtio/openyurt/blob/master/docs/roadmap.md


  • OpenYurt 官网:
    https://openyurt.io

 

  • https://github.com/openyurtio/openyurt

 

  • 钉钉扫码加入社区交流群:


以上是关于云原生 | 13手把手教你搭建ferry开源工单系统的主要内容,如果未能解决你的问题,请参考以下文章

云原生⚡手把手教你搭建集群环境⚡Linux服务器集群+Docker+Kubernetes 完整集群搭建

保姆级教程!手把手教你使用Longhorn管理云原生分布式SQL数据库!

使用 Vue3 + Element Plus + Go 重构 ferry 工单系统

高效简单方便管理与维护的开源运维工单系统

超详细, 手把手教你搭建阿里云个人站点

超详细, 手把手教你搭建阿里云个人站点