linux配置多级服务器登录和隧道映射

通常,办公环境的电脑无法直接连接到开发测试服务器,往往需要进行多次ssh跳转。这时可通过配置ssh支持自动跳转登录功能。假设有2台服务器A和B在我们的开发测试环境中,本地我们只能连接到A服务器,而A服务器可以连接到B服务器。编辑~/.ssh/config文件,输入下列内容: Host serverA User root HostName 10.1.2.3 IdentityFile /home/myusername/.ssh/id_rsa Port 22 Host serverB User root HostName 192.168.1.3 IdentityFile /home/myusername/.ssh/id_rsa port 22 ProxyJump mypub 此时,在本地即可通过ssh serverB直接连接到服务器B的ssh服务。如果要使用免密方式进行登录。则需要执行ssh-copy-id root@serverA和ssh-copy-id root@serverB进行配置免密。 在进行了这样的配置之后,我们也可以更加方便的建立隧道来使用了。比如在服务器上有一个8080的http服务,想要在本地浏览器里访问。那么,可以执行下列命令建立隧道: ssh -Nf -Llocalhost:8080:192.168.1.3:8080 serverB 此命令会将serverB上的8080端口映射到本地的8080端口上,在浏览器中我们只需要输入http://localhost:8080可以访问到serverB上的web服务。 同样,也可以通过-R选项将本地端口映射到serverB的某个端口上,比如在微信公众号开发测试的时候,可以将配置在公众平台的服务器地址上的服务映射到本地。 为了避免网络连接中断导致隧道断开连接,可以使用systemd来保活,隧道进程退出后自动将其拉起: # cat /lib/systemd/system//my-http-proxy.service [Unit] Describe=Kmr nginx agent After=network.target [Service] LimitNOFILE=10000 Type=simple User=root Group=root ExecStart=/usr/bin/ssh -oExitOnForwardFailure=yes -oPubkeyAuthentication=yes -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oServerAliveInterval=5 -oServerAliveCountMax=3 -Llocalhost:8080:localhost:8080 -N root@serverB Restart = always RestartSec = 1s StartLimitInterval = 0 [Install] WantedBy=network.target 执行systemctl…

linux下tcp keepalive相关参数调整测试

首先说明下面三个和keepalive相关的内核参数以及默认的值 # sysctl -a | grep keepalive # 在会后一次发送数据包后多久向对方发起探测 net.ipv4.tcp_keepalive_time = 7200 # 在没有收到对方确认时,会按照这个时间间隔再次探测 net.ipv4.tcp_keepalive_intvl = 75 # 在没有收到对方确认时,进行探测的次数 net.ipv4.tcp_keepalive_probes = 9 下面通过在本地环境上测试这些参数,首先将本地的默认keepalive参数进行修改 # sysctl -a | grep keepalive net.ipv4.tcp_keepalive_intvl = 5 net.ipv4.tcp_keepalive_probes = 9 net.ipv4.tcp_keepalive_time = 20 下载并编译带keepalive功能支持的netcat命令行工具 git clone https://github.com/cyberelf/netcat-keepalive.git cd netcat-keepalive/ make linux 运行tcpdump进行抓包 tcpdump -iany port 18888 启动服务端监听 ./nckl-linux -v4K -l 18888 使用nc去连接 nc -v -p55666 localhost 18888 可以看到抓包内容如下 root@debian:/home/blue# tcpdump -iany port 18888 tcpdump: verbose…

记一次k8s集群pod一直terminating问题的排查

现象描述 pod一直处于terminating状态,或者很久才能删除,内核日志中持续打印unregister_netdevice: waiting for XXX to become free. Usage count = 1。 故障诊断 经过定位和排查,定位到是内核的一个bug导致网络设备无法删除。具体参考https://github.com/torvalds/linux/commit/ee60ad219f5c7c4fb2f047f88037770063ef785f。 另外在github的k8s的issues里也有该bug的相关讨论。有人给出了付现这个问题的方式,以及验证上面提到的修复方法是否有效。下面是按照他给出的方案做的复现和验证。具体可参考https://github.com/moby/moby/issues/5618#issuecomment-549333485。 问题排查 从kubelet内核日志来看是在删除pod的网卡设备时因为内核的引用计数bug,导致无法删除。后续对网卡信息的查询和再次删除操作应该也会导致超时失败(根据日志推断,暂时还未在代码中找到对应调用,线上环境也没法重启调整日志级别和调试)。 首先需要看一个概念:PLEG。 PLEG (pod lifecycle event generator) 是 kubelet 中一个非常重要的模块,它主要完成以下几个目标: 从 runtime 中获取 pod 当前状态,产生 pod lifecycle events 从 runtime 中获取 pod 当前状态,更新 kubelet pod cache 接下来分析一下造成问题的原因应该是k8s的PLEG在同步pod信息时,可能要查询网卡详情(ip地址),由于内核bug导致超时,致使syncLoop中每执行一次遍历的时间过长(4分钟左右),因此新建pod和删除pod的时候,node上的信息和server上的信息更新不及时。用busybox测试创建和删除时,通过docker ps可以看到响应容器很快就可以启动或删除掉。 从图中可以看到该日志:Calico CNI deleting device in netns /proc/16814/ns/net这条。这是在pod执行删除是产生的。在正常情况下后面会有删除完成的日志信息,如下图: 但上面的日志里的无此信息,并且10s后打印了unregister_netdevice xxx的日志。这里是触发了内核bug。通过ps aux | grep calico也可以看到在对应时间有一个calico进程启动去执行操作,目前这个进程还在(10.209.33.105),这里估计k8s也有bug,没有wait pid,导致calico成为僵尸进程。 下图是kubelet日志。其中的PLEG is not healthy日志也是在对应的时间点出现。 问题本地复现 要在本地复现这个问题,首先需要给内核打补丁来协助复现。 diff --git a/net/ipv4/route.c b/net/ipv4/route.c index a0163c5..6b9e7ee…

轮指和修指甲小计

轮指 拇指要放松才能弹均匀,四个手指头下意识去独立控制,ima拨弦时要快速发力。90左右慢速练习时要把声音弹足够大和清晰。 指甲 由于m型指甲,斜坡不用太长,斜坡太长会有指甲摩擦琴弦的声音,最高坡点在手指中心偏向小指方向一点点的位置。指甲不用太长,从正面看相对于指肚多出1至2毫米即可。拨弦方向在标准姿势稍垂直于琴弦一点点,可以有效利用m型指甲中间凹点带动下压琴弦。合理的指甲形状可以通过拨弦时的阻力确定,阻力太小太顺滑发不出圆润的声音,因为无法有效的下压琴弦,要调整到一个阻力合适的形状。…

古典吉他学习第十七十八节课总结

课上主要看练习效果。注意练习的时候声音要大,要放开。注意保留指,旋律音不要用保留指,是多少时值就响多久。伴奏是和弦的话可以。要区分出旋律和伴奏,也要注意多个声部以及旋律在声部之间的变换。还需在深入。 对于节奏的把握需要继续练,尤其附点音符。 练习 1. 和声音程 过 2. 《铜壶的四周》 八分音符 = 75 90 105 3. 《古典舞蹈》 八分音符 = 70 80 90 4. 《土拨鼠》 八分音符 = 70 80 90 5. 视奏《小精灵》、《多年以后》、《冒险记》…

古典吉他学习第十三十四节课总结

课上主要看练习效果。 练习 1. 卡鲁里 1~9型 1:2 85   100  115, 1:3 60 70 80 10,11型 1:1 110 120 130 2. 和声音程 变型 1:1 90 105 120 标准 2:1 60 70 80 1-9型 1:1 140 155 170 3. 《我怎能离开你》 低音版 四分音符 110 120 130 4. 《我怎能离开你》 高音版 四分音符 60 70 80 5. 《视奏《古典舞蹈》》…

古典吉他学习第十一十二节课总结

本节课的问题是演奏没有区分强弱因,强弱弱的节奏谈成了一样的,低音是主旋律,高音是伴奏。注意低音的强度,回来发现和拇指指甲修剪的形状有关,重新调整之后,稍微再用力些按弦,确实低音的音量更加饱满。同时锻炼手指灵活度。 练习 1. 和声音程 变型 1:1 90   105  120 正常 2:1 60 70 80 2. 卡路里 10型,11型 1:1 70 85 100 12型 2:1 70 85 100 1-9型 1:1 140 155 170 3. 我怎能离开你 P指 四分音符 = 60 70 80 4. 视奏高音版 我怎能离开你   保持打拨弦和开指练习,加入右手反弹,左右手交替练习。   同时记录下回来之后找到的最好发音拨弦和指甲形状…

古典吉他学习第九十节课总结

老师说发音很饱满,拨弦还不够稳定,需要再进一步加强稳定性练习,只之前的速度上继续提升一些,巩固一下发音,不可过快,打好基本功很重要。 练习 1.和声音程 变型 1:1 55 70 85 Pi Pm pi pm pi mp Pm Pa pm pa pm pa 正常 2:1 60 75 90 2. 卡鲁里 1-9型 1:1 110 125 140 (155) 视奏10-12型 3. 我怎能离开你 八分音符 = 80 95 110 (125) 4. 开指 1:1 60 90 100 5. 打拨弦 1:1 90 100 110  …

古典吉他学习第七八节课总结

上课老师指出手指不够稳定,要放慢练习速度,把动作练熟,形成肌肉记忆,速度提升是很快的事情。放慢节奏继续练习基本功,每个动作做到位。节奏不稳表现在手指控制能力不够,不能准确一致的发音,同一个音可能声大声小,音色不同或者有杂音。另外听老师弹出的声音确实不一样。要重视基本功练习! 练习 我怎能离开你 四分音符 = 70 80 90 卡鲁里 1至4型 1:1 60 70 80 90(一音一拍) 视奏5至9型 打拨弦 1:1 60 70 开指 1:1 60:70 视奏和声音程 可依次弹出单音,在弹和声…