本文共 5211 字,大约阅读时间需要 17 分钟。
在这个高度信息化的IT时代,企业的生产系统,业务运营,销售个支持以及日常管理环节越来越依赖计算机信息和服务,使得对高可用(HA)技术的应用需求大量上升,以便提供持续的,不间断计算机或网络
vs服务器和web-server他们必须在同一个网段内,因为LVS转发包的时候,是直接修改了包目标的MAC地址,直接扔给了rs,基于MAC地址的修改是活动在OSI二层数据链路层的,工作在数据链路层的网络设备就是交换机了,所以必须在一个交换机下面,也就是一个局域网内
为啥抑制real-server的ARP,是这样的,我们在DR模式要更改web-server的ARP的模式,arp_ignore为1是说只回答目标IP地址是来访网络接口本地地址的ARP查询请求,我们都在回环接口上配置了一个VIP,当arp模式更改以后,那么如果有谁在请求VIP的mac地址时,那么那些web-server就会回答arp广播报文了,只有lvs才会,如果没有更改arp模式,那么大家都喊我是VIP,这就乱套了。Keepalived 双机热备
keepalived 起初是专门正对LVS 设计的一款强大的辅助工具,只要用来提供故障切换切换(FAilover)和健康检查功能---判断LVS 负载调到器 节点服务器的可用性,及时隔离并且替换新的服务器,当故障主机恢复后将其重新加入集群yum install keepalived ipvsadm -y //在线下载所需的软件
实验只准备环境为 4台 centos 7.3
其中两台为调度服务器以主服务器一个为备份服务器另外两个提供节点服务器yum install httpd -y //下载服务并且开启修改网卡配置
开始调试
先做简单的先调试两台点服务器的配置1. systemctl start httpd.service //开启服务 2. echo "this is accp web" >/var/www/html/index.html //生成首页3.cp ifcfg-lo ifcfg-lo:0 //复制回环网卡 并且进行修改4. DEVICE=lo:0IPADDR=192.168.100.10NETMASK=255.255.255.0ONBOOT=yes //就留下这三行 5. vim /etc/init.d/web.sh //添加启动脚本致内如如下VIP=192.168.100.10 case "$1" in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP //启动它的虚拟IP添加网段 /sbin/route add -host $VIP dev lo:0 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 ///接受调度服务器给与的回馈 sysctl -p >/dev/null 2>&1 echo "RealServer Start OK " //优化参数 都导入到null 中俗称黑洞 ;; stop) ifconfig lo:0 down //关闭 虚拟IP 并且关闭服务器给与的回馈 route del $VIP /dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stopd" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 06. ifup lo:0 //(建议最后开启虚拟网卡)7. service web.sh stop8. service web.sh start(建议重启服务)9. firefox "http://127.0.0.1/"& //进行自测检测会在后台进行打开稍等片刻两台配置都一样 关闭防火墙 等一些阻挡访问的一些服务配置调度服务器
1. systemctl stop firewalld.service 关闭防火墙2. 修改网卡模式 仅主机模式 sysctl.conf这个文件是对Linux系统直接配置的文件,一些基本防护也可以从这个文件做起:# net.ipv4.tcp_syncookies = 1当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN×××。3. vi /etc/sysctl.conf net.ipv4.ip_forward=1 //启用IP转发功能,做NAT服务或者路由时才会用到。#proc响应关闭重定向功能 //恶意用户可以使用IP重定向来修改远程主机中的路由表,在设计良好的网络中,末端的重定向设置是不需要的,发送和接受重定向信息包都要关闭。net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0关闭重定向功能net.ipv4.conf.ens33.send_redirects = 0 4. sysctl -p //即使生效5. cp ifcfg-ens33 ifcfg-ens33:06. vim ifcfg-ens33:0DEVICE=ens33:0 //名称ONBOOT=yes //开启网卡IPADDR=192.168.100.10 //虚拟IPNETMASK=255.255.255.0 //马克地址7. ifup ens33:0 //启动虚拟网卡//如报错则重启服务service network restart做到这其实就可以访问网页来进行测试了
配置调度服务器进行双机热备 先做主服务器
1. vim /etc/init.d/dr.sh //添加脚本GW=192.168.100.1 //网关VIP=192.168.100.10 //虚拟IPRIP1=192.168.100.201 //节点服务器RIP2=192.168.100.202 //节点服务器case "$1" instart) /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm //保存若直接启动会报错 systemctl start ipvsadm //开启工具 /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up //开启虚拟网卡 /sbin/route add -host $VIP dev ens33:0 //开启路由赚翻 /sbin/ipvsadm -A -t $VIP:80 -s rr //调度方法 轮询 /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g //启动ivsf 调度 /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g //指定D2 的模式 echo "ipvsadm starting --------------------[ok]" ;; stop) /sbin/ipvsadm -C //关闭时该清空的清空 systemctl stop ipvsadm ifconfig ens33:0 down //当掉的当 route del $VIP echo "ipvsamd stoped----------------------[ok]" ;; status) if [ ! -e /var/lock/subsys/ipvsadm ];then //检测启动的时候文件存不存在 若存在则显示停止状态 echo "ipvsadm stoped---------------" exit 1 else echo "ipvsamd Runing ---------[ok]" fi ;; *) echo "Usage: $0 {start|stop|status}" exit 1 esac exit 02. chmod +x dr.sh3. service dr.sh start4. vim/etc/keepalived/vim/etc/keepalived/ //在配置文件中对应的序列号10 smtp_server 127.0.0.112 router_id LVS_01 //从的改成0220 state MASTER //为主服务器//BACKUP 从22 virtual_router_id 10 //更具需求可以不改27 auth_pass abc123 //预定义密码30 192.168.100.10 //留下一个并且对应到虚拟IP34 virtual_server 192.168.100.10 80 //对应虚拟IP37 lb_kind DR //DR模式41 real_server 192.168.100.221 80 { //对应的真实的地址也就是提供服务的IP43 TCP_CHECK { //检查44 url { //准备8DD 删除8行自行添加44 cpnnect_port 80 //声明端口41 real_server 192.168.100.221 80 { //准备复制10行新成新的对应的证实地址IP49 } //此处粘贴 real_server 192.168.100.222 80 { TCP_CHECK { url { cpnnect_port 80 //一样的内容 systemctl start keepalived.service //启动服务systemctl status keepalived.service //查看服务有没有开启ip addr show dev ens33:0 //检测虚拟网卡 启用备的服务器一样的配置
转载于:https://blog.51cto.com/13660858/2131614