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池的更 ...
随机推荐
- Kestrel服务器
Kestrel服务器 什么是Kestrel服务器 Kestrel是开源的(GitHub提供的源代码),事件驱动的异步I / O服务器,用于在任何平台上托管ASP.NET应用程序.这是一个监听服务器和一 ...
- NET Core项目部署
NET Core项目部署到linux(Centos7) 阅读目录 1.开篇说明 2.Jexus简单说明 3.Visual Studio 2015本地发布并且测试 4.配置Jexus并且部署.NET C ...
- B. Batch Sort
http://codeforces.com/contest/724/problem/B 被坑了,一开始以为如果有一行已经是排好序了,然后有一行需要转换的次数 >= 2的话,那就直接no了. 因为 ...
- 事务的隔离级别和mysql事务隔离级别修改
A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据 但是 在A事务中查询的话 查到的都是操作之后的数据 没有提交的数据只有自己看得到,并没有update到数据库. 查看InnoD ...
- JAVA基础之Map接口
个人理解: 个人感觉Map接口以后会经常用到,可以很清晰地查找某个对象,要熟悉其四种遍历方法.特别注意其键值对的键不能是重复的,有想定义有序存取的话,可以使用LinkedHashMap集合.不过定义自 ...
- 【复习笔记】HTML基础
编码 HTML LANG标注整体文档语言 常用编码:ASCII.GB2312.UTF-8 中文编码解决: 1.浏览器要用一个编码表去看你的文件<meta charset="utf-8& ...
- ptxas fatal : Unresolved extern function Error 255
This question already has an answer here: External calls are not supported - CUDA 1 answer I am tryi ...
- pt-table-checksum和pt-table-sync
环境:系统bsd,标准安装,ports安装的mysql. 主172.16.21.126 从172.16.21.128vi /etc/rc.conf 添加 mysql_enable="YES& ...
- 查询日志logcat使用总结
cmd命令行中使用adb logcat命令查看Android系统和应用的log,dos窗口按ctrl+c中断输出log记录.logcat日志中的优先级/tag标记: android输出的每一条日志都有 ...
- SqlServer中嵌套事务使用--事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配 --根本问题
转自 :SqlServer中嵌套事务使用--事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配 --根本问题 问题: 1. System.Data.SqlClient.SqlExcepti ...