LVS高可用web负载均衡配置手册.docx
- 文档编号:7225892
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:13
- 大小:139.75KB
LVS高可用web负载均衡配置手册.docx
《LVS高可用web负载均衡配置手册.docx》由会员分享,可在线阅读,更多相关《LVS高可用web负载均衡配置手册.docx(13页珍藏版)》请在冰豆网上搜索。
LVS高可用web负载均衡配置手册
LVS高可用web负载均衡群集
Linux
(适用操作系统:
CentOS5)
————————————————————————
完成人员:
XX
完成日期:
2012-01-25
————————————————————————
黑色加粗字体为命令.淡蓝加粗是显示内容红色是注释
一.环境要求
Lvs+heartbeat+ldirectory高可用性负载均衡.
LVS的调度分配软件=(ipvsadm)
LVS的双机热备软件=(heartbeat状态监控;平滑冗余)
LVS的高可用性=(heartbeat-ldirectord容错机制高可用)
二.拓扑
三.系统环境
操作系统:
CentOs5.5(关闭selinux及iptables)
相关软件:
lvsaadm、heartbeat、heartbeat-ldirectord、net-snmp、lm_sensors、perl模块
网络要求:
所有服务器位于同一VLan,机器无特殊要求。
四.地址规划
名称
角色
IP地址
LVS_A
活动调度器
VIP:
192.168.1.88/24
Eth0:
192.168.1.30/24
Eth1:
8.8.8.1/24
LVS_B
备份调度器
Eth0:
192.168.1.40/24
Eth1:
8.8.8.2/24
WEB_A
内容服务器
Eth0:
192.168.1.10
WEB_B
内容服务器
Eth0:
192.168.1.20
五.安装软件
1.更新yum源(将yum源替换成中国科大的yum源或mirrors的源)
#cd/etc/yum.repos.d'
#进入yum源目录
#mvCentOS-Base.repo{,.bak}
#修改默认网络源的名字使其不生效
#wget
#下载中科大源
#wget
#下载mirrors-163源
#wget
#下载mirrors-sohu源
注意:
三个源任选一个就好.我是使用163的
2.Yum安装ipvsadm/heartbeat/net-snmp
###############Yum#############
#yuminstallipvsadm#安装LVS
#yuminstallheartbeat*#安装heartbeat时会自动解决依赖关系
#yuminstallnet-snmp#安装net-snmp
3.安装heartbeat
yum安装heartbeat会出现这个错误:
不用理他,在用yum安装一次就处理好了
以下列出heartbeat所依赖的包名如果使用rpm方式安装可以参考|红色|是安装包|绿色|是依赖
在两台机器上都完成heartbeat的安装后进行查看
4.两台机器查看heartbeat是否安装全
#rpm-qa|grep"heartbeat"#查看安装包是否完整
5.网络配置
#Vim/etc/hosts#vi编辑本地解析文件
Cat>>/etc/hosts< >192.168.1.30LVS_A#添加LVS_A的解析 >192.168.1.40LVS_B#添加LVS_B的解析 >SHOW /etc/hosts内容如下图 实验过程中为了避免重启直接使用hostname命令修改主机名(立即生效,重启无效) #hostnameLVS_A #hostnameLVS_B #使用scp将文件传给LVS_B(简化操作).以下LVS脚本和WEB脚本都可使用scp。 1.配置LVS 1.配置LVS_A.sh #VimLVS_A.sh#调度器LVS_A的 #! /bin/bash VIP=192.168.1.88 WEB_A=192.168.1.10 WEB_B=192.168.1.20 LVS_A=192.168.1.30 LVS_B=192.168.1.40 case"$1"in start) /sbin/ifconfigeth0LVS_A /sbin/ifconfigeth0: 0$VIPbroadcast$VIPnetmask255.255.255.255up /sbin/routeadd-host$VIPdeveth0: 0 ipvsadm-A-t$VIP: 80-srr#-A添加一个virtual服务器-tTCP协议-s算法rr ipvsadm-a-t$VIP: 80-r$WEB_A: 80-g#-g(DR模式)-i(TUN模式)-m(NAT模式) ipvsadm-a-t$VIP: 80-r$WEB_B: 80-g ipvsadm-save>/etc/sysconfig/ipvsadm#保存设置命令.下次可以使用Service直接调用 echo"ipvsadmisstartok..........................." ;; stop) /sbin/ipvsadm-C#清空ipvsadm群集设置 /sbin/routedel$VIP#删除VIP路由 echo"ipvsadmisstopnowok..........." ;; *) echo"Usage: $0{start|stop}" esac ---------------------------------------------------------------------------------------------------------- #chmod+xLVS_A.sh#添加可执行权限 2.配置LVS_B.sh #VimLVS_B.sh#调度器LVS_B的 #! /bin/bash VIP=192.168.1.88 WEB_A=192.168.1.10 WEB_B=192.168.1.20 LVS_A=192.168.1.30 LVS_B=192.168.1.40 case"$1"in start) /sbin/ifconfigeth0LVS_B /sbin/ifconfigeth0: 0$VIPbroadcast$VIPnetmask255.255.255.255up /sbin/routeadd-host$VIPdeveth0: 0 ipvsadm-A-t$VIP: 80-srr#-A添加一个virtual服务器-tTCP协议-s算法rr ipvsadm-a-t$VIP: 80-r$WEB_A: 80-g#-g(DR模式)-i(TUN模式)-m(NAT模式) ipvsadm-a-t$VIP: 80-r$WEB_B: 80-g ipvsadm-save>/etc/sysconfig/ipvsadm#保存设置命令.下次可以使用Service直接调用 echo"ipvsadmisstartok..........................." ;; stop) /sbin/ipvsadm-C#清空ipvsadm群集设置 /sbin/routedel$VIP#删除VIP路由 echo"ipvsadmisstopnowok..........." ;; *) echo"Usage: $0{start|stop}" esac ---------------------------------------------------------------------------------------------------------- #chmod+xLVS_B.sh#添加可执行权限 3.WEB_A服务内容脚本 #VimWEB_A.sh #! /bin/bash VIP=192.168.1.88 WEB_A=192.168.1.10 WEB_B=192.168.1.20 case"$1"in start) /sbin/ifconfigeth0$WEB_A#eth0 /sbin/ifconfiglo: 0$VIPbroadcast$VIPnetmask255.255.255.255up#虚拟.VIP /sbin/routeadd-host$VIPdevlo: 0#VIP主机路由 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#不响应arp请求 echo"WEB'sLVSisstartok........" ;; stop) /sbin/ifconfiglo: 0down /sbin/routedel$VIP 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"WEB'sLVSisstopok........." ;; *) echo"Usage: $0{start|stop}" ;; Esac #chmod+xWEB_A.sh 4.WEB_B负载服务脚本 #vimWEB_B.sh #! /bin/bash VIP=192.168.1.88 WEB_A=192.168.1.10 WEB_B=192.168.1.20 case"$1"in start) /sbin/ifconfigeth0$WEB_B#eth0 /sbin/ifconfiglo: 0$VIPbroadcast$VIPnetmask255.255.255.255up#虚拟IP /sbin/routeadd-host$VIPdevlo: 0#VIP主机路由 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#不响应arp请求 echo"WEB'sLVSisstartok........" ;; stop) /sbin/ifconfiglo: 0down /sbin/routedel$VIP 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"WEB'sLVSisstopok........." ;; *) echo"Usage: $0{start|stop}" ;; esac #chmod+xWEB_B.sh#为脚本添加可执行权限 5.查看测试LVS Lvs状态查看 查看LVS的连接情况: ipvsadm-L–n 查看LVS的吞吐量情况ipvsadm-L-n–rate 查看LVS的统计信息: ipvsadm-L-n–stat 查看LVS的连接状态变化: watchipvsadm? ln. #ipvsadm–Ln IPVirtualServerversion1.2.1(size=4096) ProtLocalAddress: PortSchedulerFlags ->RemoteAddress: PortForwardWeightActiveConnInActConn TCP192.168.1.88: 80rr ->192.168.1.20: 80Route100 ->192.168.1.10: 80Route100 二.配置ldirectord 1.#vim/etc/ha.d/ldirectord.cf #cp/usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf/etc/ha.d/ 如果要通过ldirectord监控节点状态; 只需启动ldirectord,整个集群系统就可以运行起来,而无需执行上面配置的LVS_A脚本; 因为ldirectord配置文件决定.会自动调用ipvsadm创建LVS路由表. 配置选项含义如下 #vimldirectord.cf checktimeout=3#判定realserver出错的时间间隔。 checkinterval=1#指定ldirectord在两次检查之间的间隔时间。 fallback=127.0.0.1: 80#当所有的realserver节点不能工作时,web服务重定向的地址(本机: 80)。 autoreload=yes#是否自动重载配置文件,选yes时,配置文件发生变化,自动载入配置信息。 quiescent=yes #当选择no时,如果一个节点在checktimeout设置的时间周期内没有响应,ldirectord将会从LVS的路由表中直接移除realserver,此时,将中断现有的客户端连接,并使LVS丢掉所有的连接跟踪记录和持续连接模板,如果选择为yes,当某个realserver失效时,ldirectord将失效节点的权值设置为0,新的连接将不能到达,但是并不从LVS路由表中清除此节点,同时,连接跟踪记录和程序连接模板仍然保留在Director上 virtual=192.168.1.88: 80 real=192.168.1.10: 80gate #指定虚拟的IP地址和端口号,注意,在virtual行后面的行必 须缩进4个空格或以一个tab字符进行标记。 real=192.168.1.20: 80gate #指定RealServer服务器地址和端口,同时设定LVS工作模式. #用gate表示DR模式,ipip表示TUNL模式,masq表示NAT模式。 fallback=127.0.0.1: 80gate service=http #指定服务的类型,这里是对http服务做负载均衡。 request="index.html" #ldirectord将根据指定的RealServer地址,结合该选项给出 的请求路径,发送访问请求,检查RealServer上的服务是否正常运行,确保这里给出的页面地 址是可访问的,不然ldirectord会误认为此节点已经失效,发生错误监控现象。 receive="TestPage" #指定请求和应答字串。 scheduler=rr #指定调度算法,这里是rr(轮叫)算法。 于上面呼应 protocol=tcp #指定协议的类型,LVS支持TCP和UDP协议。 checktype=negotiate #指定Ldirectord的检测类型,默认为negotiate。 checkport=80 #指定监控的端口号。 virtualhost=SharkS #虚拟服务器的名称,随便指定。 三.配置heartbeat (主要就是配置三个文件: ha.cf、haresources和authkeys) 1.#vim/etc/ha.d/ha.cf #vim/etc/ha.d/ha.cf 配置选项如下 debugfile/var/log/ha-debug#指定heartbeat调试日志文件存放的位置 logfile/var/log/ha-log#指定heartbeat运行系统日志存放的位置 logfacilitylocal0#日志记录等级 keepalive2#指定多久检测一次心跳heartbeat本实验2秒 warntime5#连续多长时间联系不上开始警告提示本实验5秒 deadtime30#等待声明主机死机的时间.30秒内没有心跳信号.切换服务 initdead#指定heartbeat首次启动时deadtime应该为多久.预留忽略时间 #bcastbond0#只有两台机器的时候可以使用广播.本实验使用此方法 udpport694#使用upd694检测心跳服务 #baud19200#串口通讯的波特率,本实验环境不需要,注释掉 #serial/dev/ttyS0#主从如果是串口链接,需将此注释取消 #ucasteth18.8.8.2#这里指定LVS_B的地址.在LVS_B上配置时需要改成LVS_A地址 auto_failbackon#恢复正常后是否需要切换回来 nodeLVS_A#指定heartbeat使用那些主机.主机名于uname-n一致 nodeLVS_B#备用节点名称 ping192.168.1.1#只是用于检测节点的连通性,并不作为节点切换的真正依据 pwatchdog/dev/watchdog#看门狗。 如果本节点1分钟后还没有发出心跳.那么本节点自动重启 respawnhacluster/usr/lib/heartbeat/ipfail#配置ip绑定和切换功能 apiauthipfailgid=haclientuid=hacluster#控制ip切换时所使用的用户 注: 如果主节点需要维护时,可先将其转移到备份服务器上使用如下命令 #/usr/lib/heartbeat/hb_standby(hb_standby命令把资源强迫到迁移到备份服务器) 如果主节点要切回来掌管服务: #/usr/lib/heartbeat/hb_takeover 2.#vim/etc/ha.d/authkeys #vim/etc/ha.d/authkeys 配置项如下.表示使用md5作为数字签名算法对心跳数据包加密 保存退出后必须调整此文件的权限为600只有root用户有权限 否则启动失败日志提示.权限安全问题 auth3 3md5sharkshow #chmod600/etc/ha.d/authkeys#更改文件权限 3.#vim/etc/ha.d/haresources 配置项如下 LVS_AIPaddr: : 192.168.1.88/32ldirectord: : ldirectord.cf 这个配置的解释各文档种不一样我通过日志查看发现是这样的情况 LVS_A #是主节点名称. IPaddr #IPaddr是存在于/etc/ha.d/resource.d目录下脚本;也可以存在于/etc/init.d/下的 #而且得支持start和stop参数.因为主节点启用时会调用start.释放时会调用stop “: : ” 两个冒号代表的是空格 192.168.1.88/32是IPaddr这个脚本调用的参数具体工作可以去看IPaddr这个脚本 在主服务器启用服务时查看系统日志里会如下的两行.很生动吧 #tail–f/var/log/ha-log info: Running/etc/ha.d/resource.d/IPaddr192.168.1.88/32/start info: Running/etc/ha.d/resource.d/ldirectordldirectord.cfstart 192.168.188/32代表的是Ipaddr这个脚本调用的参数.那ldirectord.cf就不用我说了^^ 注意: 如果有多个脚本主节点启动的时候顺序是从左往右.释放的时候从右往左stop.要注意这个协调顺序 info: Running/etc/ha.d/resource.d/ldirectordldirectord.cfstop info: Running/etc/ha.d/resource.d/IPaddr192.168.1.88/32/stop 四.scp文件到LVS_B;如果是单播.自行修改ha.cf中的关键字 #cd/etc/ha.d/ #scpha.cfauthkeysharesourcesldirectord.cf: /etc/ha.d/ #如果嫌麻烦而且为了统一ha.d目录的内容可以使用-r参数把/etc/ha.d/目录都拷贝过去 本实验环境ha.cf的关键字是广播检测发送心跳.单播的时候ha.cf关键字的互指对方地址.写法如下: #scp–r/etc/ha.d/: /etc/ 五.开启服务 #/etc/init.d/ldirectordstart#高可用容错机制 #/etc/init.d/heartbeatstart#心跳检测资源释放.平滑冗余 ---------------------------------------------------end--------------------------------------------------- 总结: heartbeat日志中记录的主机名都是小写 建议做的时候将主机名换成小写.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LVS 可用 web 负载 均衡 配置 手册