写点什么

搭建 TiDB 负载均衡环境 -LVS+KeepAlived 实践

  • 2023-06-16
    北京
  • 本文字数:1896 字

    阅读完需:约 6 分钟

作者: 我是咖啡哥原文来源: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 -iyum -y install keepalived ipvsadmyum -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_vipecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "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 显示如下:


sudo ipvsadm  -Ln
复制代码


断开连接后显示如下:


sudo ipvsadm  -Ln
复制代码

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


发布于: 刚刚阅读数: 4
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
搭建TiDB负载均衡环境-LVS+KeepAlived实践_管理与运维_TiDB 社区干货传送门_InfoQ写作社区