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

news2024/11/15 13:34:08

作者: 我是咖啡哥 原文来源: https://tidb.net/blog/f614b200

昨天,发了一篇使用HAproxy+KP搭建TiDB负载均衡环境的文章,今天我们再用LVS+KP来做个实验。

image.png

环境信息

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显示如下:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/658082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【EXCEL】如何查找特殊字符 问号‘?’星号 ‘*’

目录 0.环境 1.适用场景 1)直接搜索问号的结果: 2)修改【查找内容】后,搜索结果变为精准定位: 2.具体做法 0.环境 windows wps(或excel,这里试了,此问题wps和excel表格是通用…

chatgpt赋能python:Python如何计算圆周率π

Python如何计算圆周率π 圆周率,又称π,是数学中一个重要的常数,它与圆的周长和直径的比值始终保持不变。在计算机编程中,计算圆周率π也是一个颇具挑战的问题。本文介绍了使用Python编程语言来计算圆周率π的方法,希…

C语言进阶---指针的进阶

前言 指针的主题,我们在初级阶段的《指针》章节已经接触过了。我们直到指针的概念。 ​ 1、指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 ​ 2、指针的大小是固定的4/8个字节(32为平台/64位平台) ​ 3、指…

chatgpt赋能python:Python如何输出Unicode:一位10年编程经验的工程师的经验分享

Python如何输出Unicode:一位10年编程经验的工程师的经验分享 Python是一种常见的编程语言,被广泛应用于各种文本处理任务。其中一个有趣的方面是Python与Unicode的集成。在这篇博客文章中,我将分享我的经验,介绍如何在Python中输…

查看当前编译器(或交叉编译器)支持的C/C++标准

如果已经配置到系统环境中则直接使用&#xff1b; 如果没有配置到系统环境中&#xff0c;找到当前使用的交叉编译器的路径&#xff1b; gcc -E -dM - </dev/null | grep "STDC_VERSION" 或者编写一段小代码&#xff1a; printf("%ld\n",__STDC_VERS…

【栈与队列part02】| 20.有效的括号、1047.删除字符串中所有相邻重复项、150.逆波兰表达式求值

目录 ✿LeetCode20. 有效的括号❀ ✿LeetCode1047.删除字符串中的所有相邻重复项❀ ✿LeetCode150. 逆波兰表达式求值❀ ✿LeetCode20. 有效的括号❀ 链接&#xff1a;20.有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;]…

rust 使用第三方库构建mini命令行工具

这是上一篇 rust 学习 - 构建 mini 命令行工具的续作&#xff0c;扩展增加一些 crate 库。这些基础库在以后的编程工作中会常用到&#xff0c;他们作为基架存在于项目中&#xff0c;解决项目中的某个问题。 项目示例还是以上一篇的工程为基础做调整修改ifun-grep 仓库地址 怎…

Linux MTD子系统(二)——mtdblock驱动分析

在之前的文章Linux MTD子系统(一)中有提到过mtd块设备&#xff0c;mtd块设备是在MTD设备之上模拟的块设备。 它的作用实际上只有一个——便于我们使用mount(umount)挂载(卸载)MTD设备中的文件系统&#xff0c;例如yaffs2&#xff0c;JFFS2等等。 本文将介绍mtdblock是如何实现…

LIN总线协议-调度表

文章目录 一、调度表只有一个调度表时&#xff0c;采用循环执行三个调度表存在时&#xff0c;顺序执行调度表发生中断 二、总结 一、调度表 调度表规定了总线上帧的传输次序&#xff08;调度Header&#xff09;以及各帧在总线上的传输时间。 调度表位于主机节点&#xff0c;主…

算法刷题-字符串-左旋转字符串

反转个字符串还有这么多用处&#xff1f; 题目&#xff1a;剑指Offer58-II.左旋转字符串 力扣题目链接 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如&#xff0c;输入字符串"abcdefg"和数字2…

C++算法:单源最短路径Dijkstra

文章目录 前言一、Dijkstra算法思想二、算法实现1、建立图2、代码实现 总结 前言 如果你有一份北京地图&#xff0c;想从中关村走到三元桥&#xff0c;那么怎样能找出实现这一目的的最短路径呢?一种可能的方法就是将这两点之间所有的路线都找出来&#xff0c;然后求出每条路线…

openSUSE项目近日宣布openSUSE Leap 15.5的发布和全面供应

openSUSE项目近日宣布openSUSE Leap 15.5的发布和全面供应&#xff0c;该版本是openSUSE变体的最新稳定版本&#xff0c;针对那些希望为其个人电脑提供基于SUSE Linux Enterprise 15的经过良好测试的操作系统的用户。 openSUSE Leap 15.5是在openSUSE Leap 15.4的一年后推出的&…

Vue中如何进行音频可视化与音频频谱展示

Vue中如何进行音频可视化与音频频谱展示 随着音频应用程序的不断发展&#xff0c;音频可视化和音频频谱展示成为了重要的功能。在Vue应用程序中实现音频可视化和音频频谱展示可以帮助用户更好地了解音频文件的内容和特征。本文将介绍如何在Vue应用程序中实现音频可视化和音频频…

Opensearch基本介绍

OpenSearch 是一个社区驱动的开源搜索和分析套件&#xff0c;开发人员使用该套件来摄取、搜索、可视化和分析数据。 OpenSearch 由数据存储和搜索引擎 (OpenSearch)、可视化和用户界面 (OpenSearch Dashboards) 以及服务器端数据收集器 (Data Prepper) 组成。 用户可以使用一系…

把数字中国,建立在行业感知的底座上

5月23日&#xff0c;国家互联网信息办公室发布了《数字中国发展报告&#xff08;2022年&#xff09;》。报告显示&#xff0c;2022年中国数字经济规模达到50.2万亿元&#xff0c;占国内生产总值比重提升至41.5%&#xff0c;总量居世界第二。如今数字中国最主要的发展挑战&#…

MIFARE - 1

2一般说明 飞利浦根据ISO/IEC 14443A开发了用于非接触式智能卡的MIFAREMF1 IC S50。通信层&#xff08;MIFARERF接口&#xff09;符合ISO/IEC 14443A标准的第2部分和第3部分。安全层采用经过现场验证的CRYPTO1流密码&#xff0c;用于MIFAREClassic系列的安全数据交换。 MIFARE…

GPT中的temperature参数不是用在对话的而是用在调用OPEN API过程中的

前言 自从吴恩达OPENAI《ChatGPT 提示工程》放出后,各个层面反响热列。很多人看到了temperature这个参数,都以为在对话中或者说对话的末尾放上一个temperature=0-2的值就可以达到让GPT极大的发挥出自我创造能力、甚至写文章天马行空。 笔者这边觉得有义务指出这种用法是完全…

OpenAI ChatGPT 使用示例(程序员)

1.编程应用 1.1. 生成例子代码(Coding Generation) ChatGPT帮助我们生产我们需要的例子代码。而且准确率很高。即使你不懂某一种语言也没关系&#xff0c;一定程度上较低了程序员的的门槛。 我有三组数据&#xff0c;第一组是星期一到星期五&#xff0c;第二组是这一天的具体…

第七十八天学习记录:高等数学:微分方程(宋浩板书)

微分方程&#xff08;Differential equation&#xff09;是描述自然现象中变量之间关系的数学语言。它是以函数、导数、微分等数学概念为基础的方程&#xff0c;揭示了自然现象中变量之间的内在联系。微分方程在物理学、工程学、生物学、经济学、统计学等各领域都有广泛的应用。…

C++线程库(2)

C线程库&#xff08;2&#xff09; 线程同步互斥锁条件变量与互斥锁的搭配使用举例1举例2举例3 线程同步 在C线程库&#xff08;1&#xff09;的博客中说了互斥量只能解决多个线程访问共享资源的问题&#xff0c;但是很明显没有次序感&#xff0c;而线程安全就是不同线程访问资…