一、 简介
(1)、LVS简介
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 用现在的观点来看就是个4层(传输层tcp/udp)的负责均衡器。 它是一个由章文嵩博士发起的自由软件项目,现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
LVS目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。
官方地址:http://www.linuxvirtualserver.org
http://www.linuxvirtualserver.org/zh/
(2)、Keepalived简介
Keepalived是一个用C语言编写的路由软件。该项目的主要目标是为Linux系统和基于Linux的基础架构提供简单而强大的负载均衡和高可用性设施。
二、 实验环境
(1) 该测试为LVS(DR模式)+Keepalived+Web(Nginx)HA/LB架构
(2) 测试服务器如下:
序号 | IP | 名称 | 安装软件 |
---|---|---|---|
1 | 192.168.100.51 | LVS(主) Centos 7.3 | Keepalived ipvsadm |
2 | 192.168.100.52 | LVS(备) Centos 7.3 | Keepalived ipvsadm |
3 | 192.168.100.53 | Web(主) Centos 7.3 | Nginx |
4 | 192.168.100.54 | Web(备) Centos 7.3 | Nginx |
5 | 192.168.100.50 | VIP | |
6 | 192.168.100.127 | 测试PC(Windows 10) |
备注:测试已关闭防火墙及selinux
三、 实验
(1) 安装ipvsadm、keepalived(以下操作在LVS(主)、LVS(备)上操作):
# yum install –y ipvsadm keepalived
# vi /etc/keepalived/keepalived.conf #修改配置文件
(2) 配置LVS(以下操作在LVS(主)、LVS(备)上操作):
[root@t1 ~]# vi /etc/sysctl.conf
#打开转发
net.ipv4.ip_forward =0 -> net.ipv4.ip_forward=1
#让配置生效
[root@t1 ~]# sysctl –p
(3) 配置keepalived以下操作在LVS(主)、LVS(备)上操作):
[root@t1 ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.100.49 #因未配置smtp,这里没配置
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict #若ping不同vip,可以注释改项
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER #LVS(主)为MASTER,LVS(备)为BACKUP
interface ens33 #物理网卡名称
virtual_router_id 51 #主备需一致
priority 150 # 优先级,主大于备
advert_int 1 #心跳频率
authentication { #主备一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.100.50/32 dev ens33 #虚拟VIP
}
}
virtual_server 192.168.100.50 80 {
delay_loop 6 # 健康检查间隔时间(秒)
lb_algo rr # 调度算法(rr,轮询)
lb_kind DR # DR模式
persistence_timeout 50 #连接保持时间(秒)
protocol TCP
real_server 192.168.100.53 80 { #web1服务器ip 端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.100.54 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
#配置完主从后启动keepalived
[root@t1 ~]# systemctl start keepalived.service
#测试,在LVS主上可以看到vip
[root@t1 ~]# ip addr|grep ens33
[root@t1 ~]# ipvsadm –L
#若停止LVS(主),可以查看到自动漂移至LVS(从)
(4) 配置Web服务器(以下操作在Web(主)、Web(从)上操作):
#安装nginx
[root@t3 ~]# yum install g++ gcc openssl openssl-devel pcre pcre-devel zlib-devel –y
[root@t3 ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz
[root@t3 ~]# tar zxvf nginx-1.14.2.tar.gz
[root@t3 ~]# cd nginx-1.14.2/
[root@t3 ~]# ./configure
[root@t3 ~]# make
[root@t3 ~]# make install
#为方便测试,web(主)添加web1,web(备)添加web2
[root@t3 ~]# echo "hello,web1" > /usr/local/nginx/html/test.html
[root@t3 ~]# /usr/local/nginx/sbin/nginx
#配置web服务器,禁用Arp对虚拟IP的响应
[root@t3 ~]# vim /etc/sysctl.conf
net.ipv4.conf.ens33.arp_ignore=1
net.ipv4.conf.ens33.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
#配置web服务器,
[root@t3 ~]# ifconfig lo:0 192.168.100.50 netmask 255.255.255.255 broadcast 192.168.100.50 up
[root@t3 ~]# route add -host 192.168.100.50 dev lo:0
(5) 测试
1、在pc上,游览器访问http://192.168.100.50/test.html
显示,“hello,web1”;间隔50秒后(之前设置的连接时间)再次访问显示,“hello,web2”。
2、关闭web1上的nginx,访问显示,“hello,web2”
这里就不贴图了~
参考:
http://www.keepalived.org/index.html
http://www.linuxvirtualserver.org/zh/