1、如何实现在内网的任意终端连接、监听本地server(使用etcdctl、curl命令时可以抓包)?
答:在本地段的配置文件/etc/etcd/etcd.conf修改字段ETCD_LISTEN_CLIENT_URLS、ETCD_ADVERTISE_CLIENT_URLS为"http://ip:port"的形式,多个采用逗号分开。保存后还需要重启服务:
systemctl restart etcd
在其他终端采用如下命令可以实现get、set、watch、update等 *** 作(分开的初衷是为了抓包观察交互过程,不修改配置文件、在本地终端的话可以省略--endpoints参数,默认是localhost,127.0.0.1:2379)
etcdctl --endpoints http://xx.xx.xx.xx:2379 get /keys/example
2、调用watch函数,已经使用了wait=True,为何不能实现持续的阻塞和监听?
答:该python包的watch实现还是通过调用read函数发送请求,应当在参数里面加上timeout=0,才会持续阻塞。etcdctl和curl来监听时,可以实现持续监听,用wireshark抓包发现,client和server的交互会每隔30s向对方发送tcp探活包([tcp keep-alive]),当我们自己调用函数watch时,需要加上timeout=0参数才能实现持续发送tcp探活包(抓包发现这时只有server发送,client并不会发送,没搞太清楚,但是能够保持持续监听了!!)。
以上个人经验记录,仅供参考。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)