一、背景介绍
一直对--advertise-client-urls这个参数迷迷糊糊的,搞不清到底是做什么的,网上的一些解释也似懂非懂的,因此,本篇文章就做一个小测试,去探寻究竟。
仅供参考!
二、测试环境介绍
主机名 | IP | 系统 | 服务 |
---|---|---|---|
master | 172.16.91.195 | centos7.5 | etcd(单例) |
harbor | 172.16.91.222 | centos7.5 | 无 |
三、参数说明
etcd有要求,如果--listen-client-urls被设置了,那么就必须同时设置--advertise-client-urls,所以即使设置和默认相同,也必须显式设置
四、测试
4.1 测试1: 将--advertise-client-urls设置成http://127.0.0.1:2379
-
更新配置文件
- 重新启动etcd服务
systemctl daemon-reload systemctl restart etcd
- 在本机上测试
etcdctl --endpoints=http://127.0.0.1:2379 --debug ls
-
在同一个局域网的其他机器上测试
4.2 测试2: 将--advertise-client-urls设置成http://172.16.91.195:2379
-
更新配置文件
-
重新启动etcd服务
systemctl daemon-reload systemctl restart etcd
-
在本机上测试
etcdctl --endpoints=http://127.0.0.1:2379 --debug ls
-
在同一个局域网的其他机器上测试
4.3 测试3: 将--advertise-client-urls设置成http://172.16.91.222:2379
-
更新配置文件
- 重新启动etcd服务
systemctl daemon-reload systemctl restart etcd
- 在本机上测试
-
在同一个局域网的其他机器上测试
4.4 测试4: 将--advertise-client-urls设置成http://172.16.91.222,http://127.0.0.1:2379,http://172.16.91.195:2379
-
更新配置文件
- 重新启动etcd服务
systemctl daemon-reload systemctl restart etcd
- 在本机上测试
-
在同一个局域网的其他机器上测试
4.5 分析
观看上面测试中,debug输出的信息,会发现etcdctl的基本工作流程
4.5.1 etcdctl的基本工作流程?
4.6 总结:
- --advertise-client-urls
- 就是客户端(etcdctl/curl等)跟etcd服务进行交互时请求的url
- --listen-client-urls
- 这个参数是etcd服务器自己监听时用的,也就是说,监听本机上的哪个网卡,哪个端口
- 说明etcdctl的底层逻辑,应该是调用curl跟etcd服务进行交换