TDSQL(MySQL版本)使用虚拟机配置LVS遇到的问题及解决 && 涉及的网络命令分析

发布时间 2024-01-06 16:01:25作者: chy_cug

一、版本信息
TDSQL版本:V10.3.22.1.2-6.aarch64
DB版本:MySQL 8.0.24

二、现象及影响
有个mysql的集群,包括三台物理机机器:xx.yy.zz.5(6,7);有两台lvs的虚拟机机器:xx.yy.zz.11(12),还有一个虚拟vip:xx.yy.zz.13。在集群内部机器xx.yy.zz.5上面使用vip访问数据库集群(命令为:mysql -hxx.yy.zz.13 -uadmin -p'Password' -P15010 -C),但是在集群外部机器xx.yy.zz.8上面使用vip访问数据库集群,无法访问该数据库集群,报错信息为:ERROR 2002 (HY000):Can't connect to MySQL server on 'xx.yy.zz.13'(115);在8这台机器上面telnet 13 这台机器,不通;同时使用navicat也无法访问。

三、过程
1:发现问题,在xx.yy.zz.8上面使用vip访问数据库集群,无法访问该数据库集群,
命令为:mysql -hxx.yy.zz.13 -uadmin -p'Password' -P15010 -C。
报错信息为:ERROR 2002 (HY000):Can't connect to MySQL server on 'xx.yy.zz.13'(115)。
2:联系技术顾问,解决LVS”添加接入层“报错问题。

四、原因分析
虚拟网络配置有问题

五、解决方案
将安全组修改为无状态模式,配置方法为:
1、先创建一个无状态安全组,这个配置是neutron security-group-create --stateful=False stateless --tenant-id <租户id>;
2、neutron port-update <port-id> --port_security_enabled=True --security-group=<安全组id> --allowed_address_pairs list=true type=dict ip_address=0.0.0.0/0

六、过程中涉及的定位问题的shell命令如下:
arp |grep vip ---arp命令作用:查看 arp 缓存
arping -I bond0 -c 5 -s xx.yy.zz.13 xx.yy.zz.200
arping xx.yy.zz.13 ---arping命令作用:发送 arp 请求报文,解析并获取目标地址的 MAC。

---查看服务器内存条使用情况
dmidecode -t memory

---proxy机器上面
ethtool -k bond0|grep -i -E ---ethtool命令作用:用于获取以太网卡的配置信息,或者修改这些配置。 "tcp-segmentation-offload|generic-segmentation-offload|generic-receive-offload|large-receive-offload"
ethtool -K bond0 lro off gro off gso off tso off 添加到/etc/rc.local文件中
参数说明:
-k 显示网卡Offload参数的状态
-K 修改网卡Offload参数的状态

ifconfig bond0 mtu 1500

ip a ---ip命令作用:见文件末尾
iptables -L ---iptables命令作用:显示、启动和关闭防火墙 见如下链接:https://zhuanlan.zhihu.com/p/626885145
iptables -nL
iptables -D OUTPUT -p tcp --tcp-flags ALL SYN,ACK -j TCPMSS --set-mss 1440
iptables -A OUTPUT -p tcp --tcp-flags ALL SYN,ACK -j TCPMSS --set-mss 1440
iptables -L --line-number
iptables -D OUTPUT 1
iptables -A OUTPUT  -p tcp --tcp-flags ALL SYN,ACK -j TCPMSS --set-mss 1420
iptables -L --line-number

ipvsadm -Ln ---ipvsadm:管理LVS的策略规则,见如下链接:https://blog.csdn.net/qq_50685659/article/details/126323299

kylin_activation_check
kylin-system-verify
kylin_activation_check

lsblk -d -o name,rota ---lsblk命令作用:用于展示块设备(block devices)的信息
sudo lshw -class disk ---用于检查硬件设备是否正常工作
lscpu ---查看物理cpu个数;查看每个物理cpu核数;查看总线程数;查看内存信息
lsmod|grep ip ---显示当前内核模块装载的模块
lspci | grep -i ethernet ---显示当前主机的所有PCI总线信息

netstat -tlnp ---netstat命令作用:查看系统中网络连接状态信息 https://zhuanlan.zhihu.com/p/424453698?utm_id=0

ping -I xx.yy.zz.13 ---ping命令作用:用于测试主机之间的连通性 https://blog.csdn.net/Dontla/article/details/131775242

route -n ---route命令作用:用于显示和操作IP路由表 https://blog.csdn.net/fuhanghang/article/details/128657876

systemd-detect-virt ---命令作用:判断linux是否运行在虚拟机中

---tcpdump ---命令作用:根据使用者的定义对网络上的数据包进行截获的包分析工具 https://blog.csdn.net/weixin_45925028/article/details/132101229
tcpdump -i bond0 host 192.158.124.105 and port 5303 -n -nn -v -vv -w RS8.cap -W 30 -C 5
tcpdump -i eth0 tcp host 192.168.1.13 and port 15001 -n -nn -v -vv -w proxy_15001.cap -W 30 -C 100 -s 200 -Z root &
tcpdump -i enpls0 tcp and port 15011 -s 500 -w mysql.cap
tcpdump -i enpls0 tcp host 192.168.1.13 and port 15011 -n -nn -v -vv -w proxy_15011.cap -W 30 -C 100 -s 200 -Z
tcpdump -i any -nn tcp port 15007 and host xx.yy.zz.13 -w test.cap

---开机自启配置文件
more /etc/rc.local 内容如下:
modprobe ipip
ip link set tunl0 up
ip addr add xx.yy.zz.13/32 dev tunl0
route add -host xx.yy.zz.13 dev tunl0
ifconfig bond0 mtu 1500
iptables -A OUTPUT -p tcp --tcp-flags ALL SYN,ACK -j TCPMSS --set-mss 1440
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/tunl0/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "0" > /proc/sys/net/ipv4/ip_forward

---网络配置文件 功能为:“关闭ARP转发”
见“https://cloud.tencent.com/developer/article/1510952”
more /proc/sys/net/ipv4/conf/tunl0/arp_ignore ---值为“1”
more /proc/sys/net/ipv4/conf/tunl0/arp_announce ---值为“2”
more /proc/sys/net/ipv4/conf/all/arp_ignore ---值为“1”
more /proc/sys/net/ipv4/conf/all/arp_announce ---值为“2”
more /proc/sys/net/ipv4/conf/tunl0/rp_filter ---值为“0”
more /proc/sys/net/ipv4/conf/all/rp_filter ---值为“0”
more /proc/sys/net/ipv4/ip_forward ---值为“0”

---proxy机器上面的日志文件:
/data/home/tdsql/tdsqlinstall/log/pkginstall.log.YYYY-mm-dd.log
/data/home/tdsql/tdsqlinstall/log/shell_pkginstall.log.YYYY-mm-dd.log
/data/home/tdsql/tdsqlinstall/log/init_proxy_for_lvs_YYYY_mm_dd.log

---lvs上面的日志文件:
/data/application/keepalived/log/log_vrrp
/data/application/keepalived/log/log_check

---raid等级
more /proc/scsi/scsi

---scheduler上面的日志文件
/data/scheduler_log/sys_manager.2023-11-15.0

---启动zk命令
cd /data/application/zookeeper/bin ./zkCli.sh -server 127.0.0.1:2118

---proxy机器上的lvs文件
more /data/home/tdsql/tdsqlinstall/lvsenv/init_proxy_for_lvs_tun.py
more /data/home/tdsql/tdsqlinstall/lvsenv

七、涉及的命令分类及说明:
ip 见如下网址:https://blog.csdn.net/jks212454/article/details/133774168
1. ip命令是Linux下管理网络接口的主要工具之一,可以用于设置IP地址、路由表、网络接口等。

2. ip命令的常见操作包括查看网络接口信息、设置IP地址、设置网络接口等。

3. 查看网络接口信息的操作:
- ip addr:显示所有网络接口的详细信息,包括接口名称、MAC地址、IPv4地址、IPv6地址等。
- ip link:显示所有网络接口的名称和状态信息。

4. 设置IP地址的操作:
- ip addr add IP地址/掩码 dev 网络接口名:给指定网络接口添加IP地址。
- ip addr del IP地址/掩码 dev 网络接口名:删除指定网络接口的IP地址。
- ip -4 addr add IP地址/掩码 dev 网络接口名:给指定网络接口添加IPv4地址。
- ip -6 addr add IPv6地址/掩码 dev 网络接口名:给指定网络接口添加IPv6地址。

5. 设置网络接口的操作:
- ip link set 网络接口名 up/down:设置指定网络接口的状态为up或down。
- ip link set 网络接口名 name 新名称:给指定网络接口修改名称。
- ip link set 网络接口名 mtu MTU值:设置指定网络接口的最大传输单元大小。
- ip route add 目标地址/掩码 via 网关 dev 网络接口名:添加路由规则,指定目标地址走指定的网关。

6. 其他常用操作:
- ip neigh:显示ARP缓存表。
- ip route:显示和管理路由表。
- ip rule:显示和管理路由策略。