一、LVS(linux virtual server)linux虚拟服务器
使用负载均衡技术将多台服务器组成一个虚拟服务器,提高并发访问服务能力,满足大量访问能力,使用前端的负载均衡器(LB,load balancer)和后端的真实服务器群(RS,real server)组成。
client ---vs---rs(多个)---client vs rs属于同一个VLAN
二、配置DR模式
1.DR模式:
直接路由direct router,虚拟服务器收到请求,将请求包中目标MAC地址转换成某个选定RS的MAC地址后将包转发出去,RS收到请求包后,可直接将应答传给客户。此时要求VS RS 处于同一个物理网段。
2.yum install ipvsadm -y(用户层的,写策略,供内核读取)
此安装需要配置yum 源
vim /etc/yum.repos.d/xxx.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.39.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.39.250/rhel6.5/LoadBalancer
gpgcheck=0
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.39.250/rhel6.5/HighAvailability
gpgcheck=0
3.设置调度器,添加真实服务器
server1添加ip(vip 调度器 虚拟服务器 vs)
ip addr add 172.25.39.100/24 dev eth1
设置server1为虚拟服务器
ipvsadm -A -t 172.25.39.100:80 -s -rr
-A:增加一台虚拟设备()
-t:tcp-service
-rr:轮询
给server1添加两台后端实际虚拟机
ipvsadm -a -t 172.25.39.100:80 -r 172.25.39.2:80 -g
ipvsadm -a -t 172.25.39.100:80 -r 172.25.39.3:80 -g
分别给server2和server3添加ip
ip addr add 172.25.39.100/32 dev eth1 添加vip(将虚拟服务器ip分别加到server2/3上)
4.测试主机:
arp -an |grep 100 查看绑定的mac地址
arp -d 172.25.39.100 删除现有绑定mac地址
curl 172.25.39.100 重新获得ip和mac地址
出现的问题:
防止在物理端测试时直接访问server3和server2
解决方案:
1.分别给server2和server3安装
yum install arptables_jf -y #此包的作用是防止在物理机测试时直接访问server2和server3
arptables -L
arptables -A IN -d 172.25.39.100 -j DROP #当网内广播需要这个ip时,他丢弃所有网内的请求
arptables -A OUT -s 172.25.39.100 -j mangle --mangle-ip-s 172.25.39.2
arptables -A OUT -s 172.25.39.100 -j mangle --mangle-ip-s 172.25.39.3 #当他自己需要在网内发包时,伪装为自己的原本ip172.25.39.2/3
/etc/init.d/arptables_jf save #保存添加的两条策略
/etc/init.d/arptables_jf start #打开服务
2.测试端:
出现轮询 curl 172.25.39.100 数据经过调度器
调度器(server1):
i
pvsadm -ln 查看策略
ipvasadm -C 清理
三、健康检查:
1.lvs不会对后端出现的错误进行检测,若后台服务器出错,会返回给我们一个错误的提示,那我们通过健康检查,返回正确的页面。
2.安装软件,需要配置yum源
vim /etc/yum.repos.d/drhxx.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.39.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.39.250/rhel6.5/LoadBalancer
gpgcheck=0
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.39.250/rhel6.5/HighAvailability
gpgcheck=0
从老师主机pub/docs/heartbeat/获取安装包
yum install ldirectord-3.9.5-3.1.x86_64.rpm -y
3.修改软件配置文件
rpm -ql ldirectord
cp /user/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d
cd /etc/ha.d
vim ldirectord
virtual=172.25.39.100:80 虚拟服务器(调度器)
real=172.25.39.2:80 gate (后端服务器)
real=172.25.39.3:80 gate (后端服务器)
fallback=127.0.0.1:80 gate 若是两台u后端服务器全部挂掉了,就启用自己
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
vim /etc/httpd/conf/httpd.conf
端口改为80
cd /var/www/html
rm -rf *
vim index.html
<h1>系统维护中</h1>
/etc/init.d/ldirectord start
ipvsadm -ln 查看调度策略
4.主机测试:
停掉一台后端服务器,仍能正常使用后台服务器,前台也不会有什么异常
停掉全部后端服务器,调度器自己调用自己。
curl 172.25.39.100