阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

LVS-NAT模型实现负载均衡

435次阅读
没有评论

共计 10121 个字符,预计需要花费 26 分钟才能阅读完成。

前言

前篇文章我们主要讲解了 LVS 的理论知识,包括 LVS 来源、宗旨、三种模型的架构以及 LVS 内核空间的十种算法,今天我们来进行实践的 LVS 中三种模型中的 NAT 模型的架构以及实现方式。(实验环境以 Web 集群作为实验对象)

环境

此处我们 LVS-NAT 模型环境架构为三台 Linux 服务器, 都有以下配置。

环境架构图:

LVS-NAT 模型实现负载均衡

工作原理:

基于 NAT 机制实现。当用户请求到达 director 之后,director 将请求报文的目标地址(即 VIP)改成选定的 realserver 地址,同时将报文的目标端口也改成选定的 realserver 的相应端口,最后将报文请求发送到指定的 realserver。在服务器端得到数据后,realserver 将数据返给 director,而 director 将报文的源地址和源端口改成 VIP 和相应端口,然后把数据发送给用户,完成整个负载调度过程。

特点:

  • 所有的 realserver 和 director 要在同一个网段内
  • RIP 是私有地址,仅用于集群节点之间进行通信
  • director 同时处理请求和应答数据包
  • realserver 的网关要指向 DIP
  • 可以实现端口映射
  • readlserver 可以是任意操作系统
  • director 很可能成为系统性能瓶颈

硬件环境:

使用软件 VMware WorkStation 11,Director 的 DIP 和 RealServer 的 RS1、RS2 的 RIP 为仅主机模式,让其在同一个局域网内,Direcotr 桥接宿主机模式,方便我们后边的测试。

  • 一台 Director:

    • 版本:Red Hat Enterprise Linux Server release 6.4
    • 双网卡:
      • eth1: VIP:172.16.21.110/24(真实生产环境下一定将网关指向运营商的公网 IP)
      • eth2: DIP:192.168.91.70/24(此 IP 必须和后台的 RealSever 在同一个网段内)
  • 两台 RealServer:

    • 版本:Red Hat Enterprise Linux Server release 6.4
    • 单网卡:
      • RealServer1:RIP1:192.168.91.80/24(网关必须指向 Director 的 DIP)
      • RealServer2: RIP2:192.168.91.90/24(网关必须执行 Director 的 DIP)

软件环境:

搭建 LVS 集群只需要在 Director 服务器上安装 ipvsadmin 工具,此处我们使用 RedHat 自带的 rpm 包进行安装

  • 版本:ipvsadm-1.25-10.el6.x86_64.rpm

安装前准备

现在 LVS 已经是 Linux 标准内核的一部分,在 Linux2.4 内核以前,使用 LVS 时必须要重新编译内核以支持 LVS 功能模块,但是从 Linux2.4 内核以后,已经完全内置了 LVS 的各个功能模块,无需给内核打任何补丁,可以直接使用 LVS 提供的各种功能。

注意

  • LVS-NAT 模型的实现方式和 iptables 的 DNAT 相似,所以你懂的,Director 节点不能和 iptables 同时使用,那么会有冲突,这就是我们后面为什么要将 iptables 的规则清空的目的之一。

查看内核版本

[root@Director Packages]# uname -r  # 此处我们环境内核版本为 2.6.32-358.el6.x86_64,所以不需要再打补丁,如果你的内核低于 2.4 那么则需要提前打补丁
2.6.32-358.el6.x86_64

查看内核是否支持 ipvs

[root@Director ~]# modprobe -l | grep ipvs  # 以下有之前所解释的十个内核所支持的算法(如果能有以下搜索到那么你的内核就支持 ipvs)
kernel/net/netfilter/ipvs/ip_vs.ko
kernel/net/netfilter/ipvs/ip_vs_rr.ko
kernel/net/netfilter/ipvs/ip_vs_wrr.ko
kernel/net/netfilter/ipvs/ip_vs_lc.ko
kernel/net/netfilter/ipvs/ip_vs_wlc.ko
kernel/net/netfilter/ipvs/ip_vs_lblc.ko
kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
kernel/net/netfilter/ipvs/ip_vs_dh.ko
kernel/net/netfilter/ipvs/ip_vs_sh.ko
kernel/net/netfilter/ipvs/ip_vs_sed.ko
kernel/net/netfilter/ipvs/ip_vs_nq.ko
kernel/net/netfilter/ipvs/ip_vs_ftp.ko

配置本地 YUM 源

我们使用本地光盘来作为 YUM 源

挂载本地光盘

[root@Director ~]# mount /dev/sr0 /media  # 挂载本地光盘到本地目录
mount: block device /dev/sr0 is write-protected, mounting read-only

配置编辑 YUM 源的配置文件

三台服务器我们都需要配置,因为后面两台 RealServer 我们还需要安装 web 服务来作为集群服务。

[root@Director ~]# vim /etc/yum.repos.d/rhel-source.repo   
[localhost]   # 库名称(可随意)
name=localhost # 名称描述 (自定义)
baseurl=file:///media  # yum 源目录,源地址
enabled=1   # 是否用该 yum 源,0 为禁用,1 为使用
gpgcheck=0 # 检查 GPG-KEY,0 为不检查,1 为检查

到此我们安装前准备就做好了,来下面进行下一步

配置 DirectorServer

安装 ipvsadm 工具

[root@Director Packages]# yum install -y ipvsadm-1.25-10.el6.x86_64.rpm

配置网卡,并设置 IP

配置外网网卡 VIP

[root@Director ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1  # 此处我们不指定 GATEWAY(真实生产一定要指向 SP 给的公网 IP)
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=172.16.21.110
NETMASK=255.255.255.0

配置内网网卡 DIP

[root@Director ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth2  # 此内网网卡可不指定 GATEWAY, 因为和后台 RealServer 在同一个局域网(但也要根据真实环境而定)
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.91.70
NETMASK=255.255.255.0

重启网卡服务

[root@Director ~]# service network restart
Shutting down interface eth1:                              [OK  ]
Shutting down interface eth2:                              [OK  ]
Shutting down loopback interface:                          [OK  ]
Bringing up loopback interface:                            [OK  ]
Bringing up interface eth1:                                [OK  ]
Bringing up interface eth2:                                [OK  ]

[root@Director ~]# ifconfig  # 查看配置是否生效
eth1      Link encap:Ethernet  HWaddr 00:0C:29:E5:9A:47  
          inet addr:172.16.21.110  Bcast:172.16.21.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fee5:9a47/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6126 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4370 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:524154 (511.8 KiB)  TX bytes:753784 (736.1 KiB)

eth2      Link encap:Ethernet  HWaddr 00:0C:29:E5:9A:51  
          inet addr:192.168.91.70  Bcast:192.168.91.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fee5:9a51/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:28 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4146 (4.0 KiB)  TX bytes:2160 (2.1 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:822 errors:0 dropped:0 overruns:0 frame:0
          TX packets:822 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:93120 (90.9 KiB)  TX bytes:93120 (90.9 KiB)

打开本机的路由转发功能

[root@Director ~]# cat /proc/sys/net/ipv4/ip_forward   # 查看本地路由功能是否打开(1 开启 0 关闭)
0 
[root@Director ~]# vim /etc/sysctl.conf   # 开启本地路由转发
net.ipv4.ip_forward = 10 更改为 1 即可
[root@Director ~]# sysctl -p  # 重新加载配置文件
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

配置 RealServer 服务器

配置 RealServer1 网卡,并设置 IP

[root@RS1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.91.80
NETMASK=255.255.255.0
GATEWAY=192.168.91.70
NM_CONTROLLED=yes

重启网卡配置

[root@RS1 ~]# service network restart
Shutting down interface eth1:                              [OK]
Shutting down loopback interface:                          [OK]
Bringing up loopback interface:                            [OK]
Bringing up interface eth1:                                [OK]
[root@RS1 ~]# ifconfig  # 查看配置是否生效
eth1      Link encap:Ethernet  HWaddr 00:0C:29:41:4A:CC  
          inet addr:192.168.91.80  Bcast:192.168.91.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe41:4acc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5212 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3586 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:435875 (425.6 KiB)  TX bytes:252327 (246.4 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:129 errors:0 dropped:0 overruns:0 frame:0
          TX packets:129 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:13806 (13.4 KiB)  TX bytes:13806 (13.4 KiB)

安装 Web 服务

[root@RS1 ~]# yum install -y httpd
[root@RS1 ~]# service httpd start   # 启动 httpd 服务
Starting httpd: httpd: apr_sockaddr_info_get() failed for RS1
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [OK]
[root@RS1 ~]# service httpd status   # 查看 httpd 是否启动
httpd (pid  14114) is running...
[root@RS1 ~]# netstat -an | grep :80  # 查看 web 服务 80 端口是否监听
tcp        0      0 :::80                       :::*                        LISTEN    
[root@RS1 ~]# echo "RS1.xuxingzhuang.com" > /var/www/html/index.html  # 给 web 服务提供网页界面  
[root@RS1 ~]# curl http://localhost # 访问本地 web 是否可以正常访问
RS1.xuxingzhuang.com

清空本地防火墙策略

[root@RS1 ~]# iptables -F  

配置 RealServer2 网卡,并配置 IP

[root@RS2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.91.90
NETMASK=255.255.255.0
GATEWAY=192.168.91.70
NM_CONTROLLED=yes

重启网卡配置

[root@RS2 ~]# service network restart
Shutting down interface eth1:                              [OK  ]
Shutting down loopback interface:                          [OK  ]
Bringing up loopback interface:                            [OK  ]
Bringing up interface eth1:                                [OK  ]
[root@RS2 ~]# ifconfig  # 查看配置是否生效
eth1      Link encap:Ethernet  HWaddr 00:0C:29:9A:31:FB  
          inet addr:192.168.91.90  Bcast:192.168.91.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe9a:31fb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5749 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4646 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:457342 (446.6 KiB)  TX bytes:1052880 (1.0 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:167 errors:0 dropped:0 overruns:0 frame:0
          TX packets:167 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:17790 (17.3 KiB)  TX bytes:17790 (17.3 KiB)

安装 Web 服务

[root@RS2 ~]# yum install -y httpd
[root@RS2 ~]# service httpd start   # 启动 httpd 服务
Starting httpd: httpd: apr_sockaddr_info_get() failed for RS1
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [OK]
[root@RS2 ~]# service httpd status  # 查看 httpd 是否启动
httpd (pid  2069) is running...
[root@RS1 ~]# netstat -an | grep :80  # 查看 web 服务 80 端口是否监听
tcp        0      0 :::80                       :::*                        LISTEN    
[root@RS2 ~]# echo "RS2.xuxingzhuang.com" > /var/www/html/index.html  # 给 web 服务提供网页界面  
[root@RS2 ~]# curl http://localhost # 访问本地 web 是否可以正常访问
RS2.xuxingzhuang.com

清空本地防火墙策略

[root@RS2 ~]# iptables -F

配置 Director,并将 RealServer 加入集群服务

ipvsadm 命令的用法

管理集群服务

  • 添加:
    • -A -t|u|f service-address [-s scheduler]
    • -t: TCP 协议的集群
    • -u: UDP 协议的集群
      • service-address: IP:PORT
    • -f: FWM: 防火墙标记
      • service-address: Mark Number
  • 修改:
    • -E
  • 删除:
    • -D -t|u|f service-address

管理集群服务中的 RealServer

  • 添加:
    • -a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
    • -t|u|f service-address:事先定义好的某集群服务
    • -r server-address: 某 RS 的地址,在 NAT 模型中,可使用 IP:PORT 实现端口映射;
    • [-g|i|m]: LVS 类型
    • -g: DR
    • -i: TUN
    • -m: NAT
    • [-w weight]: 定义服务器权重
  • 修改:
    • -e
  • 删除:
    • -d -t|u|f service-address -r server-address

集群服务后续管理

  • 查看
    • -L|l
    • -n: 数字格式显示主机地址和端口
    • –stats:统计数据
    • –rate: 速率
    • –timeout: 显示 tcp、tcpfin 和 udp 的会话超时时长
    • -c: 显示当前的 ipvs 连接状况
      例:ipvsadm -L -n –stats
  • 删除所有集群服务
    • -C:清空 ipvs 规则
      例:ipvsadm -C
  • 保存规则
    • -S
      例:ipvsadm -S > /etc/sysconfig/ipvsadm
  • 载入此前的规则:
    • -R
      例:ipvsadm -R < /etc/sysconfig/ipvsadm

测试 Director 是否可以正常访问 Realserver 的服务

注意问题

  • 访问后台的 RealServer 服务我们此时使用的为 Driector 的 DIP 进行访问的,当我们将 RealServer 加入集群服务后,我们 clent 要实现访问 Driector 的 VIP 来进行访问 RealServer 的服务,务必要明白此问题。
[root@Director ~]# curl http://192.168.91.80  #看来我们 Driector 访问后台 web 服务都正常
RS1.xuxingzhuang.com
[root@Director ~]# curl http://192.168.91.90
RS2.xuxingzhuang.com

将 RealServer 加入 Web 集群服务

我们本次使用 LVS 内核 rr 调度算法来作为实验方式,还不明白 LVS 的内核调度算法的小伙伴,请查看我们上一篇 LVS 集群服务详解  http://www.linuxidc.com/Linux/2016-06/132388.htm

使用 rr 调度算法(轮叫)

[root@Director ~]# ipvsadm -A -t 172.16.21.110:80 -s rr
[root@Director ~]# ipvsadm -a -t 172.16.21.110:80 -r 192.168.91.80 -m -w 2   # 此处的 - w 指定权重是没有意义的,因为我们使用的为 rr 调度算法(轮叫), 不过你也可以指定,后边我们改变算法时就不用重新定义了,省去了时间
[root@Director ~]# ipvsadm -a -t 172.16.21.110:80 -r 192.168.91.90 -m -w 1
[root@Director ~]# ipvsadm -L -n   # 查看集群服务
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.21.110:80 rr
  -> 192.168.91.80:80             Masq    2      0          0         
  -> 192.168.91.90:80             Masq    1      0          0         
测试 web 集群服务 rr 算法

使用本机进 web 测试,要和 Director 的 VIP 在同一个网段,那么真实环境你就只要将网关指向运营商给的公网地址就可以了。

LVS-NAT 模型实现负载均衡

  • 测试结果为刷新一次,那么就会换成 RS2,明白 rr(轮叫)算法的小伙伴你懂的,这里就不多少了

更改为 wrr 调度算法(加权循环算法)

[root@Director ~]# ipvsadm -E -t 172.16.21.110:80 -s wrr  #那么此处我们使用 - E 选项来修改为调度算法为 wrr,那么前边 - w 选项指定 RealServer 的权重就生效了,那么我们就不用再对 RealServer 重新指定了
[root@Director ~]# ipvsadm -L -n  
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.21.110:80 wrr
  -> 192.168.91.80:80             Masq    2      0          0         
  -> 192.168.91.90:80             Masq    1      0          0         
测试 web 集群服务 wrr 算法

此处访问那么算法就根据我们指定了 RS1 权重为 2,RS2 的权重为 1,那么最后我们访问的结果为刷新两次访问 RS1,一个访问 RS2。

END

到这里我们就基于 LVS-NAT 模型搭建了一个 web 集群服务,这里我们就测试了两种 LVS 的内核调度算法,对于其他的八种算法配置基本一样,主要是看我们是否可以进行理解,配置都一样,后边我们将讲解 LVS-DR 模型的 LVS 集群服务的实现过程。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132387.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计10121字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7993770
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...