设为首页 收藏本站
查看: 1279|回复: 0

[经验分享] debian下配置keepalived ha

[复制链接]

尚未签到

发表于 2015-9-4 08:15:05 | 显示全部楼层 |阅读模式
  抄袭自http://blog.51yip.com/server/1417.html,做了一些修改
  可以参考http://blog.linuxphp.org/archives/1615/
  
  备注:NAT模式在rs机器上不需要做关于ip之类的任何配置,以下为DR模式,ip tunnerl模式也需要在rs上配置vip和router,ip tunnel和DR模式不允许改变后端的端口。
  
  服务器介绍



Master        192.168.1.11        //lvs主服务器
BACKUP        192.168.1.12        //lvs从服务器
VIP           192.168.1.8         //VIP
WEB1-Real     192.168.1.104       //RS服务器
WEB2-Real     192.168.1.108       //RS服务器
  VIP不需要用ifconfig手工配置,配置好keepalived以后,keepalived会自动给你配置好
  
  模式:



配置keepalived的两个主机会自动根据配置把VIP绑定到相关网卡
两个RS主机上需要手工绑定VIP,添加路由表
原因在于,当LVS把client的包转发给Real-server时,因为包的目的IP地址是VIP,那么如果Real-server收到这个包后,发现包的目的IP不是自己的系统IP,那么就会认为这个包不是发给自己的,就会丢弃这个包,所以需要将这个IP地址绑到网卡上;当发送应答包给client时,Real-server就会把包的源和目的地址调换,直接回复给client。

  
  在lvs的master和slave上安装ipvsadm和keepalived
  然后配置/etc/keepalived/keepalived.conf,额,debian下其实也有sample文件的,在/usr/share/doc/keepalived/下面,复制出来改改



global_defs {
router_id LVS_DEVEL                 #负载均衡器标识,同一网段内,可以相同
}
vrrp_sync_group VGM {                   #定义一个vrrp组
group {
VI_1
}
}  
vrrp_instance VI_1 {                    #定义vrrp实例
state BACKUP                        #主LVS是MASTER,从的BACKUP,一般都设置为BACKUP,并且priority高的设置为nopreempt(不抢占)
interface eth0                      #LVS监控的网络接口,笔记本测试的时候可以用wlan0,具体看自己的机器
virtual_router_id 51                #同一实例下virtual_router_id必须相同
priority 150                        #定义优先级,数字越大,优先级越高,MASTER必须高于BACKUP
   nopreempt
advert_int 1                        #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication {                #验证类型和密码
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {                 #虚拟IP
192.168.1.8
}
}
virtual_server 192.168.1.8 11111 {      #定义虚拟服务器
delay_loop 2                        #健康检查时间,单位是秒
lb_algo rr                          #负载调度算法,这里设置为rr,即轮询算法
lb_kind DR                          #LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选
persistence_timeout 60              #会话保持时间,指客户端往服务器发包时,在这个时间段内服务器把这些请求转发到同一个rs上,单位是秒,测试直接改成0
protocol TCP                        #转发协议类型,有tcp和udp两种
real_server 192.168.1.104 11111 {   #定义WEB服务器
weight 100                      #权重
TCP_CHECK {                    #通过tcpcheck判断RealServer的健康状态
connect_timeout 2          #连接超时时间
nb_get_retry 3             #重连次数
delay_before_retry 3       #重连间隔时间
connect_port 11111         #检测端口
}
}
real_server 192.168.1.108 11111 {
weight 100
TCP_CHECK {
connect_timeout 2
nb_get_retry 3
delay_before_retry 3
connect_port 11111
}
}
}
  从服务器只要改二个地方就行了,priority的权重调小一点,state改成BACKUP,注意realserver的connect_timeout字段
  
  下面配置real server的配置脚本
  gvim /etc/init.d/rs-lvs,并且chmod +x



#!/bin/bash
VIP=192.168.1.8
source /lib/lsb/init-functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
route add -host $VIP dev lo:0
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
echo 1 >/proc/sys/net/ipv4/ip_forward
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $VIP >/dev/null 2>&1
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 0 >/proc/sys/net/ipv4/ip_forward
sysctl -p >/dev/null 2>&1
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
  这个脚本如果是windows下scp到linux主机,需要vim以后set ff=unix,然后保存
  
  在lvs主机



sudo invoke-rc.d keepalived restart
  
rs主机



sudo invoke-rc.d rs-lvs start
  
  如何查看VIP在哪个lvs主机上
  



ip a
看eth0,应该能看到192.168.1.8这个VIP
  
  附上一个在rs执行的tunnel模式的脚本,lvs主机上lb_kind改成TUN



#!/bin/bash
VIP=192.168.1.8
source /lib/lsb/init-functions
case "$1" in
start)
ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up
route add -host $VIP dev tunl0
echo 1 >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo 0 >/proc/sys/net/ipv4/conf/tunl0/rp_filter
echo 1 >/proc/sys/net/ipv4/conf/tunl0/forwarding
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
#all的rp_filter非常重要,不然rs收不到
echo 0 >/proc/sys/net/ipv4/conf/all/rp_filter
echo 1 >/proc/sys/net/ipv4/ip_forward
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig tunl0 down
route del $VIP >/dev/null 2>&1
echo 0 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 >/proc/sys/net/ipv4/conf/all/arp_announce
echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter
echo 0 >/proc/sys/net/ipv4/ip_forward
sysctl -p >/dev/null 2>&1
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-109198-1-1.html 上篇帖子: Keepalived系列一:Keepalived.conf 详解 下篇帖子: 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表