上一页 1 2 3 4 5 6 ··· 14 下一页

bazel的helloworld

摘要: 代码 tong@T17 ~/S/e/bazeltest> tree . ├── main │ ├── BUILD │ └── main.cc └── MODULE.bazel 2 directories, 3 files tong@T17 ~/S/e/bazeltest> cat main/BUIL 阅读全文
posted @ 2025-05-13 10:15 toong 阅读(30) 评论(0) 推荐(0)

gdb envoy找不到源代码的原因

摘要: 现象 正常bazel编译之后gdb找不到源码 原因 原因是因为envoy默认编译的时候启用了fission选项,在配置文件.bazel里 fission选项的意思是:从.o文件中分离debuginfo到.dwo文件中从而减少link时候内存消耗,加快link的速度。 https://gcc.gnu. 阅读全文
posted @ 2025-05-12 20:37 toong 阅读(36) 评论(0) 推荐(0)

小白的golang小例子

摘要: 这个代码build报错 tong@T17 ~/g/s/test [1]> ls go.mod main.go package_a.go test* tong@T17 ~/g/s/test> cat go.mod module test go 1.22.2 tong@T17 ~/g/s/test> c 阅读全文
posted @ 2025-05-09 15:44 toong 阅读(55) 评论(0) 推荐(0)

networkmanager为device添加一个connection

摘要: 给虚机新增了一个网卡, nmcli device能查看到网卡 nmcli connect查看不到配置, 所以无法被管理。使用如下命令新增一个connect,之后就可以被networkmanager管理了 nmcli c add typt ethernet ifname enp0s8 con-name 阅读全文
posted @ 2025-04-28 11:22 toong 阅读(59) 评论(0) 推荐(0)

envoy源代码分析(五)--从配置开始

摘要: 配置 配置文件示例 node: cluster: tong-cluster id: tongxxtongxxtongxxahaha dynamic_resources: ads_config: api_type: DELTA_GRPC transport_api_version: v3 grpc_s 阅读全文
posted @ 2025-04-27 22:06 toong 阅读(10) 评论(0) 推荐(0)

envoy源代码分析(四)--xDS配置API

摘要: 概述 envoy配置分三种方式 文件,xDS,restful xDS 分两个维度,四种组合 全量或者增量更新,单流或者多流更新。 在1.34.0里,只支持v3 API, v2已经废弃了。 全量发现请求 service.discovery.v3.DiscoveryRequest 全量发现响应 serv 阅读全文
posted @ 2025-04-24 21:41 toong 阅读(5) 评论(0) 推荐(0)

systemd服务存活依赖

摘要: 一个服务需要在另一个服务退出后跟着一起退出 使用 BindsTo=nginx.service 例子 [Unit] Description=edge Wants=network-online.target After=network.target docker.service BindsTo=ngin 阅读全文
posted @ 2025-04-22 15:12 toong 阅读(48) 评论(0) 推荐(0)

envoy源代码分析(三)--主框架概览

摘要: 线程模型 控制worker与CPU绑定的参数 --concurrency <int> 每一个worker有一个对应的grpcGoogleClient线程,用于线程间通信的IPC线程。本系列的后篇会详细介绍。 动态变更之后,进程线程不变 初始化 官网的初始化过程介绍:https://www.envoy 阅读全文
posted @ 2025-04-11 18:34 toong 阅读(4) 评论(0) 推荐(0)

emacs 支持C++

摘要: 用 eglot https://github.com/joaotavora/eglot emacs自带了 server端可以用clangd 也可以用 ccls 安装 clangd https://clangd.llvm.org/installation.html sudo apt-get insta 阅读全文
posted @ 2025-04-08 21:25 toong 阅读(222) 评论(0) 推荐(0)

envoy源代码分析(二)--用bazel编译

摘要: bazel的官方文档和手册:https://bazel.build/docs/user-manual?hl=zh-cn#bazel-run-options 最好看英文:https://bazel.build/versions/7.6.0/reference/command-line-referenc 阅读全文
posted @ 2025-04-02 15:36 toong 阅读(8) 评论(0) 推荐(0)

envoy源代码分析(一)--从零开始

摘要: 什么是envoy 是七层代理,是通信中间层,是服务网关的sidecar。 更多看这里:https://www.envoyproxy.io/docs/envoy/latest/intro/what_is_envoy 官方安装方法:https://www.envoyproxy.io/docs/envoy 阅读全文
posted @ 2025-03-27 21:08 toong 阅读(12) 评论(0) 推荐(0)

tengine源代码分析(五)-- 全景图

摘要: 最后汇总一个全景的流程图,有些局部在前文中已经发过了。 HTTP 控制器 tengine-ingress STREAM 阅读全文
posted @ 2025-03-21 17:16 toong 阅读(13) 评论(0) 推荐(0)

tengine源代码分析(四)-- stream(tcp/udp)

摘要: 简述 从本系列的第一篇文章可知,stream需要 stream_lua_nginx_module,他是ngx_http_lua_module的一个port。 https://github.com/openresty/stream-lua-nginx-module 因为是port的http,所以冗余或 阅读全文
posted @ 2025-03-21 12:02 toong 阅读(21) 评论(0) 推荐(0)

tengine源代码分析(三)-- ngx_ingress_module

摘要: proxy_upstream_name 我们从这个变量开始,见图: 通过阅读代码发现,该变量被balancer.lua使用: 通过上边的代码,参考上一篇里边的那张balancer的逻辑图,我们能够确定,程序到达这里时,router的选取过程已经结束, 故能够判断出,变量ingress_router_ 阅读全文
posted @ 2025-03-20 15:56 toong 阅读(20) 评论(0) 推荐(0)

openresty + nginx 的http listen端口热变更开发方案

摘要: 现在AI都能出方案了,而且貌似有点靠谱。(别当真) BY deepseek @ yuanbao.tencent.com 在不进行任何 reload 操作的前提下,我们可以通过 ​动态流式监听 和 ​用户态协议栈 实现零中断的端口管理。以下是基于 OpenResty 的高级实现方案: 一、核心架构设计 阅读全文
posted @ 2025-03-20 15:19 toong 阅读(17) 评论(0) 推荐(0)

tengine源代码分析(二)--连接配置与C程序的LUA

摘要: 接前文: tengine源代码分析之编译运行 现在分析,前文中的运行时配置文件,该部分嵌入了控制业务逻辑的LUA代码,也是LUA在nginx中的入口。 本文从此次作为入口,也会涉及到nginx内的代码实现,包括ngx_http_lua模块, ngx_http_ingress模块等。 块:init_b 阅读全文
posted @ 2025-03-14 22:06 toong 阅读(23) 评论(0) 推荐(0)

tengine独立编译运行方法-不依赖k8s+ingress环境

摘要: 本文为内容提要,详细的分析拆解过程详见: k8s tengine代码分析之编译运行 概述 依赖openresty openresty-luajitlua-resty-corengx_http_lua_modulestream-lua-nginx-modulengx_http_upstream_dyn 阅读全文
posted @ 2025-03-14 11:02 toong 阅读(31) 评论(0) 推荐(0)

nginx配置文件格式化工具

摘要: 有时候nginx配置文件太大,格式混乱不太好看。 https://github.com/slomkowski/nginx-config-formatter 0 安装方法见项目主页。 1 还可以,挺好用的。 2 pip 安装不好用。 3 lua的格式会乱,不过也还行。 阅读全文
posted @ 2025-03-11 20:51 toong 阅读(712) 评论(0) 推荐(0)

tengine源代码分析(一)-- 组件分析与编译运行

摘要: tengine代码树里的ngx_http_lua_module就是openresty的lua-nginx-module 看它的readme:https://github.com/alibaba/tengine/blob/master/modules/ngx_http_lua_module/READM 阅读全文
posted @ 2025-03-10 22:01 toong 阅读(60) 评论(0) 推荐(0)

tmux调整窗口大小

摘要: 方法一,使用快捷键,但是ssh调整之后有可能因为键被占用等原因,不好使 调整窗格大小: 向上/向下调整:按 Ctrl+b 然后按 Ctrl+上箭头 或 Ctrl+下箭头 可以增加或减少当前窗格的高度。 向左/向右调整:按 Ctrl+b 然后按 Ctrl+左箭头 或 Ctrl+右箭头 可以增加或减少当 阅读全文
posted @ 2025-03-05 14:05 toong 阅读(2125) 评论(0) 推荐(0)

tengine-ingress 源代码分析

摘要: 代码流程图 tengine-ingress包含:controller,lua脚本,nginx程序三部分,下图为controller的代码流程图: 文档 tengine文档很少,但是他兼容ingress-nginx, 所以ingress-nginx的文档,就是它的文档: https://kuberne 阅读全文
posted @ 2025-03-04 22:08 toong 阅读(31) 评论(0) 推荐(0)

k8s查看镜像内容的方法

摘要: 查看 使用ctr工具在namespace下查看镜像名称 ctr ns list ctr -n k8s.io images ls |grep ingress-nginx 挂载 ctr -n k8s.io images mount registry.k8s.io/ingress-nginx/contro 阅读全文
posted @ 2025-02-27 15:36 toong 阅读(365) 评论(0) 推荐(0)

k8s安装ingress-nginx/tengine-ingress

摘要: 背景 要先会各种概念,node,pods,service 术语 ingress:指定是k8s的用户业务语境,描述用户的业务流量经过的一个转发环节。是用户视角。 术语 ingress-controller:指定是k8s的实现架构语境,指k8s作为一个基础设施,他的一个组件的名称。 文档 从0到1:k8 阅读全文
posted @ 2025-02-26 19:05 toong 阅读(48) 评论(0) 推荐(0)

使用iptables把linux配置成nat网关的方法

摘要: 1 开启端口转发 sysctl -w net.ipv4.ip_forward=1 2 允许防火墙端口转发 iptables -A FORWARD -i enp0s3 -o enp0s8 -j ACCEPT iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCE 阅读全文
posted @ 2025-02-21 14:40 toong 阅读(178) 评论(0) 推荐(0)

ubuntu网络的配置方法

摘要: 一直用CentOS和archlinux, 主要的配置方式是:network.service,NetworkManger,netctl。 但ubuntu是全新的配置方式,netplan 参考:https://linux.fasionchan.com/zh_CN/latest/administratio 阅读全文
posted @ 2025-02-21 13:27 toong 阅读(190) 评论(0) 推荐(0)

k8s集群从0到1安装部署

摘要: 文档 两个官方文档, 一个是官方教程:https://kubernetes.io/docs/tutorials/ 另一个是生产环境安装手册:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ 教程里建议用学习环 阅读全文
posted @ 2025-02-18 16:15 toong 阅读(165) 评论(0) 推荐(0)

docker查看镜像内容

摘要: 使用命令: docker run -it --entrypoint sh 251ce211cf31 如图示: 阅读全文
posted @ 2025-02-14 17:53 toong 阅读(35) 评论(0) 推荐(0)

技术调查:lb与ingress与service mesh与云原生与k8s

摘要: 总之你可以把服务网格作为 OSI 模型中的会话层。也就是L5。 我们将在云原生应用程序中考虑弹性的两个主要方面:为失败设计和优雅降级。 知道应用程序可能失败的每种方式是不可能的。假设任何事情都可能并且可能会失败,这是一种云原生应用程序的模式。 云原生是关于不需要人类做出决定的自治系统。它仍然使用自动 阅读全文
posted @ 2025-02-10 16:59 toong 阅读(63) 评论(0) 推荐(0)

linux vrf使用

摘要: 定义 vrf是一个网口设备,绑定了一张路由表。 然后“奴役”另一个网口设备。 A VRF device is created with an associated route table. Network interfaces are then enslaved to a VRF device 参考 阅读全文
posted @ 2025-02-08 17:04 toong 阅读(368) 评论(0) 推荐(0)

linux 169.254的路由是从哪来的

摘要: CentOS 8 查看路由表,能看见在每个物理口上,有条169.254的路由。 169.254.0.0/16 dev enp0s8 scope link metric 1006 可以看见是network.servcie这个服务加的 使用脚本:/etc/sysconfig/network-script 阅读全文
posted @ 2025-02-06 14:33 toong 阅读(248) 评论(0) 推荐(0)

linux kernel 学习笔记

摘要: 主要是这书:《linux内核设计与实现》还有几本别的 自下而上子系统: 系统调用 | IPC 内存管理 | 虚拟文件系统 | 网络协议栈 进程调度 | 中断调度 | 同步/timer ## 指令/汇编 | ## 设备驱动 boot: 0x7C00/保护模式 > 分段/分页,物理地址/逻辑地址/虚拟地 阅读全文
posted @ 2025-01-27 18:13 toong 阅读(76) 评论(0) 推荐(0)

nginx defer_accept 分析

摘要: netstat发现很多TCPDeferAcceptDrop的统计 nignx的listen配置里设置了defered选项。 查看代码发现是设置了listen socket的TCP_DEFER_ACCEPT的选项。 /nginx/src/core/ngx_connection.c::ngx_confi 阅读全文
posted @ 2025-01-23 18:55 toong 阅读(54) 评论(0) 推荐(0)

TCP状态机

摘要: 留张图备查。随记随忘随忘随记 阅读全文
posted @ 2025-01-23 15:28 toong 阅读(22) 评论(0) 推荐(0)

linux kernel端口耗尽优化

摘要: bind()源ip之后,分配端口会有端口耗尽问题。 linux kernel 如何bind() VRF端口上的源IP perf看到如下图: 在bind的时候因为还没有目的ip和port,所以可用端口会很少。 socketopt IP_BIND_ADDRESS_NO_PORT 会把分配端口延后至con 阅读全文
posted @ 2025-01-21 17:28 toong 阅读(73) 评论(0) 推荐(0)

linux kernel tcp丢包分析

摘要: 现象 使用netstat -s 能看见如下丢包统计 1352910 failed connection attempts 1352910 resets received for embryonic SYN_RECV sockets 查看netstat的代码 https://sourceforge.n 阅读全文
posted @ 2025-01-16 19:12 toong 阅读(130) 评论(0) 推荐(0)

syslog转存nginx日志的简单配法

摘要: 命令 单独启动一个独立的rsyslog进程 rsyslogd -i /root/tong1/rsyslogd/pid -f /root/tong1/rsyslogd/rsyslogd.conf 配置文件 module(load="imuxsock") input(type="imuxsock" So 阅读全文
posted @ 2025-01-14 17:51 toong 阅读(102) 评论(0) 推荐(0)

linux kernel 如何bind() VRF端口上的源IP

摘要: 前文 linux kernel bind()时发生了什么 讲了bind()的实现机制。 今天,我用bind()绑定一个VRF上的源IP,发生如下报错: bind(11.1.1.64) failed (99: Cannot assign requested address) 经过分析kernel代码, 阅读全文
posted @ 2025-01-10 14:20 toong 阅读(97) 评论(0) 推荐(0)

emacs cscope linux kernel 找不到符号的一种原因

摘要: 当阅读linux内核代码时,我一般使用emacs + cscope, 但是今天发生了找不到符合的问题。 cscope can not find symbol function sock_setbindtodevice 找了半天原因,重建了很多次索引库,都不行。但是egrep就可以正常找到。 最后发现 阅读全文
posted @ 2025-01-10 12:20 toong 阅读(60) 评论(0) 推荐(0)

linux内核快速找到系统调用的入口

摘要: 以函数 setsockopt 为例。 查找关键字SYSCALL_DEFINE,再查找函数名setsockopt egrep -R "SYSCALL_DEFINE.\(setsockopt" ./ 就在文件 ./net/socket.c 的 2097 行。 阅读全文
posted @ 2025-01-10 11:54 toong 阅读(87) 评论(0) 推荐(1)

linux kernel bind()时发生了什么

摘要: 配置 实验一下,我有两个口lo和enp0s3, 两个地址,如下所示。 真实物理口测试 访问同子网的10.0.2.2 如果没有地址,返回:Cannot assign requested address,说明bind失败了。 lo口测试 访问loopback地址127.0.0.1 如果没有地址,返回:C 阅读全文
posted @ 2025-01-09 18:14 toong 阅读(80) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 ··· 14 下一页