Keepalived + LVS 高可用负载均衡集群部署
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keepalived + LVS 高可用负载均衡集群部署相关的知识,希望对你有一定的参考价值。
Keepalived(高可用)
通过在两台主、备调度器上实现Keepalived高可用解决调度器单点失败问题
主、备调度器上配置LVS,正常情况下主调度器工作
主调度器异常时,Keepalived启用备用调度器,保证了调度器的高可用
调度器保证了后台服务的高可用
Keepalived机制把同一个IP一直分配给同一个Web服务器
IP地址分配:
Web1: 192.168.10.20 ifcfg-lo:0 192.168.10.50
Web2: 192.168.10.22 ifcfg-lo:0 192.168.10.50
Client: 192.168.10.40
LVS+Keepalived主调度器: 192.168.10.10
LVS+Keepalived备调度器: 192.168.10.11
* LVS+Keepalived服务器上可以配置多个VIP虚拟IP,每个虚拟IP对应一个服务
如 200.1.1.10 是httpd 服务的虚拟IP
200.1.1.20 是邮件服务的虚拟IP
* 在LVS+Keepalived服务器上不配置eth0:0 只在真实WEB服务器上配置lo:0
一、两台调度器都安装keepalived
# yum install -y gcc gcc-c++ kernel-devel openssl-devel popt-devel
# tar xvzf keepalived-1.2.7.tar.gz -C /usr/src/
# cd /usr/src/keepalived-1.2.7/
# uname -r
2.6.32-358.el6.x86_64
#./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64/ && make && make install
--sysconf // keepalived的主配置文件存放位置/etc/keepalived/keepalived.conf
--with-kernel-dir //指定本服务器正在使用的内核文件的存放位置
# ln -s /usr/local/sbin/keepalived /sbin/
# chkconfig keepalived on
二、Keepalived 配置说明
1、主调度器设置
# vim /etc/keepalived/keepalived.conf
#设置报警邮件
global_defs {
notification_email {
[email protected] //发件人邮箱
}
notification_email_from [email protected] //收件人邮箱
smtp_server 172.0.0.1 //给谁发邮件
smtp_connect_timeout 30
router_id LVS_devel
}
#VRRP实例设置
vrrp_instanceVI_1 {
state MASTER //主服务器就写MASTER,辅助备份就写SLAVE
interface eth0
virtual_router_id 51
priority 100 //主服务器优先级要比备份的高例子:主是100 那么备用就是60
advert_int 1 //主备服务器多长时间互相检测 这里是1秒
authentication {
auth_type pass
auth_pass 1111 //主辅服务器密码必须一致
}
virtual_ipaddress { 192.168.10.50 } //指定调度器上的VIP虚拟IP
}
virtual_server 192.168.10.50 80 { //设置Real Server(Web服务器)上虚拟IP为192.168.10.50端口号80
delay_loop 6
lb_algo rr //设置LVS调度算法为RR
lb_kind DR //设置LVS的模式为DR
persistence_timeout 50 //在50秒内再次建立链接,会发配到以前的WEB服务器上
protocol TCP
real_server 192.168.10.20 80 { //指定真实服务器web上的IP和端口号
weight 1 //设置权重为1
TCP_CHECK {
connect_timeout 3 //连接3秒超时
nb_get_retry 3 //连接失败,重连3次
delay_before_retry 3 //每次连接失败3秒后在连接
}
}
real_server 192.168.10.22 80 { //指定真实服务器web上的IP和端口号
weight 2 //设置权重为2
TCP_CHECK {
connect_timeout 3 //连接3秒超时
nb_get_retry 3 //连接失败,重连3次
delay_before_retry 3 //每次连接失败3秒后在连接
}
}
}
注:其它的删除
2、备调度器设置 只要改下面两处
state SLAVE //主服务器就写MASTER,辅助备份就写SLAVE
priority 90 //主服务器优先级要比备份的高例子:主是100 那么备用就是60
三、两台调度器上都安装LVS(ipvsadm)
# mount /dev/sr0 /media
# rpm -ihv /media/Packages/ipvsadm-1.26-2.el6.x86_64.rpm
# service ipvsadm start ; chkconfig ipvsadm on
四、在所有真实WEB服务器上配置
1、调整内核参数
# vim /etc/sysctl.conf //调整web服务器上的内核参数
net.ipv4.conf.all.arp_announce = 2 //添加进去
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
# sysctl -p
2、创建和配置lo本地循环地址的子端口
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-lo ifcfg-lo:0
# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.10.50
NETMASK=255.255.255.255 //子网掩码必须全是255
BROADCAST=192.168.10.50 //广播地址跟IP一样
ONBOOT=yes
五、检查测试
两台调度器上操作:
# /etc/init.d/keepalived restart //重启keepalived服务
# ipvsadm -Ln // 查看LVS服务规则
# /etc/init.d/ipvsadm save //规则没问题,就保存
主调度器上操作:
# ip addr show eth0 //查看某一块网卡上面上的虚拟IP,能显示192.168.10.50
# ipvsadm -Ln // 再查看LVS服务规则
备调度器上操作:
# ip addr show eth0 //不能显示192.168.10.50
# ipvsadm -Ln // 再查看LVS服务规则
客户端访问:
http://192.168.10.50 此时显示web2上的内容,此时查看主调度器
# ipvsadm -Ln // 主调度器再查看LVS服务规则,已经有了连接
过会刷新http://192.168.10.50 此时显示web1上的内容,此时再查看主调度器,192.168.10.20对应
InActConn已从0变成1,说明LVS起到了负载作用。
将主调度器关闭,查看备调度器:
# ip addr show eth0 //此时能显示192.168.10.50了,说明备服务器起作用,keepalived实现了高可用
本文出自 “Dave-技术博客” 博客,请务必保留此出处http://davewang.blog.51cto.com/6974997/1859477
以上是关于Keepalived + LVS 高可用负载均衡集群部署的主要内容,如果未能解决你的问题,请参考以下文章
RedHat 7配置keepalived+LVS实现高可用的Web负载均衡