继续研究OVS和OVN,又装了OVN,有一点眉目了。
你用 OVN 的时候,ovs-vsctl show 里一般是看不到 Controller 字段的,因为:
在传统 OVS + OpenFlow 模式下,ovs-vswitchd 需要连接一个 OpenFlow 控制器(controller 字段会显示 IP/端口)。
而在 OVN 模式 下,OVS 并不是直接对接 OpenFlow 控制器,而是通过 OVN 控制平面(ovn-controller 进程) 跟 OVN Southbound DB 交互,然后由 OVN 负责生成 OpenFlow 流表并下发到 OVS。
所以 OVS 自己的数据库里不需要 controller 配置项,它会显示为“没有 Controller 字段”。
有些问题方面GPT比Gemini好一点。
https://engineering.fyi/ 和我在七月底的一个想法一样,但是我还停留在初始化阶段。
北半球三大流星雨来袭,西安太子山。
# 启用单播模式
unicast_src_ip 192.168.1.10 # 本地服务器的IP地址
unicast_peer {
192.168.1.11 # 备用服务器的IP地址
192.168.1.12 # 如果有更多备用机,依次添加
}
原来还有这东西 /etc/hosts.allow 文件是 Linux 系统中一个用于 控制网络服务访问权限 的重要配置文件。它与另一个文件 /etc/hosts.deny 协同工作,共同构成了 TCP Wrappers 访问控制机制。
安装harbor,安装pg,安装clickhouse,感觉这些东西就装的时候能记住,装完了就全部忘记了。
看到了这个项目,ruby写的还没有试过,https://github.com/ubicloud/ubicloud
阿里云的ack 新增了 ai profiling 的功能,需要python 编译的时候加上USDT,UI居然也支持 perfetto
了解到有 vaultwarden 这个密码管理管理工具,Bitwarden 的另一个服务端实现,还可以用于ssh,ssh agent还没有配过。
vaultwarden 生成的ssh密钥好像不能修改?
又遇到了容器过一段时间自动退出,exitCode: 0 的问题,回忆一下想起来了之前cgroup driver的问题,秒解决。
ansbile playbook中有很多重复的步骤,如何优化?看的有用 include 的。
Harbor 高可用之 PostgreSQL 的主从流复制(Streaming Replication)。
rsync -avh --delete user@db-1:/data/registry/ /path/to/local/destination/
命令解析:
rsync: 命令本身。
-a (archive): 归档模式,强烈推荐。它相当于 -rlptgoD 的集合,能保留文件的大部分属性(权限、时间戳、所有者、软链接等)。
-v (verbose): 显示详细的同步过程,方便调试。
-h (human-readable): 以人类可读的格式显示文件大小(如 1.2K, 3.4M)。
user@db-1:/data/registry/: 这是源地址。
user: 你用来登录 db-1 的用户名。
db-1: 源服务器的主机名或 IP 地址。
:: 分隔主机和路径。
/data/registry/: 要同步的源目录。结尾的 / 非常重要,它表示“同步该目录的内容”,而不是目录本身。
/path/to/local/destination/: 这是目标地址,即你希望将文件保存在本机的哪个目录下。请替换成你的实际路径,例如 /opt/backups/registry/。
systemd 提供了非常丰富的条件检查选项,让你能精确地控制服务何时启动。除了你提到的 ConditionPathExists 和 ConditionKernelCommandLine,还有很多其他常用的检查项。
文件和路径相关的检查 ConditionPathExistsGlob=:和 ConditionPathExists 类似,但支持通配符(glob pattern),比如 ConditionPathExistsGlob=/var/log/*.log。
ConditionPathIsDirectory=:检查指定的路径是否存在且是一个目录。
ConditionPathIsSymbolicLink=:检查指定的路径是否存在且是一个符号链接。
ConditionPathIsMountPoint=:检查指定的路径是否存在且是一个挂载点。
ConditionFileNotEmpty=:检查指定路径是否存在且是一个非空文件。
ConditionDirectoryNotEmpty=:检查指定路径是否存在且是一个非空目录。
ConditionPathIsReadWrite=:检查指定路径所在的文件系统是否可读写。
系统状态相关的检查 ConditionVirtualization=:检查系统是否在虚拟化环境中运行,比如 KVM, Docker, LXC 等。你可以指定具体的类型,例如 ConditionVirtualization=container。
ConditionACPower=:检查系统是否连接了交流电源,或者只靠电池供电。
ConditionHost=:检查主机名是否匹配。
ConditionKernelVersion=:检查内核版本是否满足特定条件,例如 ConditionKernelVersion=>5.4。
ConditionSecurity=:检查系统是否启用了特定的安全功能,比如 SELinux 或 AppArmor。
ConditionArchitecture=:检查系统架构,比如 ConditionArchitecture=x86-64。
ConditionCapability=:检查系统是否具有特定的 Linux 能力(capability)。
ConditionFirstBoot=:检查系统是否正在首次启动(例如安装后第一次开机)。
否定检查 所有这些条件都可以在前面加上感叹号 ! 来取反。比如:
ConditionPathExists=!/etc/my-service/config.conf:只有当 /etc/my-service/config.conf 这个文件不存在时,服务才会启动。
ConditionVirtualization=!container:只有当系统不在容器中运行时,服务才会启动。
生活
拍星星还是有点难的,肉眼看不到,需要后期,忽然想到照片编辑也是一个很神奇的东西。