ipvsadm分发MySQL读请求
在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从库服务器
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读请求的更多相关文章
- keepalived和lvs实现mysql读负载均衡
keepalived+lvs实现对mysql读负载均衡 环境:redhat 6.5 real server: 172.25.254.189 172.25.254.224 lvs: 172.25.254 ...
- Mysql读写锁保姆级图文教程
摘要:读锁会阻塞写,但是不会阻塞读,而写锁会把杜希俄都阻塞. 本文分享自华为云社区<Mysql保姆级读写锁图文教程丨[绽放吧!数据库]>,作者:Code皮皮虾 . 准备 创建mylock表 ...
- 扩展Redis的Jedis客户端,哨兵模式读请求走Slave集群
原 扩展Redis的Jedis客户端,哨兵模式读请求走Slave集群 2018年12月06日 14:26:45 温故而知新666 阅读数 897 版权声明:本文为博主原创文章,遵循CC 4.0 b ...
- (10) 如何MySQL读压力大的问题
如何进行读写分离 由开发人员根据所执行的SQL类型连接不同的服务器 由数据库中间层实现读写分离 读写分离时,需要注意,对于实时性要求比较高的数据,不适合在从库上查询(因为主从复制存在一定延迟(毫秒级) ...
- [高性能MYSQL 读后随笔] 关于事务的隔离级别(一)
一.锁的种类 MySQL中锁的种类很多,有常见的表锁和行锁,也有新加入的Metadata Lock等等,表锁是对一整张表加锁,虽然可分为读锁和写锁,但毕竟是锁住整张表,会导致并发能力下降,一般是做dd ...
- nginx源代码分析--读请求主体(1)
首先,读取请求体已进入HTTP要求11相,我们需要做的请求正文部分处理一些模块,所以这个模块需要注册功能在这个阶段,在阅读功能要求的身体ngx_http_read_client_request_bod ...
- rocketMQ broker 分发并处理请求
使用 netty 监听端口 // org.apache.rocketmq.remoting.netty.NettyRemotingServer#start ServerBootstrap childH ...
- mysql 读写锁
1. 表读锁 lock table tablename read; 例如: 从上图中可以看到,当给表a加了读锁之后,该进程本身对表a是可读的,但是不可写,再看在另外一个进程中: 在另外一个进程中表a也 ...
- 爬虫定时任务 redis 减轻 mysql 读的压力 加层
非工作时间,定时任务爬虫大量mysq短链接,影响了其他业务的,mysql 报 too many connections 错误 将爬虫url池放入到redis中,单独的脚本维护redis url池的更 ...
随机推荐
- SpringBoot用户CRUD
1.准备 http://start.spring.io/ 这里地址去直接生成你需要的项目信息,如何你本身ide以及集成了springboot 那么可以直接生成项目信息 需要的知识:java,sprin ...
- Django模板语言,标签整理
Django模板语言 标签 内置标签引用 1. autoescape 控制自动转义是否可用. 这种标签带有任何 on 或 off 作为参数的话,他将决定转义块内效果. 该标签会以一个endautoes ...
- thinkphp 2.1代码执行及路由分析
Dispatcher.class.php这个文件中是url路由,由于第一次正式看路由那块,所以就从头开始一行一行看把. 首先是dispatch函数 是37行到140行 这个函数是做映射用,把url映射 ...
- Codeforces 126B(kmp)
要点 头尾的最长相同只要一个kmp即可得,于是处理中间部分 扫一遍记录一下前缀的每个位置是否存在一个中间串跟它相同,见代码 如果当前没有,接着用Next数组去一找即可 #include <cst ...
- yii2.0下,JqPaginator与Pjax实现无刷新翻页
控制器部分 <?php namespace backend\controllers; use common\models\Common; use Yii; use yii\base\Contro ...
- DotNetAnywhere
DotNetAnywhere:可供选择的 .NET 运行时 原文 : DotNetAnywhere: An Alternative .NET Runtime作者 : Matt Warren译者 : ...
- (转)通过MySQL复制线程SQL_Thread加快增量恢复binlog
数据回档常常是使用全量备份+binlog增量实现的.而数据量很大的情况下,增量恢复binlog一直是一个苦恼的问题,因为恢复binlog速度十分慢,并且容易出错. 恢复binlog文件一般有两种方法: ...
- MongoDB 最初级步骤
对库TEST下的LOG聚集集合中的inserttim字段加索引 步骤(注意:前四步步骤不能错,错了不行): 一,打开F:\mongodb\bin\mongo.exe,也可以用cmd命令指到这个exe执 ...
- File类。
File类: java.io.File 类.是文件和文件夹目录名的抽象表示形式. 可以用File对文件和文件夹进行 创建,删除,获取等操作. File类的一些静态成员变量: static String ...
- 洛谷P2606 [ZJOI2010]排列计数(组合数 dp)
题意 题目链接 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic的,答案 ...