lvs + keepalived 配置过程
实验环境
四台虚拟机
server1与server4为lvs负载均衡调度主机
server2与server3为apache主机
LVS负载均衡配置
server1上:
1.安装相关服务
[root@server1 ~]# yum insatll ipvsadm -y
2.添加VIP地址,并将VIP地址与后台apache主机相关联,查看并保存配置,启动服务
[root@server1 ~]# ip addr add 172.25.7.100/24 dev eth0
[root@server1 ~]# ipvsadm -A -t 172.25.7.100:80 -s rr(rr轮叫算法)
[root@server1 ~]# ipvsadm -a -t 172.25.7.100:80 -r 172.25.7.2:80 -g
[root@server1 ~]# ipvsadm -a -t 172.25.7.100:80 -r 172.25.7.3:80 -g
[root@server1 ~]# /etc/init.d/ipvsadm save
server2与server3上:
3.在回环接口lo上配置VIP,由于lo接口上由arp广播响应,需要进行arp抑制
[root@server2 ~]# ip addr add 172.25.7.100/32 dev lo
[root@server2 ~]# /etc/init.d/httpd start
4.安装相关服务进行arp抑制
[root@server2 ~]# yum install -y arptables_jf
[root@server2 ~]# arptables -A IN -d 172.25.7.100 -j DROP丢弃
[root@server2 ~]# arptables -A OUT -s 172.25.7.100 -j mangle --mangle-ip-s 172.25.7.2 伪装(arp应用于二层,只是不将100广播,当别人询问有100吗,不回应。但是可以正常的接收包封包,传输)
[root@server2 ~]# /etc/init.d/arptables_jf save
客户端上:
5.进行测试实验
LVS健康检查
server1上:
1.停止lvs服务,安装ldirectord服务
[root@server1 ~]# /etc/init.d/ipvsadm stop
[root@server1 ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@server1 ~]# yum install -y ldirectord-3.9.5-3.1.x86_64.rpm
2.配置ldirectord服务,对配置文件进行修改
[root@server1 ~]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
[root@server1 ~]# vim /etc/ha.d/ldirectord.cf
# Sample for an http virtual service
virtual=172.25.7.100:80
real=172.25.7.2:80 gate
real=172.25.7.3:80 gate
fallback=127.0.0.1:80 gate ##当所有的node挂掉之后本机上
service=http
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
request="index.html"
#receive="Test Page"
#virtualhost=www.x.y.z
[root@server1 ~]# /etc/init.d/ldirectord restart
3.安装httpd服务并编写测试页面,当server2与server3都停止服务时,将调用server1上的httpd服务
客户端上:
4.进行实验测试
高可用集群High-Avaliability
server1:
1.安装keepalived服务与其他必须服务
[root@server1 ~]# tar zxf keepalived-1.4.3.tar.gz
[root@server1 ~]yum install openssl-devel libnl3-devel ipset-devel iptables-devel libnfnetlink-devel
yu
No package libnl3-devel available. 可以不要
No package ipset-devel available. 可以不要
No package libnfnetlink-devel available.
[root@server1 ~]# yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm -y
2.进入keepalived目录进行源码编译
[root@server1 ~]# cd keepalived-1.4.3
[root@server1 keepalived-1.4.3]# ./configure --prefix=/usr/local/keepalived --with-init=SYSV
Use IPVS Framework : Yes
Use VRRP Framework : Yes
[oot@server1 keepalived-1.4.3]# make
[oot@server1 keepalived-1.4.3]# make install
3.制作软链接
[root@server1 keepalived]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ 启动脚本
[root@server1 keepalived]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@server1 keepalived]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[root@server1 keepalived]# ln -s /usr/local/keepalived/sbin/keepalived /bin/
[root@server1 keepalived]# chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
4.对keepalived配置文件进行修改
global_defs {
#当keepalived有动作时发邮件给本机
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict #当参数不被禁止掉时,每次加载keepalived都会给火墙中写入访问vip的包全部丢弃
vrrp_garp_interval 0
vrrp_gna_interval 0
}
#高可用模块
vrrp_instance VI_1 {
state MASTER #主
interface eth0
virtual_router_id 7 #每个人的路由id要不同
priority 100 #优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.7.100
}
}
#负载均衡(LVS)模块
virtual_server 172.25.7.100 80 {
delay_loop 6
lb_algo rr #轮叫的调度算法
lb_kind DR #LVS模式
#persistence_timeout 50 #持续链接
protocol TCP
real_server 172.25.7.2 80 {
weight 1 #权重
TCP_CHECK{
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.7.3 80 {
weight 1
TCP_CHECK{
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
server4:
5.同样进行上述配置与操作,并安装lvs服务
server2与server3:
6.分别添加VIP
[root@server2 ~]# ip addr add 172.25.60.100 dev eth0
[root@server3 ~]# ip addr add 172.25.60.100 dev eth0
客户端:
7.进行实验测试
server1为master,优先级高,所以当server1与server4都正常服务时,默认在server1上进行负载均衡调度,可以看到此时端口访问的mac地址正好为server1的mac地址。
当停止server1上的keepalived时:
可以看到此时发生了地址转移,VIP转移到了server4上。同时端口访问的mac地址为server4上的mac地址。此时后台服务器通过server4来调度。