抄袭自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
}

#这里似乎也支持脚本
    # notify_master /path/to/to_master.sh
    # notify_backup /path_to/to_backup.sh
    # notify_fault "/path/fault.sh VG_1"

}

vrrp_instance VI_1 {                    #定义vrrp实例
state BACKUP #主LVS是MASTER,从的BACKUP,一般都设置为BACKUP,并且priority高的设置为nopreempt(不抢占)
interface eth0 #LVS监控的网络接口,笔记本测试的时候可以用wlan0,具体看自己的机器
virtual_router_id #同一实例下virtual_router_id必须相同
priority #定义优先级,数字越大,优先级越高,MASTER必须高于BACKUP
   nopreempt
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #验证类型和密码
auth_type PASS
auth_pass
}


virtual_ipaddress { #虚拟IP
192.168.1.8
}
} virtual_server 192.168.1.8 { #定义虚拟服务器
delay_loop #健康检查时间,单位是秒
lb_algo rr #负载调度算法,这里设置为rr,即轮询算法
lb_kind DR #LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选
persistence_timeout #会话保持时间,指客户端往服务器发包时,在这个时间段内服务器把这些请求转发到同一个rs上,单位是秒,测试直接改成0
protocol TCP #转发协议类型,有tcp和udp两种 real_server 192.168.1.104 { #定义WEB服务器
weight #权重 TCP_CHECK { #通过tcpcheck判断RealServer的健康状态
connect_timeout #连接超时时间
nb_get_retry #重连次数
delay_before_retry #重连间隔时间
connect_port #检测端口
}
} real_server 192.168.1.108 {
weight

#这里支持任意脚本,很强大
#notify_down "xxxx.sh your_param"
#notify_up "xxxx.py"
TCP_CHECK {
connect_timeout
nb_get_retry
delay_before_retry
connect_port
}
}
}

从服务器只要改二个地方就行了,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: $VIP netmask 255.255.255.255 broadcast $VIP up
route add -host $VIP dev lo: echo >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo >/proc/sys/net/ipv4/conf/lo/arp_announce echo >/proc/sys/net/ipv4/conf/all/arp_ignore
echo >/proc/sys/net/ipv4/conf/all/arp_announce
echo >/proc/sys/net/ipv4/ip_forward sysctl -p >/dev/null >&
echo "RealServer Start OK"
;;
stop)
ifconfig lo: down
route del $VIP >/dev/null >& echo >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo >/proc/sys/net/ipv4/conf/lo/arp_announce
echo >/proc/sys/net/ipv4/conf/all/arp_ignore
echo >/proc/sys/net/ipv4/conf/all/arp_announce
echo >/proc/sys/net/ipv4/ip_forward

sysctl -p >/dev/null 2>&1
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit
esac exit

这个脚本如果是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 >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo >/proc/sys/net/ipv4/conf/tunl0/rp_filter
echo >/proc/sys/net/ipv4/conf/tunl0/forwarding echo >/proc/sys/net/ipv4/conf/all/arp_ignore
echo >/proc/sys/net/ipv4/conf/all/arp_announce
#all的rp_filter非常重要,不然rs收不到
echo >/proc/sys/net/ipv4/conf/all/rp_filter
echo >/proc/sys/net/ipv4/ip_forward sysctl -p >/dev/null >&
echo "RealServer Start OK"
;;
stop)
ifconfig tunl0 down
route del $VIP >/dev/null >& echo >/proc/sys/net/ipv4/conf/all/arp_ignore
echo >/proc/sys/net/ipv4/conf/all/arp_announce
echo >/proc/sys/net/ipv4/conf/all/rp_filter
echo >/proc/sys/net/ipv4/ip_forward

sysctl -p >/dev/null 2>&1
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit
esac exit

debian下配置keepalived ha的更多相关文章

  1. Linux下配置 Keepalived(心跳检测部署)

    首先呢,我想先给大家简单介绍一下什么是keepalived: Keepalived的作用是检测服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的服务器 ...

  2. Ubuntu下配置 keepalived+nginx+tomcat 负载均衡

    本文力图阐述在 Ubuntu Server 环境下使用 Keepalived + Nginx + Tomcat 搭建高可用负载均衡环境的操作步骤和简约配置,这里不涉及性能调优.先说一下他们各自扮演的角 ...

  3. Debian下配置防火墙iptables

    debian下iptables输入命令后即时生效,但重启之后配置就会消失,可用iptables-save快速保存配置,因为Debian上iptables是不会保存规则的,然后在开机自动的时候让ipta ...

  4. debian下配置nginx缓存

    root权限下 新建/usr/nginx/cache/webpages目录 在/etc/nginx/sites-available下找到自己所需配置的文件,打开文件后在开头加上proxy_cache_ ...

  5. debian下配置dynamic printk以及重新编译内核

    在以前的一篇博文<编译debian内核>已经提过了重新编译内核的方法,但是整个过程花费时间较长,并且生成deb包. 这里我采用稍微简单一些的方法,因为我并没有对内核或者驱动代码做任何修改, ...

  6. Debian下配置SSH服务器的方法

    Debian 503版本中实现的,Debian默认好像是没有ssh支持的. SSH的安装apt-get install openssh-serverapt-get install sshSSH的配置O ...

  7. debian下配置网络 安装无线网卡驱动 Broadcom BCMXX系列

    解决方案来自于debian官网  https://wiki.debian.org/wl 1.加入源 deb http://http.debian.net/debian/ wheezy main c ...

  8. Debian下配置网络的方法

    1.网络配置 配置网卡修改 /etc/network/interfaces 添加如下 # #号后面是备注,不要添加哦! auto eth0 #开机自动激活 iface eth0 inte static ...

  9. debian下配置双核cpu

    ----------------------------文:jiqing(吉庆) http://hi.baidu.com/jiqing0925email: jiqingwu@gmail.comdate ...

随机推荐

  1. 快速切题 sgu105. Div 3 数学归纳 数位+整除 难度:0

    105. Div 3 time limit per test: 0.25 sec. memory limit per test: 4096 KB There is sequence 1, 12, 12 ...

  2. sql 的理解

    sql的作用有: 1.筛选数据,连接表 2.数据的补充,连接表 3.数据的加减乘除的运算,+ - * / 4.数据的逻辑运输,比如case..when...,decode,nvl,ifnull.... ...

  3. NodeJS之express的路由浅析

    路由路径和请求方法一起定义了请求的端点,它可以是字符串.字符串模式或者正则表达式.后端在获取路由后,可通过一系列类似中间件的函数去执行事务. 可使用字符串的路由路径: // 匹配根路径的请求 app. ...

  4. LeetCode OJ:Insert Interval

    Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...

  5. ORA-01034:Oracle not available

    ORA-01034:Oracle not available 问题描述:ora-01034常与ora-27101同时出现,都是在登录数据库的时候报该错误 错误原因:出现ORA-01034和ORA-27 ...

  6. L1-015 跟奥巴马一起画方块

    美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正 ...

  7. java读取大容量excel之一

    最近在用poi读取大容量excel,发现只要是excel文件大于2M左右,便会出现OOM(out of memory),经过查询得知,原来poi读取excel的原理是如下: org.apache.po ...

  8. Incremental Method

    「遞增法」是符合電腦運作特性的方法.電腦執行程式,一次只做一個動作,完成了一件事才做下一件事.當一個問題太大太多時,化整為零.一個一個解決吧! 合抱之木,生於毫末:九層之臺,起於累土:千里之行,始於足 ...

  9. kindle看扫描版pdf的解决办法

    (1)先把PDF crop (2)转JPEG (3)JPEG根据kindle的屏幕的分辨率,调整JPEG图像大小,kindle whater paper 大小为1448*1072 (4)   最后把j ...

  10. This App does not have access to your photos or videos in iOS 9

    出现这个总是由于info.plist文件内的CFBundleDisplayName没有值或者为空.把名称填进去就可以用了.