LVS有三种工作模式,分别是DR(Direct Routing 直接路由)、TUN(Tunneling IP隧道)、NAT(Network Address Translation 网络地址转换)。其中TUN模式能够支持更多的Real Server,但需要所有服务器支持IP隧道协议;DR也可以支持相当的Real Server,但需要保证Director Server虚拟网卡与物理网卡在同一网段;NAT扩展性有限,无法支持更多的Real Server,因为所有的请求包和应答包都需要Director Server进行解析再生,影响效率。 同时,LVS负载均衡有10中调度算法,分别是rr、wrr、lc、wlc、lblc、lblcr、dh、sh、sed、nq(详细介绍本文不在说明)
本文中将利用LVS实现MySQL的读写负载均衡,Keepalived避免节点出现单点故障。
LVS+Keepalived配置
环境准备
LVS1:172.30.8.192
LVS2:172.30.8.193
MySQL Server1:172.30.8.190
MySQL Server2:172.30.8.191
VIP:172.30.8.200
OS: CentOS 6.5
Mysql安装及双主配置
MySQL:5.1.73
本文为了方便直接采用的yum安装方式安装将不在介绍
全局配置(即MAster,Slave都需配置)
1)修改配置文件
#vim /etc/my.cnf
添加
log-bin=mysql-bin
server-id=190
修改完需要重启数据库
注:server-id是唯一id一般都采用ip末尾
2)分配复制权限,主库和从库均需要执行
mysql> grant replication client,replication slave on *.* to root@'172.30.8.%' identified by 'root';
Query OK,0 rows affected (0.00 sec)
2)清空日志文件,主从库都是默认开启二进制日志文件
mysql>show binary logs;+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 26636 |
| mysql-bin.000002 | 1069399 |
| mysql-bin.000003 | 26636 |
| mysql-bin.000004 | 1069399 |
| mysql-bin.000005 | 536 |
+------------------+-----------+
5 rows in set (0.00sec)
mysql>reset master;
Query OK,0 rows affected (0.01sec)
mysql>show binary logs;+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 107 |
+------------------+-----------+
1 row in set (0.00 sec)
需要注意的是,如果不想清空日志文件的话,需要记录当前master的log_file和log_pos,并在下面启用复制操作时指定这两个参数或者在slave的配置文件指定。
Slave配置
1)启用复制
让slave连接master并开始重做master二进制日志中的事件
mysql> change master to master_host='172.30.8.190',master_user='root',master_password='1231234',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=107;
master_log_pos如果是日志的开始位置值可以为0&#x