1,curl -I www.taobao.com会发现HTTP/1.1 302 Found 这是一个从http到https的重定向Location: https://www.taobao.com/,https全站加密
[kiosk@foundation28 ~]$ curl -I www.taobao.com
HTTP/1.1 302 Found
Server: Tengine
Date: Mon, 30 Jul 2018 01:38:47 GMT
Content-Type: text/html
Content-Length: 258
Connection: keep-alive
Location: https://www.taobao.com/
Set-Cookie: thw=cn; Path=/; Domain=.taobao.com; Expires=Tue, 30-Jul-19 01:38:47 GMT;
Strict-Transport-Security: max-age=31536000
2,临时添加ip
ip addr add 172.25.28.x/24 dev eth0
临时删除ip
ip addr del 172.25.28.x/24 dev eth0
注意:临时添加的ip的重启网络,重启物理机都会消失
LVS-DR模式
1,关闭varnish服务器的varnish和httpd服务,以免起冲突
2,配置server1的yum源(从iso的挂载点获取)
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.28.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.28.250/rhel6.5/HighAvailability
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.28.250/rhel6.5/LoadBalancer
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.28.250/rhel6.5/ResilientStorage
gpgcheck=0
[ScalableFileSystem]
name=HighAvailability
baseurl=http://172.25.28.250/rhel6.5/ScalableFileSystem
gpgcheck=0
3,安装ipvsadm 负载均衡管理集群服务
运行在LVS下的提供负载均衡功能
(ipvsadm和iptables的使用方法类似)
Scheduler调度器有十种rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认是wlc
ipvsadm -Ln 查看策略,不解析
4,添加策略
ipvsadm -A -t 172.25.28.100:80 ##172.25.28.100是虚拟ip
ipvsadm -A -t 172.25.28.100:80 -s rr 论调方式
ipvsadm -a -t 172.25.28.100 -r 172.25.28.2:80 -g # -g LVS-DR模式
ipvsadm -a -t 172.25.28.100 -r 172.25.28.3:80 -g
--add-service -A add virtual service with options
--tcp-service -t service-address service-address is host[:port]
--scheduler -s scheduler one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq
--add-server -a add real server with options
--real-server -r server-address server-address is host (and port)
--gatewaying -g gatewaying (direct routing) (default)
5,server1添加临时虚拟ip ip addr add 172.25.28.100/24 dev eth0
6,server2添加临时虚拟ip ip addr add 172.25.28.100/24 dev eth0
7,server3添加临时虚拟ip ip addr add 172.25.28.100/24 dev eth0
8,server1测试
curl 172.25.28.100
server2和 server3开始轮调
arp -an | grep 100 查看MAC地址
arp -d 172.25.28.100 删除ip的物理地址缓存
ARP是一个重要的TCP/IP协议,并且用于确定对应IP地址的网卡物理地址。实用arp命令,我们能够查看本地计算机或另一台计算机的ARP高速缓存中的内容,例如ping ip 那么就会缓存这个ip的MAC物理地址
但是这里是有问题的,这里面有三个vip,同一个wlan会ip冲突,所以要进行一下操作隐藏server2,server3的vip,对外只暴露自己的真实ip
9,server2安装arptables_jf (arptables 可以当作是linux下的ARP防火墙
arptables 是一个用户空间,用于管理内核中的ARP规则表,规则检查处理的是ARP数据帧。arptables 类似 iptable,但比iptables简单)
添加策略(arptables -nL查看策略)
arptables -A IN -d 172.25.28.100 -j DROP ##不缓存ip的MAC地址
arptables -A OUT -s 172.25.28.100 -j mangle --mangle-ip-s 172.25.28.2 ##mangle是转换
保存策略(否则是一次性的)
/etc/init.d/arptables_jf save
--append -A chain Append to chain
--target -d [!] address[/mask]
destination specification
--jump -j target
target for rule (may load target extension)
--source -s [!] address[/mask]
source specification
启动 /etc/init.d/arptables_jf start
10,server3安装arptables_jf,策略同上,保存,启动服务
11,本机客户端访问测试
arp -d 172.25.28.100地址缓存,ping ip 缓存,arp -an | grep 100查看,在删除,重复命令,发现mac地址已经固定了,curl 172.25.28.100论调成功
注意:这种方式无法进行健康检查
停掉server2的httpd,server1 ipvsadm -ln查看不会有任何变化,本机客户端测试论调出现一个正常,一个refused的现象,server1 ipvsadm -ln 查看还是公平论调,但实际上只有server3工作了
解决方法:
1,安装ldirectord
[root@server1 ~]# rpm -ql ldirectord
/etc/ha.d
/etc/ha.d/resource.d
/etc/ha.d/resource.d/ldirectord
/etc/init.d/ldirectord
/etc/logrotate.d/ldirectord
/usr/lib/ocf/resource.d/heartbeat/ldirectord
/usr/sbin/ldirectord
/usr/share/doc/ldirectord-3.9.5
/usr/share/doc/ldirectord-3.9.5/COPYING
/usr/share/doc/ldirectord-3.9.5/ldirectord.cf
/usr/share/man/man8/ldirectord.8.gz
拷贝模版
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d
2,修改/etc/ha.d/ldirectord.cf
checktimeout=3 这个值就是ldirectord等待健康检查执行完毕的等待时间
checkinterval=1 这个值指定ldirectord在两个检查之间的间隔时间
virtual=172.25.28.100:80 #vip
real=172.25.28.2:80 gate #rip
real=172.25.28.3:80 gate #rip
fallback=127.0.0.1:80 gate
service=http #指定服务
scheduler=rr #论调方式
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
request="index.html"
#receive="Test Page" 检测两个页面是否一样,由于是实验,我们设置的两个页面不一样,这里没必要打开
#virtualhost=www.x.y.z
3,启动ldirectord
此时如果server2的httpd服务停止,那么server1ipvsadm -ln查看就不会显示server2的,本机客户端curl 172.25.28.100也不会出现refused,如果两个都停掉了,那么server1ipvsadm -ln查看会出现127.0.0.1:80这是server1自己,此时确定sever1自己的端口是80,在发布目录下写入index.html,再次curl可以看到server1的页面,只要其中一个服务器正常就不会出现server1的页面
4,关闭ldirectord
/etc/init.d/ldirectord stop
chkconfig ldiredtord off