作者: 我是咖啡哥原文来源:https://tidb.net/blog/f614b200
昨天,发了一篇使用 HAproxy+KP 搭建 TiDB 负载均衡环境的文章,今天我们再用 LVS+KP 来做个实验。
环境信息
TiDB 版本:V7.1.0
haproxy 版本:2.6.2
OS 环境:Centos 7.9
VIP:192.168.1.238
TiDB Server IP:192.168.1.217、192.168.1.237
LVS+KP 安装节点:192.168.1.214、192.168.1.215
0
1、安装 vs+keepalived
sudo -i
yum -y install keepalived ipvsadm
yum -y install popt* libnl-devel gcc
复制代码
2、去 tidb server 挂载 lvs 的 vip 到 lo 口
注意这里挂载的是 32 的 IP 地址。不是 24.
/sbin/ip addr add 192.168.1.238/32 dev lo
复制代码
并且在 tidb server 上 vi /etc/rc.local 添加以下内容,主要作用,tidb server 节点主机重启后,自动挂载 VIP
# start_tidb_vip
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ip addr add 192.168.1.238/32 dev lo
复制代码
3、配置主 kp
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
router_id lvs_tidb_217
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 238
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
192.168.1.238/24 dev eth0
}
}
virtual_server 192.168.1.238 4000 {
delay_loop 1
lb_algo wlc
lb_kind DR
persistence_timeout 0
protocol TCP
real_server 192.168.1.217 4000 {
weight 1
TCP_CHECK {
connect_timeout 2
nb_get_retry 3
delay_before_retry 2
connect_port 4000
}
}
real_server 192.168.1.237 4000 {
weight 1
TCP_CHECK {
connect_timeout 2
nb_get_retry 3
delay_before_retry 2
connect_port 4000
}
}
}
复制代码
4、配置从 kp
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lvs_tidb_237
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 238
priority 90
advert_int 1
nopreempt
virtual_ipaddress {
192.168.1.238/24 dev eth0
}
}
virtual_server 192.168.1.238 4000 {
delay_loop 1
lb_algo wlc
lb_kind DR
persistence_timeout 0
protocol TCP
real_server 192.168.1.217 4000 {
weight 1
TCP_CHECK {
connect_timeout 2
nb_get_retry 3
delay_before_retry 2
connect_port 4000
}
}
real_server 192.168.1.237 4000 {
weight 1
TCP_CHECK {
connect_timeout 2
nb_get_retry 3
delay_before_retry 2
connect_port 4000
}
}
}
复制代码
注意:1、同一集群的 2 份配置文件参数的区别只有 router_id 和优先级 priority,其余都一样。2、lvs 的 vip 不用手动挂载,启动 kp 时会自动挂载,如是手动挂载,需要手动做 arping。3、同一网段的 lvs+kp 集群,不同集群的配置参数 virtual_router_id 必须不一样,所以搭建多套 lvs 集群时,需要手动修改 virtual_router_id。
5、启动 lvs 和 kp
ipvsadm --save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
systemctl start keepalived.service
复制代码
6、测试 lvs,找一台不是 lvs 和 tidb server 的服务器,连接 lvs 的 vip 测试
mysql -uroot -p -h192.168.1.238 -P4000
复制代码
连接后 lvs 显示如下:
断开连接后显示如下:
7、测试 lvs 高可用
在主 lvs 上重启 kp,验证 vip 漂移到从
systemctl restart keepalived.service
复制代码
无问题后在从 lvs 上执行,验证 vip 漂移到主
systemctl restart keepalived.service
复制代码
8、申请 tidb 用户的 sudo 权限
如果想使用 tidb 用户来管理 LVS 和 KP,需要 tidb 用户有相关 sudo 权限。
(1)tidb 用户 sudo 权限 (lvs 节点)
sudo ipvsadm systemctl status/start/stop/restart/reload keepalived.service
IP: LVS+KP 安装所在节点:192.168.1.214、192.168.1.215
(2)tidb 用户权限(qs 节点)sudo /sbin/ip、/sbin/arping 的所有权限 IP:TiDB Server IP:192.168.1.217、192.168.1.237
评论