0%

背景

接上文 浙江电信 IPTV 单线复用

为啥我又开始折腾这个。。。主要看到大佬(土豪)分享的 ubnt 全家桶方案,其中 SSID 绑定 VLAN 这个可以显著提高安全性。
出于设备利旧(穷)的考虑,得折腾下RT_AC86U。。。不搞懂原理是配不出来的。。。

AC86U 用的博通方案,配置各种水土不服。从之前图形配置还是很难理解这个网络怎么打通的。
参考大佬资料,固件里面也没有 robocfg 命令,配置 VLAN 需要使用 vlanctl 指令。

阅读全文 »

场景

  • 单线复用
  • 客厅轻度 IPTV 使用,无其他设备观看需求

这个配置模式在去年搬家时候就调通了,后来一直没怎么使用,现在对网络配置有新的想法就扒出来做点分享。

设备

  • HG6201T
  • RT-AC86U
阅读全文 »

问题现象

可靠性验证时,发现大约存在 1/2000 概率存在 节点 NotReady ,并且不可自愈问题
kubelet 报 use of closed network connection

现象

  • 节点NotReady
  • kubelet 日志始终打印 use of closed network connection

初步定位像连接复用没有释放
一顿搜索,关联到社区 issue https://github.com/kubernetes/kubernetes/issues/87615
看起来就是 golang 的对 h2 处理的 bug

处理方式

修复也简单,手动重启 kubelet 即可恢复
主要担心其他服务用 client-go 的,可能也有问题,连不上不自愈,但是静默了

方案 1 : 各服务添加环境变量 DISABLE_HTTP2=true, 关闭 http2

  • 影响是,http1.1 模式下建链更多,会影响管理面负载
  • 多个服务涉及修改

方案 2 : http2 中进行规避

一番定位后,找到在 golang.org/x/net/http2/transport.go 里,下面位置是错误返回的地方

1
2
3
4
5
6
upgradeFn := func(authority string, c *tls.Conn) http.RoundTripper {
addr := authorityAddr("https", authority)
if used, err := connPool.addConnIfNeeded(addr, t2, c); err != nil {
go c.Close()
return erringRoundTripper{err} <--- "use of closed network connection" rised
}

通过调试,发现此处一旦发生该错误,就无法正常工作了,由此也就有了下面修改代码
一旦一个 RoundTripper 反复失败,就退出进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
type exitedRoundTripper struct{
err error
count int
}

func (e *exitedRoundTripper) RoundTrip(*http.Request) (*http.Response, error) {
if e.count >10 {
os.Exit(1)
}
e.count ++
return nil, e.err
}

upgradeFn := func(authority string, c *tls.Conn) http.RoundTripper {
addr := authorityAddr("https", authority)
if used, err := connPool.addConnIfNeeded(addr, t2, c); err != nil {
go c.Close()
return &exitedRoundTripper{err: err,countter: 0} <--
}

证书内容

常用就是x509 解证书看内容

1
openssl x509 -noout -in ca.cer -text

其他的证书生成,走 cfssl 工具

Let’s Encrypt DNS 模式认证

阅读全文 »

python

pip 源

linux

1
2
3
4
5
6
7
mkdir -p ~/.pip
tee ~/.pip/pip.conf<<EOF
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
trusted-host=mirrors.aliyun.com
[install]
EOF

windows

1
2
3
4
5
6
7
mkdir -p ~/pip
tee ~/pip/pip.ini<<EOF
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
trusted-host=mirrors.aliyun.com
[install]
EOF

Git

密码中特殊字符

1
2
!   #   $    &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]
%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D
阅读全文 »

Linux cgroup

全文基于 CentOS 7.4

cgroup 是 Linux kernel 的一项功能,用来做资源限制的
systemd 是管理进程的
cgroup 层级系统+ systemd 可以把资源管理设置从进程级别移至应用程序级别

本文首先将介绍如何在systemd 中对应用做资源限制
然后介绍如何手动配置 cgroup

阅读全文 »

Linux 网络虚拟化

本文主要记录Linux 中网络虚拟化,以及基本的配置

全文基于 CentOS 7.4

阅读全文 »

SR-IOV 网卡直通

SR-IOV是一种基于硬件的虚拟化方案。用来使一个PCIe的物理设备,能虚拟出多个设备。

SR-IOV 中的两种新功能类型是:

  • 物理功能 (Physical Function, PF)
    包括管理SR-IOV功能在内的所有PCIe function

  • 虚拟功能 (Virtual Function, VF)
    VF 是一种轻量级 PCIe 功能,VF 仅允许拥有用于其自身行为的配置资源。

每个 SR-IOV 设备都可有一个物理功能 (Physical Function, PF),并且每个 PF 最多可有 64,000 个与其关联的虚拟功能 (Virtual Function, VF)。PF 可以通过寄存器创建 VF,这些寄存器设计有专用于此目的的属性。

一旦在 PF 中启用了 SR-IOV,就可以通过 PF 的总线、设备和功能编号(路由 ID)访问各个 VF 的 PCI 配置空间。每个 VF 都具有一个 PCI 内存空间,用于映射其寄存器集。VF 设备驱动程序对寄存器集进行操作以启用其功能,并且显示为实际存在的 PCI 设备。创建 VF 后,可以直接将其指定给 IO 来宾域或各个应用程序(如裸机平台上的 Oracle Solaris Zones)。此功能使得虚拟功能可以共享物理设备,并在没有 CPU 和虚拟机管理程序软件开销的情况下执行 I/O。

阅读全文 »

TOC

  • IP SAN 设备配置简介
  • CentOS 7 使用 iSCSI 连接设备
  • K8S 使用 iSCSI 作为pv后端
  • CentOS 7 使用 NFS 连接设备
  • K8S 使用 NFS 作为pv后端
阅读全文 »