路由网关进不去?

大家新年好,我是大鹏。

本篇章是【all in one家庭软路由方案】系列的第一篇实操内容,主要讲如何搭建虚拟机系统环境,大鹏作为一位刚刚从新手村出来的新人,会用最详细的方式给小白们进行说明,如果你觉得细节繁琐,请快速阅读即可,本系列教程主要针对新手入门用途。

本篇章之所以在命名上是篇2,因为实际会有一篇介绍all in one的理论知识啰嗦内容作为篇1,放到最后发布吧,本系列教程预计10篇章内容左右,目的是帮助小白从一脸懵逼,到顺利离开新手村开始踏上被all in one折磨的道路。

阅读本章,你可能需要花费30分钟,但是将学会

搭建PVE虚拟系统环境;

让PVE系统接入现有局域网并连接互联网;

更新内置的软件源地址;

增加插件显示CPU温度;

将PVE安装到内置EMMC中;

设置基础网络网卡配置;

设置定期启动或关闭虚拟机;

本系列教程将采用PVE 作为底层搭建整套方案的环境,之所以选择PVE,主要考虑几点

对网卡兼容性比较好,不需要折腾驱动;

支持显卡直通功能,可以把all in one当普通电脑视频输出;

相对比较成熟,网上教程也很多;

当然PVE并不是非常完美,你所看到本系列教程中,会有很多需要通过命令行操作的功能,对新手非常不友好,但这里不过多讨论用什么底层系统作为all in one ,虽然之前采用过Hyper-V方式,不过近期我研究的方向是PVE,所以用此作为all in one 方案给大家分享, 其实PVE 只是一个底层, 我们后期关注的是虚拟机的搭建与使用。

本教程PVE 系统版本是

此时如果正常,则会显示这样的连接数据

联网不了网络的,请排查一下

网线是否有正常连接好,是否接入到管理网口;

网线是否正确链接到能上网的lan口中;

到你的路由后台看看有没有pve的设备;

测试一下自己操作的电脑是否能正常联网;

当时安装PVE的时候, DNS有没有设成有效地址;

最终的目的,都是要让PVE系统能连接外网,如果无法联网,那PVE将无法安装插件进行功能扩展。

OK ,既然连接上网络了

更换源,其实就是更换应用市场的意思,因为PVE默认的应用市场是海外的,国内无法连接,所以需要更换成国内的应用市场,大概这样意思吧

1. 登录SFTP,找到对于的文件后然后进行修改增加国内的源地址

或者用我提供的懒人包进行替代,懒人包路径

新手可以直接下载我做好的文件进行替代,我采用的是aliyun 的镜像源地址,

如果想知道具体改了什么内容,可以百度一下, 非常多的介绍,自己修改也可以

上面直接替代主要针对新手, 我已经将修改好的文件提供,可以直接替代接口,不用麻烦一个个修改

如果你的PVE版本和我的不一样,可能需要你找详细的修改说明自己修改。

3. 然后登录SSH,输入更新应用数据,这个更新大概不到一分钟吧

4. 命令行跑完后,在输入,这个更新比较久,等进度跑完就行

上面讲的是正确的更新应用商店的列表,如果没有替换国内支持的源,就会提示更新失败,如下图

4.4 增加CPU温度显示(可跳过)

增加CPU温度就是在控制面板上显示CPU的温度,这个功能看着在window是很容易实现的功能,但是在PVE上要修改一下配置才能实现,如果你不在乎,那就不用改,直接跳过。

增加接口文档中的插件接口

增加显示页面的接口显示

1. 首先要安装传感器的检测工具,登录SSH后,使用这个命令进行安装,安装很快

2. 完成完成后,需要进行扫描一次电脑的传感器,使用这个指令

检测传感器时,会提示很多次是否扫描不同类别的传感器,要在SSH上输入yes进行确定,

扫描过程比较长,窗口会一直滚动,滚动

3. 完成扫描后,进行测试一下, 输入

窗口就会反馈相关传感器的信息,也不知道为什么我这个主机只能显示这几行,不过足够了。

4. 完成上述操作,只是把温度插件安装好而已,还需要进行页面配置修改,原来的页面是没有显示温度的位置与接口,所以需要进行改动,将我提供的替代文件覆盖原路径的文件即可,

由于录屏时在3楼连接一楼的主机,所以看上去很久,因为信号不好,实际很快

用我提供的懒人包直接替代即可,如果你用的PVE版本和我不同(教程是基于PVE7.0.11),也可以根据下面自己修改

####  如果你用我提供的懒人包覆盖,那这以下这部分就跳过 ####

####  如果你用我提供的懒人包覆盖,那这以上这部分就跳过 ####

5. 最后,到SSH上,更新一下页面后台服务

6. 然后到控制面板看看,就可以显示温度了

如果操作完上面的还不显示,一般是浏览器缓存了老的前端文件,可以清除一下缓存试试,或者换个浏览器就可以;

这些操作都不用重启all in one 主机;

若你的主机主板内置了EMMC硬盘,比如之前热门的锐角云,就自带64GB EMMC,那怎么能空着不用呢,榨得一滴不剩,

传统的pve安装方式,是不支持将系统装到EMMC上的,装到一半会出错,应该是官方限制了。

没有困难的工作,只有勇敢的狗狗,

既然直接安装不行,那就用奇淫巧技,

本章节内容非必要,请根据自己的硬件进行选择

我们通过将系统安装到普通符合PVE要求的硬盘,再将该盘完全克隆到EMMC上,就能实现曲线救国的效果

1。首先安装pve系统前,要准备一个容量小于你内置EMMC的硬盘,选择有两种

主板内置的接口,M.2,sata都可以

USB接口,用,高级U盘等能在windows系统识别为磁盘而非移动存储的

Q: 为什么准备的硬盘小于EMMC容量?

A: PVE在安装时会对安装盘的容量进行自动分配分区大小,有三个分区,如果大于EMMC,那就会匹配不上。

Q: 我是土豪,没有太小的硬盘怎么办?

A: PVE安装时,选择硬盘可自定义分区大小,但需要有一点基础,我没这么操作过,所以你得去查阅相关资料尝试。

2。按照[安装PVE到硬盘]的步骤,装系统安装到上一步准备的硬盘上,流程一样;

3。拿出你的U盘,制作PE系统U盘,这里推荐的是WEPE,干净功能齐,双击制作程序选择好U盘就行;

4. 将all in one 主机关机,然后插入U盘,按照之前进入BIOS的方式,选择U盘启动,然后进入PE系统,打开PE系统自带的Diskgenius 工具进行对磁盘管理,选择【工具】,然后进入【克隆硬盘】;

5. 首先会让你选择你的源磁盘, 就是你已经安装好PVE系统,需要复制出来那个磁盘;

6. 然后会让你选择需要将PVE系统复制到哪个硬盘,我们选择内置的EMMC磁盘;

7. 最后选择克隆模式,选择【复制所有扇区】,其实3个我都试过,好像都能用;

8. 克隆硬盘完成后,将U盘拔出,并将原来已经安装好PVE那个磁盘拆除,如果不拆除,系统是无法进入的,因为开机启动项无法识别两个相同的系统;

在克隆磁盘的过程中,如果出现乱码,系统卡死,这个时候请重启再试;

如果重新操作也不行,请更换一个PE系统;

如果只是在拷贝到最后的时候提示错误,没关系,我测试过,也能正常使用;

如果这么操作都不行,就要考虑一下是不是内置EMMC 有问题;

4.6 调整硬盘(选看)

本章节建议你先看个大概,等你对PVE 的虚拟机搭建有一定了解后,再回到本篇章进行调整硬盘。

我们在安装完PVE后,系统会自动分配两个重要的分区,我们作为菜鸟,也只要认准这两个分区就行

对于local来说, 我们在前期只要保证上传的ISO,能放的下就行,最大的就是win10的,精简版有2G多,后期大家对pve有一定的了解后,可以自行设置该空间的路径到别的磁盘。

对于local-lvm来说,根据自己的硬盘容量,以及结合需要搭建的虚拟机来设定,比如用windows系统可能需要多一些,用软路由就只需要很小的空间即可。

如果是下列情况,就需要调整硬盘

使用了我推荐的安装使用64GB作为安装容量的,实际磁盘还有容量没有使用;

需要使用内置EMMC的,并且按照上面教程成功克隆PVE系统到EMMC了;

首先进入后台,点击左侧的local查看,

左侧的小图标实际已经是容量的显示,可以看磁盘已经分配不同空间,以及使用量;

1. 打开SSH 工具,先查询一下硬盘情况,输入命令

查看硬盘情况,需要记住你需要调整的磁盘盘符,虽然看到很多命令行的信息可能对新手不友好,但是小技巧是找到自己磁盘容量大小的信息,比如

/dev/sdb,这个在我的主机上是M.2接口的2280硬盘;

/dev/mmcblk0,这个在我的主机上就是主板上内置的EMMC硬盘;

这样的,记住这个路径,具体要看你的主板磁盘的接口顺序了,认真自己的容量,找到盘符即可

这个命令是查看硬盘信息的,从上图可以看到,我的主机装了两个硬盘,第一个是安装PVE系统的硬盘,本次操作对第一个进行,第二个我打算用来做存储,所以先不管,后面会直通给群晖使用。

首先要核对一下,硬盘1的总容量,看上图, 我的EMMC是58GB的,但是硬盘分区信息中,3个分区加起来还没有15GB,这是因为我首次安装的硬盘容量是16GB的,后来通过硬盘克隆全盘复制,导致有很多容量没有纳入到分区,这时候我们就需要对分区进行扩容。

2. 我们先通过SSH安装一个插件,用于管理硬盘

3. 然后输入命令,就可以用这个工具查看硬盘,确定插件正常

会返回硬盘的各种信息,

4. 接着我们正式开始扩容,输入命令,对指定的硬盘进行操作

这个/dev/mmcblk0  路径,就是最上面让你记下来的路径,其实就是在Linux系统中,硬盘的通道,输入后会提示欢迎语,如果你路径输入错误(不存在的),就不会出现这个欢迎提示

看到,LVM 就是目前你能用的容量,我们的目的是先将硬盘剩余的空间全部扩容到这个分区,这是第一步。

6. 我们通过命令将硬盘剩余没有使用的容量,分配到LVM分区上

3的意思是第三个分区,对应上图LVM 的number, 而100%就是剩余空间的100%

7. 分配完成后,我们退出这一步骤的操作

8. 分配完成后,我们来检验一下分区大小是否已经变大,输入命令

可以看到,LVM的容量已经是57GB了,3个分区加起来差不多是EMMC 的容量了,但是只完成了第一步。

但是这里还需要记住一个路径,就是我们需要扩容的空间

9. 我们还需要更新一下

这个/dev/mmcblk0p3 路径,就是上图中需要记住的路径,意思是mmcblk0硬盘中的p3分区

10. 完成了分区的扩容后,我们还需要对挂载点进行扩容,先来查看一下挂载点的名称

这里面显示出来的内容,可以在控制面板上看到的两个容器,其中对应的名称是root和data

如果你想扩容放ISO的容量,就是root

如果你想扩容放虚拟机的容量,就是data

11. 扩容前确定一下可以进行扩容的容量,其实就是检查分区的容量使用情况

可以看到,在PFree一列中,还有45GB的容量没有使用,那么我们就要对这45GB进行分配到挂载点去

12. 通过输入命令,为指定的挂载容器进行扩容

其中+10%FREE,是指要增加未使用容量的10%,即4.5G,

/dev/pve/root,是指要把这10%增加到root挂载中,对应就是放ISO和备份的地方

我的目的是能存放要安装的ISO就行, 备份什么的以后再修改路径。

13. 然后我们再扩容存放虚拟机的容器,将剩余空间都分配给data

14. 最后,我们来检验一下,输入命令进行查看容量

查看到,存放ISO 和 虚拟机的 容器,都扩容成功了,

再到到控制面板去看看,发现local-lvm扩容成功了,local还是原来的容量

15. 这个时候我们需要更新一下root的容量,输入

16. 输入完成后,就可看到容量增加了

完成对剩余空间的扩容了!

调整硬盘空间过程不需要重启,命令行进行更新即可;

对硬盘调整空间,扩容简单,减少我还没操作过;

对于新手来说,建议熟悉一下基本的虚拟机搭建后,空间不够再操作扩容吧;

4.7 添加硬盘(选看)

不是一定要添加硬盘,只有在你主机有多个硬盘,并且不准备用来直通给虚拟机用的时候,才需要进行操作添加硬盘,如果你有多硬盘,除了装系统的硬盘外,都希望直接给虚拟机用,比如群晖,不想通过PVE底层进行中转,那么不要操作本步骤的内容。

如果你在windows下,添加硬盘真是一件非常简单的事情,但是在Linux下真实对菜鸟噩梦般的操作,来照葫芦画瓢吧。

1. 进入PVE控制面板,在节点中,进入【磁盘】,看到里面除了系统盘外,有一个你插上的硬盘,记住这个路径

/dev/sda, 路径因人而异,不过大部分都是sda,sdb 之类的

不同主板,不同接口可能不同,一定要看清楚

2.  然后打开SSH, 输入管理该硬盘的命令

3.  进入了sda硬盘的操作,先输入分区命令选项

4. 然后输入分区为主分区命令选项

5. 然后输入写入命令

上述就完成了新建硬盘的分区操作,下面是要挂载

8. 然后将分区sda1,挂载到目录下,大概这个意思吧

9. 最后就是设置每次开机都挂载一次的命令,大概是写入这个命令到开启启动配置文件中;

上面操作就完成了系统级别的加硬盘,但是还差最后一步,才能使用这个硬盘

10. 回到PVE ,点击【数据中心】,【存储】,然后左上角点击【添加】,选择【目录】;

11. 然后ID可以选择自己容易记的,我的盘是NGFF的,所以直接写NGFF,最重要是目录,就写刚刚新建的挂载目录

12. 确定后,过几秒中,再左侧的树型结构上,就能看到添加的硬盘了,

13. 经过上述操作,就添加了一个硬盘了,后续在新建虚拟机的时候,硬盘选项中就可以选择用这个新硬盘的目录进行分配硬盘。

4.8 宿主机的网卡设置

对网络的设置,本篇章只是做一个准备,在未添加虚拟机之前,是用不上的,可以先跳过,等后面要添加软路由的时候再来详细看。

如果你准备单网卡使用,不作为软路由,那本章节可以忽略

PVE系统的网络概念其实是比较简单,我浅薄的理解就是,只分为真实网卡,和虚拟网卡就可以了,不想hyper V那样分内部,外部,专用网络,也不像EXSI那样对网卡驱动兼容不优化,PVE基本上是个网卡都能识别,包括我插入的USB网卡都能正确识别,不用特地折腾一次驱动。

PVE在安装后,就会自动为你新建一个虚拟网卡,并绑定好安装时选择的真实网卡,

所以你才能通过局域网正常登录PVE后台,那么在什么情况下需要配置一下网络设置呢

你需要把all in one 作为软路由,并且主机有多网口

通过查看【节点】-【网络】,就能看到网卡的列表,如下

如果你的电脑准备用来做软路由,主机是多网卡,或者准备增加USB网卡,那就需要对网络进行配置,

虽然PVE支持网卡直通,但是对于我们菜鸟来说,先用最简单的方式架设好网络才是最重要的,那么我们按照下列方式操作。

大概原理:新建虚拟网卡,并把虚拟网卡和真实网卡绑定在一起

1. 点击上方【创建】,【Linux Bridge】,新建一个虚拟网卡;

2. 填写新建的虚拟网卡桥接的端口,一定要根据真实网卡的名称填写,你的主机有多少个真实网卡,就新建多少个虚拟网卡,第一个网卡系统已经帮你创建了;

3. 最后,一定要点击【应用配置】,不然不会生效

操作完上述,网络配置就结束了,这个动作很重要,后面新建软路由虚拟机的时候,需要用的。

4.9 设置虚拟机定时任务

定时任务就是指自己设定一个时间,让虚拟机自动启动或者关闭,这种应用场景是

有些虚拟机系统,不用24小时后台跑的,只是在某个时间段使用,比如window;

有些虚拟机系统原生没有自动重启功能,想要通过底层控制定期重启一下;

说了惭愧,我实在没找到PVE 系统后台能进行设置的前端选项,只能找到参考linux系统的定时任务方法

在系统的定时任务清单中添加对虚拟机的定时任务

具体的方法是在系统目录etc/目录中,找到crontab 文件,在里面添加如下命令

上面命令中,#和后面中文只是方便注释,并不其实际作用

新手建议直接在我上面的命令后中复制修改, 或者采用在我提供的懒人包中修改后替代系统文件即可。

上述内容需要到后面的教程篇章中才会实践到,相对比较简单,不过对window这种比较吃内存的虚拟机,定时开关可以解决白天人不在,无需要window操作时的问题,等晚上到家后定期开机,睡觉定时关机这种方式,以节约all in one的内存消耗(其实卵用没,如果是8G常开也没问题了)

4.10 虚拟机的备份与恢复

辛苦摸索搭建的虚拟机如果不小心删除,或者调试崩溃后,要重新搭建是件非常痛苦的事情,好在PVE系统是支持备份与恢复的,我们来学习一下方法

备份功能已经做在了PVE 的后台控制面板上,只要登陆管理后台,即可进行备份,

1. 进入管理后台后,点击左侧【数据中心】;

2. 进入工具栏中的【备份】;

3. 选择【添加】备份任务;

选择好需要备份的自动时间,以及要备份的虚拟机即可,其它选项对于新手就默认即可,

上面完成了自动定时备份,对于新手其实还是很方便的,也可以进行立刻备份

备份后的文件,可以通过查看local空间查看到。

其备份的文件,实际路径在

可以通过SFTP工具登录查案,并下载到本地进行保存

恢复也比较简单, 在备份的空间中就有选项可以恢复

通过本机PVE进行备份的,会存储在备份目录中,直接输入恢复命令即可;

通过外部存储加载的,比如说我分享一个我备份出来的虚拟机给你,你需要导入到PVE备份目录中,然后才可以进行恢复;

自备份就是从本机备份的文件,恢复到本机

1. 如果从本机备份,先进入local空间中查看是否存在备份的文件;

2. 确定备份文件存在,并确定是否是你要的那个虚拟机ID,OK 的话记录名称全称

3.  在local空间中,找到你的备份文件,然后点击还原即可;

4. 恢复完成后,进度会显示task ok

如果是其它人员分享给你,又或者是你原来下载到本地保存的备份文件,直接在local空间是没有的, 这个时候,就需要通过SFTP工具,将备份文件上传到如下路径

上传后,在local的备份列表中刷新后即能看到,就可以进行还原操作了。

恢复的目的ID 不能与现存的虚拟机ID相同,一定要选择现在没有的ID,即不能进行覆盖恢复;

恢复会将原来备份的虚拟机所有配置进行还原,比如设置的CPU,硬盘,网络等,所以如果是从另外一个PVE主机备份而来的恢复文件,请先查阅是否配置相同,我们可以在备份列表选中后,点击【显示配置】即可查看;

可以用我提供的备份文件进行练习,把下列内容上传到pve根目录

当然如果你觉得前端操作麻烦,也可以用命令行进行还原恢复,将备份文件上到备份空间路径后,通过SSH输入命令

106代表我需要恢复出来的目标虚拟机ID

如果新手,就建议少用命令行了,因为一个字符输错就失败。

好了,上面就是本篇章的内容。

除了如何安装PVE系统外,其它其实都是可选的内容,大家根据自身的实际情况选择是否参与即可。

操作完本篇章的内容后,实际只是把底层环境搭建好而已,并不能投入到家庭网络中使用

后面还会更新的内容,或许你可以等整个系列都更新后,再选择是否搭建一套属于你的all in one。

软路由ikuai虚拟机搭建基础网络路由服务;

windows虚拟机搭建与显卡直通输出;

openwrt 旁路由搭建实现增强型网络功能;

群晖7.0 NAS系统搭建,硬盘直通与photos人脸识别;

AdGaurd 广告拦截服务搭建;

Docker应用实例(网站建设、撸京豆等);

快过年了,不要再讨论什么NAS、HTPC、软路由了。

你带你的傻大黑粗机箱回到家并不能给你带来任何实质性作用,朋友们兜里掏出一大把钱吃喝玩乐,你默默的在家里摆弄你的破黑群晖。

亲戚朋友吃饭问你收获了什么,你说我组了一个RAID 0的ALL IN ONE,亲戚们懵逼了,你还在心里默默嘲笑他们,笑他们不懂你的黑群,不懂你的内网穿透,也笑他们看还要忍受会员专属广告。你父母的同事都在说自己的子女一年的收获,儿子买了个房,女儿买了个车,姑娘升职加薪了,

你的父母默默无言,说我的儿子装了个黑盒子,开起来嗡嗡响、家里电表走得越来越快了

本文截稿于2022年春节大年初一 

好在我提倡的是mini主机哈。

同时为了应对业务的细分以及高并发的挑战,微服务的架构被广泛使用,由于微服务架构中应用会被拆分成多个服务。

为了方便客户端对这些服务的调用于是引入了 API 的概念。今天我们就来看看API 网关的原理以及它是如何应用的。

网关一词最早出现在网络设备,比如两个相互独立的局域网之间通过路由器进行通信, 中间的路由被称之为网关。

落实在开发层面来说,就是客户端与微服务系统之间存在的网关。从业务层面来说,当客户端完成某个业务的时候,需要同时调用多个微服务。

如图 1 所示,当客户端发起下单请求需要调用:商品查询、库存扣减以及订单更新等服务。
图1 :API 网关加入前后对比

如果这些服务需要客户端分别调用才能完成,会增加请求的复杂度,同时也会带来网络调用性能的损耗。因此,针对微服务的应用场景就推出了 API 网关的调用。

在客户端与微服务之间加入下单 API 网关,客户端直接给这个 API 网关下达命令,由于后者完成对其他三个微服务的调用并且返回结果给客户端。

从系统层面来说,任何一个应用系统如果需要被其他系统调用,就需要暴露 API,这些 API 代表着的功能点。

正如上面下单的例子中提到的,如果一个下单的功能点需要调用多个服务的时候,在这个下单的 API 网关中就需要聚合多个服务的调用。

这个聚合的方式有点像设计模式中的门面模式(Facade),它为外部的调用提供了一个统一的访问入口。

不仅如此,如图 2 所示,API 网关还可以协助两个系统的通信,在系统之间加上一个中介者协助 API 的调用。
图 2:对接两个系统的 API 网关

从客户端类型层面来说,为了屏蔽不同客户端调用差异也可以加入 API 网关。

如图 3 所示,在实际开发过程中 API 网关还可以根据不同的客户端类型(iOS、Android、PC、小程序),提供不同的 API 网关与之对应。
图 3:对接客户端和服务端的 API 网关

由于 API 网关所处的位置是客户端与微服务交界的地方,因此从功能上它还包括:路由,负载均衡,限流,缓存,日志,发布等等。

API 网关的定义中我们提到了为什么要使用 API 网关,是为了解决客户端对多个微服务进行访问的问题。

由于服务的切分导致一个操作需要同时调用多个服务,因此为这些服务的聚合提供一个统一的门面,这个门面就是 API 网关。

针对于 API 网关有很多的实现方式,例如:Zuul,Kong 等等。这里我们以及 Spring Cloud Gateway 为例展开给大家介绍其具体实现。

一般来说,API 网关对内将微服务进行集合,对外暴露的统一 URL 或者接口信息供客户端调用。

那么客户端是如何与微服务进行连接,并且进行沟通的,需要引入下面几个重要概念 。
图 4:路由、断言和过滤器

①路由(Route):任何一个来自于客户端的请求都会经过路由,然后到对应的微服务中。

每个路由会有一个唯一的 ID 和对应的目的 URL。同时包含若干个断言(Predicate)和过滤器(Filter)。

说白了就是进行一次或者多次 if 判断,如果匹配成功则进行下一步处理,否则断言失败直接返回错误信息。

③过滤器( Filter):简单来说就是对流经的请求进行过滤,或者说对其进行获取以及修改的操作。注意过滤器的功能是双向的,也就是对请求和响应都会进行修改处理 。

将组成的上下文信息传递到 DispatcherHandler 组件。DispatcherHandler 作为请求分发处理器,主要负责将请求分发到对应的处理器进行处理。

路由断言处理映射器用于路由的查找,以及找到 路由后返回对应的 FilteringWebHandler。

其负责组装 Filter 链表并执行过滤处理,之后再将请求转交给应用服务,应用服务处理完后,最后返回 Response 给客户端 。

这里需要注意的是由于 Filter 是双向的所以,当客户端请求服务的时候,会通过 Pre Filter 中的 Filter 处理请求。

当服务处理完请求以后返回客户端的时候,会通过 Post Filter 再进行一次处理。

我们会根据基本路由、权重路由、限流、动态路由几个方面给大家展开介绍。

基本路由,主要功能就是在客户端请求的时候,根据定义好的路径指向到对应的 URI。这个过程中需要用到 Predicates(断言)中的 Path 路由断言处理器。

首先在 POM 文件中加入对应的依赖,如下:

同样上面的功能也可以在 yml 文件中实现。配置文件如下,说白了就是对 Path 和 URI 参数的设置,实现的功能和上面代码保持一致。

uri: ”这个网站。这个配置起来很简单,有 Nginx 基础的朋友应该很快就能上手。

这个使用场景相对于上面的简单路由要多一些。由于每个微服务发布新版本的时候,通常会保持老版本与新版版同时存在。

然后通过网关将流量逐步从老版本的服务切换到新版本的服务。这个逐步切换的过程就是常说的灰度发布。

此时,API 网关就起到了流量分发的作用,通常来说最开始的老版本会承载多一些的流量,例如 90% 的请求会被路由到老版本的服务上,只有 10% 的请求会路由到新服务上去。

从而观察新服务的稳定性,或者得到用户的反馈。当新服务稳定以后,再将剩下的流量一起导入过去。
图 6:灰度发布,路由到新/老服务

如下代码所示,假设 API 网关还是采用 8080 端口,需要针对两个不同的服务配置路由权重。因此在 routes 下面分别配置 service_old 和 service_new。

Json 中配置的内容和简单路由配置的内容非常相似。设置了 Route,当 Predicates 为 baidu 的时候,将请求引导到 的网站进行响应。

此时再通过访问 的路径访问的时候,就会被路由到 的网站。

此时如果需要修改路由配置,可以通过访问 的 API 接口,通过 Post 方式传入 Json 结构,例如:

在更新完成以后,再访问 的时候就会把引导到 的网站了。

通过上面四步操作,即使不重启 Spring Cloud Gateway 服务也可以动态更改路由的配置信息。

由于微服务的盛行,API 网关悄然兴起。针对 API 网关本身讲述了其存在的原因,它不仅提供了服务的门面,而且可以协调不同的系统之间的通讯以及服务不同的客户端接口。

针对 API 网关的最佳时间 Spring Cloud Gateway 的定义和概念的解释,其实现了路由、过滤器、断言,针对不同的客户端请求可以路由到不同的微服务,以及其中几个组件是如何分工合作完成路由工作的。

在最佳实践的介绍中分别从:基本路由、权重路由、限流和动态路由几个方面进行了阐述。


如何构建高并发架构?请关注我的专栏

我要回帖

更多关于 为什么无法登录网关 的文章

 

随机推荐