本文共 3648 字,大约阅读时间需要 12 分钟。
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)。
官方地址:
Keepalived是一个用C语言编写的路由软件。该项目的主要目标是为Linux系统和基于Linux的基础架构提供简单而强大的负载均衡和高可用性设施。
序号 | 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
# yum install –y ipvsadm keepalived# vi /etc/keepalived/keepalived.conf #修改配置文件
[root@t1 ~]# vi /etc/sysctl.conf#打开转发net.ipv4.ip_forward =0 -> net.ipv4.ip_forward=1#让配置生效[root@t1 ~]# sysctl –p
[root@t1 ~]# vi /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs { notification_email { test@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc 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(从)
#安装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.confnet.ipv4.conf.ens33.arp_ignore=1net.ipv4.conf.ens33.arp_announce=2net.ipv4.conf.all.arp_ignore=1net.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
1、在pc上,游览器访问http://192.168.100.50/test.html
显示,“hello,web1”;间隔50秒后(之前设置的连接时间)再次访问显示,“hello,web2”。2、关闭web1上的nginx,访问显示,“hello,web2”
这里就不贴图了~
参考:
转载于:https://blog.51cto.com/bilibili/2340219