keepalived和lvs实现mysql读负载均衡
keepalived+lvs实现对mysql读负载均衡
环境:redhat 6.5
real server: 172.25.254.189 172.25.254.224
lvs: 172.25.254.5 172.25.254.112
给real server端配置VIP,写脚本
#!/bin/bash
VIP=172.25.254.222
. /etc/init.d/functions
case "$1" in
start)
/sbin/ifconfig lo:0 $VIP broadcast netmask 255.255.255.255 up
echo "real server lvs start"
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/sbin/ifconfig lo:0 down
echo "real server lvs stop"
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 (start|stop)"
exit 1
esac
exit 0
配置lvs和keepalived
安装ipvsadm
yum install ipvsadm -y
在两台调度端上安装keepalived
tar zxf keepalived-1.2.19.tar.gz
yum install -y libnl-devel openssl-devel gcc
./configure --prefix=/usr/local/keepalived
make
make install
scp -r /usr/local/keepalived/ 172.25.7.4:/usr/local/
两台lvs上配置
ln -s /usr/local/keepalived/etc/keepalived/ /etc/ ##配置文件
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ ##启动脚本
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
对keepalived的配置
vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 { ##vrrp虚拟路由协议
14 state MASTER ##备机改为BACKUP,此状态是由priority的值来决定的,当前的优先级值小于备机的值,则将会失去MASTER状态
15 interface eth0 ##HA监测网络接口,用于心跳信息的传递
16 virtual_router_id 7 ##主备机的虚拟路由id必须相同,取值0-255
17 priority 100 ##主机的优先级,备份机改为90,主机优先级一定大于
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.254.222
}
}
virtual_server 172.25.254.222 3306 {
delay_loop 3
lb_algo rr
lb_kind DR
# nat_mask 255.255.255.0
# persistence_timeout 50
protocol TCP
real_server 172.25.254.189 3306{
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.25.254.224 3306{
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
对两台real server的mysql做主从复制,然后开启服务,具体的主从复制步骤可以查看mysql的笔记
sh /etc/lvs.sh start
/etc/init.d/mysqld start
调度端
[root@server5 mail]# /etc/init.d/keepalived restart
Stopping keepalived: [ OK ]
Starting keepalived: [ OK ]
[root@server5 mail]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.254.111:http rr
-> localhost:http Local 1 0 0
TCP 172.25.254.222:mysql rr
-> sky.example.com:mysql Route 1 0 0
-> server0.example.com:mysql Route 1 0 0
常见问题
1)为什么同一个IP的某一个时间段访问的都分配到同一个real server.
LVS的持久链接有两种,持久时间工作原理
当一个新的请求进来的时候,就创建了一个此IP的信息,并添加一个state为none的记录,该记录有效期会轮询至此ip端的链接信息的超时退出DIRCTOR。
2) RealServer 为什么要在 lo 接口上配置 VIP,在出口网卡上配置 VIP 可以吗?
既然要让 RS 能够处理目标地址为 vip 的 IP 包,首先必须要让 RS 能接收到这个包。在 lo 上配置 vip 能够完成接收包并将结果返回 client。
答案是不可以将 VIP 设置在出口网卡上,否则会响应客户端的 arp request,造成 client/gatewayarp table 紊乱,以至于整个 loadbalance 都不能正常工作
- RealServer 为什么要抑制 arp 帧?这个问题在上一问题中已经作了说明,这里结合实施命令进一步阐述。我们在具体实施部署的时候都会作如下调整:
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
4)脑裂:
如果实际生产环境中为了避免脑裂问题,需要把BACKUP和MATER的优先级设置的不一样。
keepalived和lvs实现mysql读负载均衡的更多相关文章
- 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡【转载】
文章 原始出处 :http://sofar.blog.51cto.com/353572/1601552 ============================================== ...
- Atlas+Keepalived实现MySQL读写分离、读负载均衡
一.基础介绍 ========================================================================================== 1. ...
- 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡
========================================================================================== 一.基础介绍 == ...
- lvs(+keepalived)、haproxy(+heartbeat)、nginx 负载均衡的比较分析
目前使用比较多的就是标题中提到的这两者,其实lvs和haproxy都是实现的负载均衡的作用,keepalived和heartbeat都是提高高可用性的,避免单点故障.那么他们为什么这么搭配,而又有什么 ...
- MySQL数据库读写分离、读负载均衡方案选择
MySQL数据库读写分离.读负载均衡方案选择 一.MySQL Cluster外键所关联的记录在别的分片节点中性能很差对需要进行分片的表需要修改引擎Innodb为NDB因此MySQL Cluster不适 ...
- Mysql - 读写分离与读负载均衡之Maxscale
一.概述 常见的高可用方案如MMM和MHA等都将重点放在主库上,一旦主库出现故障,通过这些方案能将主库故障进行转移. 本文将给大家介绍一款由mariadb公司出品的中间件Maxscale,该中间件能实 ...
- Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡
周末的时候一个正在学Linux的朋友问我,高可用怎么玩?我和他微信了将近三个小时,把Nginx和haproxy双主高可用教给他了,今天突然想把这个给写进博客里,供给那些正在学习Linux系统的朋友们, ...
- Heartbeat+LVS构建高可用负载均衡集群
1.heartbeat简介: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里 ...
- 搭建 Keepalived + Nginx + Tomcat 的高可用负载均衡架构
1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...
随机推荐
- Mysql 实用语句记录
都是工作中遇到的需求,但不是常用sql,特此记录,方便以后使用: 1.将指定列的数据拼起来存到某一列 UPDATE table_name SET b_col_name=CONCAT(b_col_nam ...
- shell 并发进程的例子
linux shell 实现后台多进程运行的,开始和终止 原创 2014年11月21日 12:04:51 9953 linux shell 实现后台开始,和停止多进程 知识点: xxxxcmd.sh ...
- [pipenv]Warning: Python 3.7 was not found on your system…
前置条件: 切换到pipfile文件所在目录gotest_official 问题描述: 使用pipenv install创建虚拟环境,报错 wangju@wangju-HP--G4:~/Desktop ...
- django路由的二级分发
基于二级分发设计url路由 path('index/', views.index), path('index/', ([ path('test01/', test01), path('test02/' ...
- Selenium 2自动化测试实战5(模块调用)
一.模块调用 1.创建一个目录project,并且在目录下面创建两个文件 project/ 一 pub.py L一 count.py 在pub.py文件中创建add函数. #pub.py def ad ...
- Fiddler抓取APP接口
1.获取本机IP地址 2.打开手机设置无线连接(需要和电脑在同一局域网) 长按wifi连接修改无线连接 打开高级选项,设置主机名和端口后保存 3.设置Fiddler 从下图可以看出,抓到的全是HTTP ...
- 用roles部署nginx
1.初始化一个role [root@bogon ~]# ansible-galaxy init /etc/ansible/roles/websrvs 查看已经创建的role [root@bogon ~ ...
- sql server 2014安装后用sa登录问题
在使用的sql server的数据的情况下,安装数据过程,未指定使用sa的登录,只能使用windows的账户登录,那要怎么设置账户来使用sa账户登录账号呢? 首先先打开的是sql server man ...
- LeetCode.1022-根到叶路径二进制数之和(Sum of Root To Leaf Binary Numbers)
这是小川的第381次更新,第410篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第243题(顺位题号是1022).给定二叉树,每个节点值为0或1.每个根到叶路径表示以最高 ...
- 黑龙江网络安全技能竞赛awd后门分析复现
0x0环境 0x1分析复现 0x2感想 围绕主办方留下的浅显后门可以打满整场,想拿第一还是要搞定深层后门