共计 6205 个字符,预计需要花费 16 分钟才能阅读完成。
LVS+keepalived 的安装部署怎么完成 mysql 的负载均衡,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
试验环境:
LVS1:192.168.9.27
LVS2:192.168.9.28
keepalived 的 VIP:192.168.9.230
要分发的 mysql1: 192.168.9.29
要分发的 mysql2:192.168.9.30
具体安装步骤:
# 下载 ipvsadm(也就是 LVS 程序包)
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
# 解压
[root@lvs-a ~]# tar -zxf ipvsadm-1.24.tar.gz
# 进入该 ipvsadm 目录
[root@lvs-a ~]# cd /usr/local/ipvsadm-1.24
# 安装开发包及库文件
[root@lvs-a ipvsadm-1.24]# # yum install zlib-devel gcc gcc-c++ openssl-devel pcre-devel libtool kernel-devel ncurses-devel -y
# 创建内核连接
[root@lvs-a ipvsadm-1.24]# ln -sv /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux #(2.6.18-194.el5-i686)根据系统版本修改。
# 编译安装
[root@lvs-a ipvsadm-1.24]# make;make install
# 进入目录
[root@lvs-a ~]# cd /usr/local/
# 下载 keepalived
wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
# 解压
[root@lvs-a ipvsadm-1.24]# tar -zxf keepalived-1.2.12.tar.gz
# 进入该 keepalived 目录
[root@lvs-a ~]cd keepalived-1.2.12
# 编译安装
[root@lvs-a keepalived-1.2.12]#./configure –prefix=/usr/local/keepalived # 这里编译完后面显示三个 yes,说明编译成功,否则安装不成功。
# 以下为 1.2.12 版本./configure 结果如下
# 如果为 1.1.17 版本./configure 结果如下
[root@lvs-a keepalived-1.2.12]#make
[root@lvs-a keepalived-1.2.12]#make install
# 复制启动文件
[root@lvs-a keepalived-1.2.12]#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ ## 这样才能用 service keepalived 的命令。
# 复制命令文件
[root@lvs-a keepalived-1.2.12]#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# 复制【配置文件
[root@lvs-a keepalived-1.2.12]#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# 新建主配置文件目录
[root@lvs-a keepalived-1.2.12]#mkdir -p /etc/keepalived
# 编辑配置文件 LVS1
[root@lvs-a sysconfig]#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lvs
}
vrrp_sync_group http { # 设置 vrrp 组, 随便起名字,
group {
mysql ### 随便起的名字
}
}
vrrp_instance apache { ### 定义一个 vrrp 实例
state MASTER # 设置 lvs 的状态, MASTER 和 BACKUP 两种,必须大写,主节点 master, 从节点 backup
interface eth0 # 设置对外服务的接口,也就是 /LVS 监控的网络接口
virtual_router_id 01 # 设置 lvs 监听的接口,同一实例下 virtual_router_id 必须相同 ,随便起名字
priority 500 # # 设置优先级,数值越大,优先级越高,也就是主节点的这个值大
advert_int 1 ## //MASTER 与 BACKUP 负载均衡器之间同步检查的时间间隔,单位是秒
authentication { # 设置验证类型和密码
auth_type PASS
auth_pass aabb ## 密码
}
virtual_ipaddress { ## 设置 keepalived 的 VIP
192.168.9.230 # 如果有多个,往下加就行了
#192.168.9.231
#192.168.9.232
}
}
virtual_server 192.168.9.230 3306 { ## 定义虚拟服务器
delay_loop 6 # 健康检查时间,单位是秒。
lb_algo rr # 负载调度算法,这里设置为 rr,即轮询算法
lb_kind DR #LVS 实现负载均衡的机制,可以有 NAT、TUN 和 DR 三个模式可选
nat_mask 255.255.255.0 #可以不填写这个参数,
# persistence_timeout 50
protocol TCP
real_server 192.168.9.29 3306 { ## 要分发的目标服务器 IP,
weight 1 # 设置权重,也就是分发的次数,这里表示每个分发一次,
TCP_CHECK { # 通过 tcpcheck 判断 RealServer 的健康状态
connect_timeout 3 ## 连接超时时间
#nb_get_retry 3 #重连次数 , 有默认值
#delay_before_retry 3 # 重连间隔时间 有默认值
connect_port 3306
}
}
real_server 192.168.9.30 3306 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 3306
}
}
}
# 配置完成重启 keepalived
[root@lvs-a sysconfig]#service keepalived restart
# 添加自己的网关
[root@lvs-a network-scripts]# route add -host 192.168.9.254 dev eth0
# 安装 keepalived 同 lvs1 相同
# 安装 keepalived 后配置 LVS2,配置如下:
[root@lvs-b ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lvs
}
vrrp_sync_group http {
group {
mysql
}
}
vrrp_instance apache {
state BACKUP
interface eth0
virtual_router_id 01
priority 400
advert_int 1
# nopreempt
authentication {
auth_type PASS
auth_pass aabb
}
virtual_ipaddress {
192.168.9.230
}
}
virtual_server 192.168.9.230 3306 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
# persistence_timeout 50
protocol TCP
real_server 192.168.9.29 3306 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 3306
}
}
real_server 192.168.9.30 3306 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 3306
}
}
}
# 配置完成重启 keepalived
service keepalived restart
# 添加自己的网关
route add -host 192.168.9.254 dev eth0
# 查看
route -n
# 查看分发结果
Ipvsadm -ln
# 清除分发
Ipvsadm -C
# 查看虚拟 ip(VIP)
Ip addr
# 配置 mysql-realserver1 在 192.168.9.29 上执行:
[root@lvs-a ~]# ifconfig lo:0 192.168.9.230 netmask 255.255.255.0 broadcast 192.168.9.230 up ## 设置的一个临时的 IP
设置到主机的路由
[root@lvs-b ~]# route add -host 192.168.9.230 dev lo:0
设置默认路由
[root@lvs-b ~]#route add default gw 192.168.9.137
保证 arp 协议在连接过程中,路由器上,只知道网络中 192.168.9.230 对应的是分发器
[root@lvs-b ~]#echo 1 /proc/sys/net/ipv4/conf/all/arp_ignore
[root@lvs-b ~]#echo 2 /proc/sys/net/ipv4/conf/all/arp_announce
# 配置 mysql-realserver2 在 192.168.9.30 上执行:
[root@lvs-a ~]# ifconfig lo:0 192.168.9.230 netmask 255.255.255.0 broadcast 192.168.9.230 up
设置到主机的路由
[root@lvs-a ~]#route add -host 192.168.9.230 dev lo:0
设置默认路由
[root@lvs-a ~]#route add default gw 192.168.153.137
保证 arp 协议在连接过程中,路由器上,只知道网络中 192.168.9.230 对应的是分发器
[root@lvs-a ~]#echo 1 /proc/sys/net/ipv4/conf/all/arp_ignore
[root@lvs-a ~]#echo 2 /proc/sys/net/ipv4/conf/all/arp_announce
# 两台 mysql-realserver 配置完成后启动分别 mysql
Service mysqld start
LVS 分发测试:
1,在 mysql-realserver1(192.168.9.29) 创建一个名字叫做 slave1 的数据库:
mysql create database slave1;
Query OK, 1 row affected (0.00 sec)
2,在 mysql-realserver2 (192.168.9.30)上创建一个名字叫做 slave2 的数据库:
mysql create database slave2 ;
Query OK, 1 row affected (0.00 sec)
3,在一台能 ping 通 mysql-realserver1 和 mysql-realserver2 的机器上执行(注意不要在正在用着的 lvs 机器上执行,例如我现在 lvs 用着 [root@lvs-a ~]# 这个机器,如果你在这里执行他会报错
[root@lvs-a ~]# mysql -uroot -pliuwenhe -h292.168.9.230 -e show databases
ERROR 2003 (HY000): Can t connect to MySQL server on 192.168.9.230 (111)
You have new mail in /var/spool/mail/root
[root@lvs-b ~]# mysql -uroot -pliuwenhe -h292.168.9.230 -e show databases
+——————–+
| Database |
+——————–+
| information_schema |
| he |
| liuwenhe |
| mysql |
| performance_schema |
| slave1 |
| test |
+——————–+
[root@lvs-b ~]# mysql -uroot -pliuwenhe -h292.168.9.230 -e show databases
+——————–+
| Database |
+——————–+
| information_schema |
| he |
| liuwenhe |
| mysql |
| performance_schema |
| slave2 |
| test |
+——————–+
说明 lvs 分发成功。
看完上述内容,你们掌握 LVS+keepalived 的安装部署怎么完成 mysql 的负载均衡的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!