LVS(DR)+keeplived
1. DS:Director Server。 指的是前端负载均衡器节点。
2. RS:Real Server。 后端真实的工作服务器。
3. VIP: 向外部直接面向用户请求,作为用户请求的目标的IP地址。
4. DIP:Director Server IP, 主要用于和内部主机通讯的IP地址。
5. RIP:Real Server IP, 后端服务器的IP地址。
6. CIP:Client IP, 访问客户端的IP地址。
第一部分:
实验环境:
系统版本linux7.2
DS:192.168.1.100
RS:192.168.1.200(serverA) 192.168.1.201(serverB)
客户端 :192.168.1.3(用于验证)
1,首先两台RS安装web服务器,这里使用nginx:
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx
nginx
修改默认index文件,区分两台RS
nginx -s reload 重载配置,客户端访问:
2,配置DS服务器(192.168.1.100)
加载LVS内核模块
LVS现在已经成为LINUX内核的一部分,默认编译为ip_vs模块,必要时能够自动调用,
modprobe ip_vs 手动加载ip_vs模块
cat /proc/net/ip_vs
安装管理软件ipvsadm,不需要启动
rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm
下载地址http://www.linuxvirtualserver.org/software/ipvs.html#kernel-2.6
创建调度脚本
#!/bin/bash
#
ifconfig ens33:0 192.168.1.10 broadcast 192.168.1.10 netmask 255.255.255.255 up
route add -host 192.168.1.10 dev ens33:0
ipvsadm –C
ipvsadm -A -t 192.168.1.10:80 -s rr
ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.200:80 –g
ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.201:80 –g
ipvsadm –Ln
chmod +x dr.sh
sh dr.sh
ifconfig
3,配置两台web服务器
vim web_dr.sh
#!/bin/bash
#haha
ifconfig lo:0 192.168.1.10 broadcast 192.168.1.10 netmask 255.255.255.255 up
route add -host 192.168.1.10 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
sysctl -p &>/dev/null
执行脚本
ifconfig
4,测试
备注:
arp_ignore和arp_annonuce参数参考https://www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
第二部分: +keepalievd
环境:
系统版本linux7.2
DS:192.168.1.100(主) 192.168.1.99(备)
RS:192.168.1.200(serverA) 192.168.1.201(serverB)
yum install keepalived (两节点)
vim /etc/keepalived/keepalived.conf
global_defs { notification_email { acassen@firewall.loc #报警接收人,多个写多行 failover@firewall.loc sysadmin@firewall.loc } notification_email_from ******@163.com #报警发件人 smtp_server smtp.163.com #发送email时使用的smtp服务器地址 smtp_connect_timeout 30 #smtp超时时间 router_id LVS_DEVEL #标识,发邮件的主题信息 } vrrp_instance VI_1 { state MASTER #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器 interface ens33 #指定HA监测网络的接口 virtual_router_id 51 #虚拟路由标识,即同一vrrp_instance下,MASTER和BACKUP必须是一致的 priority 100 #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER必须大于BACKUP advert_int 1 #定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 authentication { auth_type PASS #设置验证类型,主要有PASS和AH两种 auth_pass 1111 #设置验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信 } virtual_ipaddress { 192.168.1.10 #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个 } } virtual_server 192.168.1.10 80 { 设置虚拟服务器,需要指定虚拟IP地址和服务端口 delay_loop 6 #设置运行情况检查时间,单位是秒 lb_algo rr #设置负载调度算法,这里设置为rr,即轮询算法 lb_kind DR #设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选 persistence_timeout 0 #会话保持时间,单位是秒。这个选项对动态网页是非常有用的,为集群系统中的session共享提供了一个很好的解决方案。 protocol TCP #指定转发协议类型,有TCP和UDP两种 real_server 192.168.1.200 80 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.1.201 80 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
拷贝主节点的配置文件keepalived.conf,然后修改如下内容:
state MASTER -> state BACKUP priority 100 -> priority 90
router_id LVS2
测试两台分别停掉keepalived,是否能访问正常
ipaddr