在MySQL的部署场景中,经常使用HAproxy和ipvs来作为读请求转发的网关.
ipvs的好处在于本身不需要daemon的方式来运行,而是直接作为kernel的服务来提供;
当ipvs和应用程序服务器在同一网段时,可以使用DR模式,这样可以避免在返回
数据时还需由网关来处理.

硬件:

ipvsadm服务器192.168.1.100,VIP虚拟ip配置为192.168.1.204

三台mysql从服务器:

192.168.1.135

192.168.1.136

192.168.1.137

一,安装ipvsadm

1,yum安装

#yum -y install ipvsadm

建立ipvsadm文件

#ipvsadm --save > /etc/sysconfig/ipvsadm

初始化配置

#ipvsadm -C

二,为ipvsadm服务器网卡配置一个虚拟IP

1,查看网卡名ip addr,记住en开头的网卡名,打开该网卡名的配置文件

#vi /etc/sysconfig/network-scripts/ifcfg-en你的网卡名

2,添加一行ip

IPADDR1=192.168.1.204

3,service network restart 重启网卡。

三,配置ipvsadm

1,ipvsadm -C清除之前的配置

2,在ipvs上新增一个服务器,使用负载平均分发到后端服务器的策略

#ipvsadm -A -t 192.168.1.204:  -s rr

3,为ipvs新增服务器增加后端真实的服务器

#ipvsadm -a -t 192.168.1.204: -r 192.168.1.135: -g
#ipvsadm -a -t 192.168.1.204: -r 192.168.1.136: -g
#ipvsadm -a -t 192.168.1.204: -r 192.168.1.137: -g #ipvsadm --save

4,查看配置情况

# ipvsadm -L
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost.localdomain:mysql rr
-> 192.168.1.135:mysql Route
-> 192.168.1.136:mysql Route
-> 192.168.1.137:mysql Route

四,配置Mysql从库服务器

(☞服务器安装在windows上如何配置?)

1,在回路接口(lo网卡)上新增ipvsadm服务器的ip地址

# vi /etc/sysconfig/network-scripts/ifcfg-lo

#添加下面一行
IPADDR1=192.168.1.204

2,添加静态路由,(更多详细操作

route add -host 192.168.1.204 dev lo

3,设置网卡通讯规则(更多细节

# echo "" >/proc/sys/net/ipv4/conf/lo/arp_ignore
# echo "" >/proc/sys/net/ipv4/conf/lo/arp_announce
# echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
# echo "" >/proc/sys/net/ipv4/conf/all/arp_announce
# sysctl -p >/dev/null >&1 #/dev/null 2>&1 是什么意思?

为了使配置永久生效,建议把配置写入/etc/sysctl.conf的文件中。

每台从库服务器都需要同样的配置。

在第三台主机上通过VIP登录mysql 3次后,可以看到ipvsadm平均分发了对从库的访问。

# ipvsadm -L
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost.localdomain:mysql rr
-> 192.168.1.135:mysql Route
-> 192.168.1.136:mysql Route
-> 192.168.1.137:mysql Route

最后可以使用sysbench做压力测试

本文在 使用IPVS分发MySQL读请求 的基础上根据自身的经验总结而来。

ipvsadm分发MySQL读请求的更多相关文章

  1. keepalived和lvs实现mysql读负载均衡

    keepalived+lvs实现对mysql读负载均衡 环境:redhat 6.5 real server: 172.25.254.189 172.25.254.224 lvs: 172.25.254 ...

  2. Mysql读写锁保姆级图文教程

    摘要:读锁会阻塞写,但是不会阻塞读,而写锁会把杜希俄都阻塞. 本文分享自华为云社区<Mysql保姆级读写锁图文教程丨[绽放吧!数据库]>,作者:Code皮皮虾 . 准备 创建mylock表 ...

  3. 扩展Redis的Jedis客户端,哨兵模式读请求走Slave集群

    原 扩展Redis的Jedis客户端,哨兵模式读请求走Slave集群 2018年12月06日 14:26:45 温故而知新666 阅读数 897   版权声明:本文为博主原创文章,遵循CC 4.0 b ...

  4. (10) 如何MySQL读压力大的问题

    如何进行读写分离 由开发人员根据所执行的SQL类型连接不同的服务器 由数据库中间层实现读写分离 读写分离时,需要注意,对于实时性要求比较高的数据,不适合在从库上查询(因为主从复制存在一定延迟(毫秒级) ...

  5. [高性能MYSQL 读后随笔] 关于事务的隔离级别(一)

    一.锁的种类 MySQL中锁的种类很多,有常见的表锁和行锁,也有新加入的Metadata Lock等等,表锁是对一整张表加锁,虽然可分为读锁和写锁,但毕竟是锁住整张表,会导致并发能力下降,一般是做dd ...

  6. nginx源代码分析--读请求主体(1)

    首先,读取请求体已进入HTTP要求11相,我们需要做的请求正文部分处理一些模块,所以这个模块需要注册功能在这个阶段,在阅读功能要求的身体ngx_http_read_client_request_bod ...

  7. rocketMQ broker 分发并处理请求

    使用 netty 监听端口 // org.apache.rocketmq.remoting.netty.NettyRemotingServer#start ServerBootstrap childH ...

  8. mysql 读写锁

    1. 表读锁 lock table tablename read; 例如: 从上图中可以看到,当给表a加了读锁之后,该进程本身对表a是可读的,但是不可写,再看在另外一个进程中: 在另外一个进程中表a也 ...

  9. 爬虫定时任务 redis 减轻 mysql 读的压力 加层

    非工作时间,定时任务爬虫大量mysq短链接,影响了其他业务的,mysql 报 too many connections  错误 将爬虫url池放入到redis中,单独的脚本维护redis url池的更 ...

随机推荐

  1. Jmeter—生成excel结果文件

    相信很多用jmeter进行接口测试的童鞋都会有这样的苦恼:同时执行上百条测试案例,如何能轻松加愉快地检查案例输出结果?仅仅靠jmeter的断言.debug sampler.察看结果树等是无法满足我们要 ...

  2. 题解 BZOJ 1912 && luogu P3629 [APIO2010]巡逻 (树的直径)

    本来抄了篇题解,后来觉得题解都太不友好(我太菜了),一气之下自己打...一打打到第二天QAQ 首先什么边也不加时,总路程就是2*(n-1) 考虑k=1的时候,答案显然是2*(n-1)-直径+1=2*n ...

  3. 一行命令将ubuntu升级到最新版本

    zzupdate 是一个开源的命令行程序,通过将几个更新命令组合到一个命令中,使得将 Ubuntu 桌面和服务器版本升级到更新版本的任务变得容易一些. 将 Ubuntu 系统升级到更新的版本并不是一项 ...

  4. DMA性能测试

    本程序主要用来计算DMA数据读写过程中所花费的总得时间周期,依据公式T=tStart+ceil(L/4)*2+ceil(L/256)*tTransform*2 因为tTransform是一个常量(通常 ...

  5. PartTime_网址_内

    http://www.360doc.com/content/15/0930/12/28012971_502432950.shtml 2015所有适合程序员接私活的网站 请把 @ 换成 . 猪八戒    ...

  6. RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置

    上一篇博客 RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例 中,我们成功的安装好了RabbitMQ环境,并通过一个Java客户端示例了解了用生产者来发布消息,用 ...

  7. 专题《一》 mysql优化

    从今天开始,在这里记录面试会问的问题,针对java高级开发,架构师方向. 1.数据库设计要合理.开发经验不同  设计表水平不同  影响后面操作 三范式:1------------原子约束,每列不可分割 ...

  8. SQL 索引查找

    索引查找信息 在非聚集索引里,会为每条记录存储一份非聚集索引索引键的值和一份聚集索引索引键 [在没有聚集索引的表格里,是RID值指向数据页面,有聚集索引的话指向聚集索引的键(在不使用include时) ...

  9. AJPFX辨析GBK和UTF8的区别

    GBK编码:是指中国的中文字符,其它它包含了简体中文与繁体中文字符,另外还有一种字符“gb2312”,这种字符仅能存储简体中文字符. UTF-8编码:它是一种全国家通过的一种编码,如果你的网站涉及到多 ...

  10. less的使用总结

    简单执行less 一.使用npm全局安装less: npm install -g less 二.创建less文件 三.执行命令将less文件转换成css文件 lessc less/style.less ...