背景
线上环境计划稍后上CDN,但是对于业务稳定性不确定,之前与研发沟通初步认为没有问题。但是,为了确保线上使用CDN后不影响业务运行,还是觉着可以在本地办公环境下,对目标域名进行fake。
问题出现
在操作的过程中:
- 对dnsmasq的配置内容进行新增
将目标域名解析为CDN域名的A记录。
- 调整办公网络DNS
修改出口路由器DHCP配置的DNS
修改为DNS服务器192.168.124.198
如果没有问题,那么问题就来了。
先是后面的同事,说电脑卡,重启后还是卡。我一看,简直除了拖动窗口无法点击其他东西了,关机也是ctrl alt delete,然后右下角选择关机。
这时候,办公室的其他同事也发现,除了电脑微信可以使用,网站无法打开。
毫无意外,势必是刚刚修改的DNS的问题。
赶紧进行切换,稍后就慢慢恢复了。
破案过程
部署 dnsmassq监控
本地有categraf监控客户端,直接跑起来dnsmasq_exporter,然后使用input.exec插件将数据通过categraf打给夜莺监控就可以看了。
wget -O /usr/bin/dnsmasq_exporter http://vip.123pan.cn/1815238395/download/categraf/dnsmasq/dnsmasq_exporter
chmod a+x /usr/bin/dnsmasq_exporter
cat <<'EOF'>/usr/lib/systemd/system/dnsmasq_exporter.service
[Unit]
Description=DNS caching server.
After=network.target
[Service]
ExecStart=/usr/bin/dnsmasq_exporter --log.path=/var/log/dnsmasq.log
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl restart dnsmasq_exporter
cat <<'EOF'>/opt/categraf/conf/input.exec/dnsmasq_exporter.sh
#!/bin/bash
curl http://127.0.0.1:9153/metrics
EOF
chmod a+x /opt/categraf/conf/input.exec/dnsmasq_exporter.sh
尝试在出口机房部署dnsmasq
已经部署好了。俩机器从ping的角度看也没啥问题。
查看防火墙对于访问源的session速度限制
也没有限制哦。
好像确实是dnsmasq的性能问题
用一会儿就断线了
切换bind
yum install -y bind
cat <<'EOF'>/etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation no;
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
max-cache-size 256M;
forwarders {
223.5.5.5;
};
forward only;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
statistics-channels {
inet 127.0.0.1 port 8053 allow { 127.0.0.1; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
EOF
named-checkconf
rndc reload
部署监控
wget --no-check-certificate -O /bin/bind_exporter http://vip.123pan.cn/1815238395/download/bind/bind_exporter
chmod a+x /bin/bind_exporter
cat <<'EOF'>/etc/systemd/system/bind_exporter.service
[Unit]
Description=BIND Exporter for Prometheus
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecStart=/bin/bind_exporter --bind.stats-url=http://localhost:8053/
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable bind_exporter
systemctl start bind_exporter
好像一会儿也断,但是比dnsmasqs要好一些
担心同事上不去网,中午就测试了一小会儿。有机会再测试。
切换另一台openeuler + dnsmasq
不行。能看到服务器收到包,但是就是不想应。而且ifconfig查看网卡接口的drop包不断上涨。
这个ifconfig的drop是网卡综合丢包的计数器。
偶然的机会,发现openeuler的yum仓库中的dnsmasq有问题。