虚拟机(CentOS 7.4)
准备了4台虚拟机,用于测试
虚拟机环境:所有虚拟机关闭防火墙,关闭selinux
一、软件安装
1)、分别在192.168.3.2 (master)和 192.168.3.6 (backup)上安装keepalived
Keepalived安装
开机自启,启动服务
[root@master ~]# yum install keepalived -y [root@master ~]# systemctl enable keepalived [root@master ~]# systemctl restart keepalived
2)、分别在192.168.3.2(master) 和 192.168.3.6 (backup)上安装ipvsadm 工具,用于查看lvs转发及代理情况。
ipvsadm安装
[root@backup ~]# yum install ipvsadm -y
3)、分别在192.168.3.3(web1) 和 192.168.3.4(web2)安装apache 网页服务器
开机自启,启动服务
[root@web1 ~]# yum install httpd -y [root@web1 ~]# systemctl enable http [root@web1 ~]# systemctl restart httpd
4)、分别在192.168.3.3(web1) 和 192.168.3.4(web2)中,写入一个不同的测试页面
[root@web1 ~]# echo "192.168.3.3 (web1)" > /var/www/html/index.html [root@web2 ~]# echo "192.168.3.4 (web2)" > /var/www/html/index.html
测试下页面:
二、配置网络环境
1)、分别在192.168.3.3(web1) 和 192.168.3.4(web2)配置虚拟 vip 地址,以及
这里的子网掩码必须是32,网络地址与IP地址一样,广播地址与IP地址也一样。
[root@web1 ~]# cd /etc/sysconfig/network-scripts/ [root@web1 ~]# cp ifcfg-lo ifcfg-lo:0 [root@web1 ~]# vim ifcfg-lo:0 DEVICE=lo:0 IPADDR=192.168.3.200 NETMASK=255.255.255.255 NETWORK=192.168.3.200 BROADCAST=192.168.3.200 ONBOOT=yes NAME=lo:0
2)、分别在192.168.3.3(web1) 和 192.168.3.4(web2)上配置ARP抑制
[root@web1 ~]# vim /etc/sysctl.conf net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2 [root@web1 ~]# sysctl -p ##重新载入sysctl配置文件
arp_ignore和arp_announce参数都和ARP协议相关,主要用于控制系统返回arp响应和发送arp请求时的动作。
arp_ignore :(回应ARP,作用是控制系统在收到外部的arp请求时,是否要返回arp响应。
0 :响应任何网口上收到的对任何本机IP地址的ARP查询请求(默认)
1:只响应目的IP地址为接收网卡上的本地地址的arp请求
2:只响应目标IP是接收网口的IP的ARP查询请求,且发送者IP必须与该网口属于同一网段
4--7: 保留未使用
8: 不回应所有ARP查询
arp_announce (宣告,作用是控制系统在对外发送arp请求时,如何选择arp请求数据包的源IP地址。
0:允许使用任意网卡上的IP地址作为arp请求的源IP
1:尽量避免使用不属于该发送网卡子网的本地地址作为发送arp请求的源IP地址。
2:忽略IP数据包的源IP地址,选择该发送网卡上最合适的本地地址作为arp请求的源IP地址。
3)、分别在192.168.3.3(web1) 和 192.168.3.4(web2) 重启网络服务
查看vip 虚拟地址
[root@web1 ~]# systemctl restart network [root@web1 ~]# ip address show lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 192.168.3.200/32 brd 192.168.3.200 scope global lo:0 valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever
三、配置keepalived
1)、在 192.168.3.2 (master) 上,配置master
[root@master ~]# vim /etc/keepalived/keepalived.conf global_defs { notification_email { admin@feixiangkeji.cn #设置报警收件人邮箱 } notification_email_from test@feixiangkeji.cn #设置发件人 smtp_server 192.168.200.1 #定义邮件服务器地址 smtp_connect_timeout 30 router_id Lvs1 #设置路由ID号,需要修改! vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state MASTER #设置主服务器为MASTER interface eth0 #定义网络接口 virtual_router_id 51 #主辅VRID号必须一致 priority 100 #服务器优先级 advert_int 1 authentication { auth_type PASS auth_pass feixiangkeji #主辅服务器密码必须一致,建议不要使用默认密码 } virtual_ipaddress { 192.168.3.200 #配置VIP地址 } } virtual_server 192.168.3.200 80 { #设置ipvsadm的VIP规则 delay_loop 6 #检查的间隔时间,每隔6秒检查一次 lb_algo wrr #设置LVS调度算法为WRR,加权轮询 lb_kind DR #设置LVS模式为直连路由模式 persistence_timeout 50 #客户端在时间内始终访问相同服务器 protocol TCP #设置虚拟IP的协议为TCP,相当于ipvsadm -A -t real_server 192.168.3.3 80 { weight 1 #设置权重为1 TCP_CHECK { #对后台web服务器做健康检查 connect_timeout 3 #超时时间是3秒 nb_get_retry 3 #如果不成功,连续检测3次,不行就剔除 delay_before_retry 3 #重新加入集群,连续检测3次 } } real_server 192.168.3.4 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
2)、在 192.168.3.6 (backup) 上,配置backup
[root@backup ~]# vim /etc/keepalived/keepalived.conf global_defs { notification_email { admin@feixiangkeji.cn } notification_email_from test@feixiangkeji.cn smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id Lvs2 #修改路由ID号 vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state BACKUP #修改从服务器为BACKUP interface eth0 virtual_router_id 51 priority 50 #修改服务器优先级 advert_int 1 authentication { auth_type PASS auth_pass feixiangkeji } virtual_ipaddress { 192.168.3.200 } } virtual_server 192.168.3.200 80 { delay_loop 6 lb_algo wrr lb_kind DR #persistence_timeout 50 protocol TCP real_server 192.168.3.3 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.3.4 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
3)、分别在 192.168.3.2 (master) 和 192.168.3.6 (backup) 上
重启keepalived 服务,清空iptables 规则
[root@master ~]# systemctl restart keepalived [root@master ~]# iptables -F
查看LVS规则
[root@master ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.3.200:80 wrr -> 192.168.3.3:80 Route 1 0 0 -> 192.168.3.4:80 Route 1 0 0
查看VIP 虚拟地址配置
[root@master ~]# ip address show eth0 4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:18:b6:13 brd ff:ff:ff:ff:ff:ff inet 192.168.3.2/24 brd 192.168.3.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet 192.168.3.200/32 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::e8a8:75c2:19e:4d04/64 scope link noprefixroute valid_lft forever preferred_lft forever
四、客户端测试
1)、firefox http://192.168.3.200
刷新,查看访问的页面是否会轮询到不同的后端真实服务器。
2)、测试keepalive 的高可用
关闭192.168.3.2 (master)的keepalived 服务
[root@master ~]# systemctl stop keepalived
查看192.168.3.6 (backup) 上 ,是否存在vip (192.168.3.200)地址
[root@backup ~]# ip address show eth0 4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:aa:9c:5a brd ff:ff:ff:ff:ff:ff inet 192.168.3.6/24 brd 192.168.3.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet 192.168.3.200/32 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::a424:f2de:ac3b:aa86/64 scope link noprefixroute valid_lft forever preferred_lft forever
使用ipvsadm 命令 查看192.168.3.6 (backup) 上 ,lvs 集群信息
[root@backup ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.3.200:80 wrr -> 192.168.3.3:80 Route 1 0 1 -> 192.168.3.4:80 Route 1 0 0
由此可见,lvs 调度器已经成功的漂到了192.168.3.6 (backup) 上
客户端再次访问 vip 地址
暂无评论内容