echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.233.200
rs1=192.168.233.129
rs2=192.168.233.132
ifdown ens33
ifup ens33
#注意这里的网卡名字(虚拟网卡)这条命令设置一个虚拟网卡
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens33:2
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
二、两台rs上也编写脚本
vim /usr/local/sbin/lvs_rs.sh
#内容以下
#/bin/bash
vip=192.168.233.200
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#如下操做为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
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
三、分别在dir上和两个rs上执行这些脚本
dir上执行
sh /usr/local/sbin/lvs_dr.sh
rs上执行
sh /usr/local/sbin/lvs_rs.sh
四、测试
浏览器访问vip200(192.168.233.200)
ipvsadm -ln #查看ipvsadm的规则
[root@xinlinux-03 ~]#
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.233.200:80 wrr
-> 192.168.233.129:80 Route 1 0 4
-> 192.168.233.132:80 Route 1 0 5
18.12 keepalived + LVS
keepalived + LVS的目的:
一、lvs的分发器宕机,给分发器作高可用
二、使用lvs时(无其余额外操做),如将一个rs机器关机,当用户访问到这个关机的rs时会出现问题;这说明lvs不够“聪明”,即便后端的rs宕机,也会继续把请求发送过去;当增长keepalived后,能够发送请求时能检测rs是否宕机,若是宕机了,便再也不发送请求到宕机的rs上。
完整架构须要两台服务器(角色为dir)分别安装keepalived软件,目的是实现高可用,但keepalived自己也有负载均衡的功能,因此本次实验能够只安装一台keepalived
keepalived内置了ipvsadm的功能,因此不须要再安装ipvsadm包,也不用编写和执行那个lvs_dir的脚本
三台机器分别为:
dir(安装keepalived)233.150
rs1 233.129
rs2 233.132
vip 233.200
一、编辑keepalived配置文件
vim /etc/keepalived/keepalived.conf
#须要更改里面的ip信息(将虚拟ip和虚拟serverip所有改为vip200的ip)
virtual_ipaddress和virtual_server的改成192.168.233.200(vip200)
而后修改两个rs(real_server)的ip
二、执行ipvsadm -C 把以前的ipvsadm规则清空掉
ipvsadm -C
三、systemctl restart network 能够把以前的vip清空掉
两台rs上,依然要执行/usr/local/sbin/lvs_rs.sh脚本
systemctl restart network
sh /usr/local/sbin/lvs_rs.sh #两台rs上都要执行
#keepalived有一个比较好的功能,能够在一台rs宕机时,再也不把请求转发过去
四、测试
浏览器访问vip200(192.168.233.200)
18.13扩展
18.14课堂笔记
1、keepalived高可用
keepalived启动nginx失败的缘由主要在监控脚本上:
一、脚本是否能够成功运行
二、脚本文件是否有运行权限
2、负载均衡集群
NAT模式经过iptables的nat表转发到rs; IP Tunnel模式经过修改目标ip地址到rs;DR模式经过修改MAC地址
Tunnel模式:
分发器只负责收回数据包,不发送
LVS DR模式
缺点:须要保证rs和分发器在同一物理网络里(跨机房局部性了)
3、拓展
高可用 keepalived
负载均衡 LVS
扩展:
VRRP协议
keepalived邮件告警
LVS 三种模式图解
LVS算法 DH
arp_ignore和arp_announce