server33和35当HA,server34和36当服务器,用户通过VIP访问两台HA-->调度器-->后端服务器,只有调度器轮寻调度,加权
lvs不知道后端应用服务器挂了,用户会一直访问后端挂了的服务器,所以后面要解决这个问题,但nginx会监控后端服务器状态,lvs就是
用户只能访问调度器上的vip,而不能访问服务器上的vip,服务器不对外相应外界的ip,调度器把服务器mac,LB 一直就是转换,arbtabs,屏蔽arp
(1)############lvs
ngnix、haproxy和lvs都是可用来负载均衡,nginx和haproxy比较适合做网站,很灵活,haproxy并发量大,lvs适合做数据库之类的,因为他算法比较简单,主要应用在应用层上
系统环境:
server85和dekstop80作为HA,server234和desktop87作为服务器,主机dekstop来调度
yum源为dvd.repo,时间要同步,解析要做好,selinux和火墙刷掉
在server85上:
释放ip地址:
ip addr show //发现之前测试的ip未被释放
/etc/init.d/heartbeat stop
/etc/init.d/network restart
ip addr show //ip已释放
在两台HA上:
yum install -y ipvsadm //调度服务,在此之前保证heartbeat已经停掉
ipvsadm -l //显示当前调度列表
ifconfig eth0:0 192.168.2.115 netmask 255.255.255.0 up //添加虚拟ip:192.168.2.115,要保证虚拟ip是未占用的
ipvsadm -A -t 192.168.2.115:80 -s rr //A 添加,r 轮循 s 加权
ipvsadm -a -t 192.168.2.115:80 -r 192.168.2.87:80 -g //g 直连 80端口是httpd服务端口
ipvsadm -a -t 192.168.2.115:80 -r 192.168.2.234:80 -g
ipvsadm -l //显示有server234和desktop87及192.168.2.115的httpd服务
在两台服务端:
yum install -y httpd
cd /var/www/html/
vim index.html //写入各自域名
ifconfig eth0:0 192.168.2.115 netmask 255.255.255.255 up //四个255表示这个ip就他自己,只有他一个
yum install -y arptables_jf //反arp服务,服务有点类似于火墙
arptables -A IN -d 192.168.2.115 -j DROP //外部访问115这个vip时直接被忽略掉
arptables -A OUT -s 192.168.2.115 -j mangle --mangle-ip-s 192.168.2.87 //在desktop87上
arptables -A OUT -s 192.168.2.115 -j mangle --mangle-ip-s 192.168.2.234 //在server234上 内部服务器出去的时候用的是自己的真实ip地址,就是这两步当外部访问服务器时,外部知道的只是虚拟ip,访问的只是调度器,而调度器和服务器联通起来,用户和服务端不直接访问互通
/etc/init.d/arptables_jf save //保存策略
/etc/init.d/httpd start //开启httpd服务
浏览器:http://192.168.2.115/ //轮循显示234和87的网页发布目录内容,即他们各自的域名
在HA端:ipvsadm -l //会显示轮循的次数
在服务端或调度的真机上:arp -a //显示访问的所有ip地址,及网络接口,并且记录访问的ip地址对应的MAC地址,MAC地址有在调度器上被记录下来,当删除某个被记录的ip对应MAC时,再次访问后MAC地址又将被调度器所记录
(2)#############HA与lvs整合
调度器存在单点故障,因此要HA热备,
在HA端:
ifconfig eth0:0 down //把vip暂时关闭
ipvsadm -C //把arptables策略清除
lftp i:/pub/docs/heartbeat/rhel6> get ldirectord-3.9.2-1.2.x86_64.rpm
yum localinstall -y ldirectord-3.9.2-1.2.x86_64.rpm
在server86上:
rpm -ql ldirectord
cp /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/ //把配置文件复制
vim /etc/init.d/ldirectord //文件中说明主机读取配置文件位置在/etc/ha.d/ldirectord.cf ,所以有上一步复制
/etc/init.d/ldirectord status //有依赖性问题未解决
yum install -y perl-IO-Socket-INET6
/etc/init.d/ldirectord status //显示正常,ldirectord是stop的
cd /etc/ha.d/
vim ldirectord.cf //rr表示算法为轮循调度
checkinterval=1 //每隔1秒检测
virtual=192.168.6.115:80 //vip
real=192.168.2.87:80 gate //两个服务端
real=192.168.2.234:80 gate
fallback=127.0.0.1:80 gate //当所有的服务端都挂掉后,显示的界面是自己的发布目录,任何一个服务器再次激活后,1秒检测后立即回到服务器上
# receive="Test Page" //注释掉
# virtualhost=www.x.y.z //注释掉
vim haresources //添加服务ldirectord
server86.example.com IPaddr::192.168.2.115/24/eth0 httpd ldirectord
scp ldirectord.cf haresources 192.168.2.80:/etc/ha.d/ //把相同配置文件复制到另一个HA节点
在HA端:
/etc/init.d/heartbeat start //只要启动心跳,集群负责把vip,httpd,ldirectord及arptables全部开启
ipvsadm -l
tail -f /var/log/messages //日志可以查看到相关服务的启动
浏览器:http://192.168.2.115/ //一直在轮循显示,当把一个HA端如desktop80的httpd服务down掉或把heartbeat停掉,ipvsadm -l显示服务已被另一个节点接管,调度列表只剩一台主机,当两个节点都down掉时,浏览器显示的是调度的主机的发布目录文件,调度列表里只剩本机。当任何一个节点恢复服务后,调度立马恢复正常;
没有进行上述步骤前,把HA任一节点down掉后,ipvsadm -l仍显示两个节点,调度仍在正常运行,这意味着用户会获取到错误的网页文件,因为lvs本身不能监控后台服务器状态。
把34down掉,调度列表里只有36,网页不再轮循,36也挂掉时,那就完了,这里没有failback
把其中服务down掉,vip发生改变,被接管,开启服务,不会回切,互为主备
(3)lvs图形化配置管理: //就是(2)的图形化配置
在HA端:
/etc/init.d/heartbeat stop //所有的服务都会被停掉
yum install -y piranha //监控服务器状态软件
piranha-passwd //设置为westos
/etc/init.d/piranha-gui start
浏览器:http://192.168.2.186:3636 用户名为piranha,密码就是刚刚设置的westos
/etc/sysconfig/ha/lvs.cf //网页图形化界面的配置文件
点击REDUNDANCY,enable,ip为192.168.2.186 ,第一项勾选,端口号不要改,ok
点击VIRTUAL SERVERS,edit,服务名www,vip 192.168.2.115,网卡eth0:0,选择第一个轮循,ok
再点击REAL SERVER,add,name为dekstop80.example.com,192.168.2.80,80,1
再点击REAL SERVER,add,name为server234.example.com,192.168.2.234,80,1
MMONIT..ACCEPT ,把所有都点击up开启
scp lvs.cf 192.168.2.80:/etc/sysconfig/ha/
/etc/sysconfig/ha/lvs.cf //浏览器上的配置全部在这里
/etc/init.d/piranha-gui restart //所有节点服务都开启
/etc/init.d/pulse restart
浏览器:http://192.168.2.115/
(4)添加一个ftp服务
服务端:
yum install -y vsftpd
ifconfig eth0:1 192.168.2.53 netmask 255.255.255.255 up
arptables -A OUT -s 192.168.2.53 -j mangle --mangle-ip-s 192.168.2.87 //在desktop87上
arptables -A OUT -s 192.168.2.53 -j mangle --mangle-ip-s 192.168.2.234 //在server234上
arptables -A IN -d 192.168.2.115 -j DROP
浏览器:
点击VIRTUAL SERVERS,add,服务名ftp,vip 192.168.2.53,网卡eth0:1,选择第一个轮循,300,ok
再点击REAL SERVER,add,name为dekstop80.example.com,192.168.2.80,80,1
再点击REAL SERVER,add,name为server234.example.com,192.168.2.234,80,1
MMONIT..ACCEPT ,这一项不管
全部激活
scp lvs.cf 192.168.2.80:/etc/sysconfig/ha/
/etc/init.d/vsftpd start
/etc/init.d/pulse restart
浏览器:ftp://192.168.2.53 //轮循,在负载均衡
转载于:https://my.oschina.net/u/1986074/blog/296941