LINUX集群部署邱波2005-6-24第一部部分公共部分一系统环境1LinuxOS系统版本RHELAS3UPDATES4安装方式昀小安装系统内核2.4.21-27.0.4二服务组件1LVS套件主机名masterslaver服务包piranha-0.7.10-2ipvsadm-1.21-9依赖包httpd-2.0.46-46php-4.3.2-23curl-7.10.6-62GFS套件主机名node01node02node03node04node05node06data01data02服务包GFSGFS-modules-smp依赖包perl-Net-Telnet-3.03-1.13MySQLCLUSTER套件主机名masterslavernode01node02node03node04node05node06data01data02服务包MySQL-bench-4.1.12-0MySQL-ndb-management-4.1.12-0MySQL-server-4.1.12-0MySQL-client-4.1.12-0MySQL-embedded-4.1.12-0MySQL-ndb-extra-4.1.12-0MySQL-ndb-storage-4.1.12-0MySQL-shared-4.1.12-0MySQL-devel-4.1.12-0MySQL-Max-4.1.12-0MySQL-ndb-tools-4.1.12-0依赖包perl-DBI-1.32-94配置文件/etc/hosts3脚本内容#Donotremovethefollowingline,orvariousprograms#thatrequirenetworkfunctionalitywillfail.127.0.0.1localhost.localdomainlocalhost192.168.70.1node01192.168.70.2node02192.168.70.3node03192.168.70.4node04192.168.70.5node05192.168.70.6node06192.168.70.100data01192.168.70.200data02192.168.70.254master192.168.70.253slaver第二部分LVSLinuxVirtualServer负载均衡集群一LVSLinuxVirtualServer概述1基本构成图2基本概念对于使用某个提供的服务的外界用户(如网站或数据库程序)来说,Linux虚拟服务器(LVS)群集似乎是一个服务器。事实上,该用户使用的是一对冗余LVS路由器之后的两个或多个服务器的群集。LVS群集至少包括两层。第一层由一对配置相似的Linux机器或群集成员(clustermembers)组成。这些机器之一充当LVS路由器(LVSrouter),它用来把来自互联网的请求转到群集。第二层包含一个叫做真实服务器(realservers)的机器群集。3技术特征高可用性群集(High-availabilityclustering)使用多个机器来为某个服务或某组服务提交额外的可靠性。负载均衡群集(Load-balanceclustering)使用特殊的选路技术来给一组服务器分配任务。4LVS调度算式循环调度把每项请求按顺序在真正服务器中循环分派。加权循环调度每项请求按顺序在真正服务器中循环分派,但是给能力较大的服务器分派较多的作业。加权昀少连接法(默认)能力相比带有较少活跃连接的服务器分派较多的请求。基于地区的昀少连接调度目标IP相比带有较少活跃连接的服务器分派较多的请求。带有复制调度的基于地区的昀少连接调度目标IP相比带有较少活跃连接的服务器分派较多的请求。目标散列调度通过在静态散列表中查看目标IP来给真正服务器分派请求。源散列调度通过在静态散列表中查看源IP来给真正服务器分派请求。5LVS的选路方法使用网络地址转换(NetworkAddressTranslation)或NAT选路(NATrouting)来进行LVS集群。6LVS工作视图7LVS群集的部件pulse这是启动和LVS路由器相关的所有其它守护进程的控制进程。lvslvs守护进程被pulse调用后就会在活跃LVS路由器上运行。ipvsadm该服务共享内核中的IPVS路由表。nannynanny监视运行在活跃LVS路由器上的守护进程。二配置LVS1Piranha配置工具设置口令piranha-passwd2启动Piranha配置工具服务servicepiranha-guistart3限制对Piranha配置工具的使用/etc/sysconfig/ha/web/secure/.htaccessOrderdeny,allowDenyfromallAllowfrom127.0.0.14启用分组转发/etc/sysctl.conf中的net.ipv4.ip_forward=0这一行改为:net.ipv4.ip_forward=15分配防火墙标记iptables-tmangle-APREROUTING-ptcp-dn.n.n.n/32--dport80-jMARK--set-mark80三Piranha配置工具1登陆打开主LVS节点的可公开选路的真正IP地址PrimaryserverprivateIP主LVS节点上的另一个网络接口的真正IP地址NATRouterIP浮动IP地址NATRouternetmask子网掩码NATRouterdevice浮动IP地址的网络接口的设备名称3REDUNDANCY备份LVS路由器节点RedundantserverpublicIP备份LVS路由器节点的公共真正IP地址。RedundantserverprivateIP备份节点的专用真正IP地址。HeartbeatInterval(seconds)设置为心跳之间的时间Assumedeadafter(seconds)备份LVS路由器节点失效转移的时间。Heartbeatrunsonport主LVS节点的心跳通信端口4VIRTUALSERVERSName虚拟服务器名称。Applicationport监听端口号ProtocolUDP或TCPVirtualIPAddress虚拟服务器的浮动IP地址。VirtualIPNetworkMask虚拟服务器子网掩码。FirewallMark防火墙标记Device浮动IP地址绑定的网络设备Re-entryTime失效重新加载真正服务器的时间ServiceTimeout失效剔除真正服务器的时间Quiesceserver防止了新服务器在进入群集的大量连接Loadmonitoringtool监视各个真正服务器的载量Scheduling调度算式Persistence连接超时前所允许经过的不活跃期间的秒数PersistenceNetworkMask限制某个特定子网的持续性的子网掩码。5REALSERVERName真正服务器Address真正服务器的IPWeight主机权值6同步配置文件scp/etc/sysconfig/ha/lvs.cfn.n.n.n:/etc/sysconfig/ha/lvs.cfscp/etc/sysconfig/iptablesn.n.n.n:/etc/sysconfig/四LVS部署1路由转发vi/etc/sysctl.confnet.ipv4.ip_forward=1sysctl–p2iptables标记iptables-tmangle-APREROUTING-ptcp-d211.144.137.131/32--dport80-jMARK--set-mark81iptables-tmangle-APREROUTING-ptcp-d211.144.137.232/32--dport80-jMARK--set-mark82iptables-tmangle-APREROUTING-ptcp-d211.144.137.233/32--dport80-jMARK--set-mark83iptables-tmangle-APREROUTING-ptcp-d211.144.137.234/32--dport80-jMARK--set-mark84iptables-tmangle-APREROUTING-ptcp-d211.144.137.235/32--dport80-jMARK--set-mark853配置lvs.cfserial_no=40primary=211.144.137.130primary_private=211.144.137.130service=lvsbackup_active=0backup=0.0.0.0heartbeat=1heartbeat_port=539keepalive=6deadtime=18network=natnat_router=192.168.70.254eth1debug_level=NONEvirtual[server_coolh]{active=1address=211.144.137.131eth0:1vip_nmask=255.255.255.224fwmark=81port=80send=GET/HTTP/1.0\r\n\r\nexpect=HTTPuse_regex=0load_monitor=nonescheduler=wlcprotocol=tcptimeout=12reentry=30quiesce_server=0server[node01]{address=192.168.70.11active=1weight=1}server[node02]{address=192.168.70.21active=1weight=1}server[node03]{address=192.168.70.31active=1weight=1}server[node04]{address=192.168.70.41active=1weight=1}server[node05]{address=192.168.70.51active=1weight=1}server[node06]{address=192.168.70.61active=1weight=1}}virtual[server_ccg]{active=1address=211.144.137.132eth0:2vip_nmask=255.255.255.224fwmark=82port=80send=GET/HTTP/1.0\r\n\r\nexpect=HTTPuse_regex=0load_monitor=nonescheduler=wlcprotocol=tcptimeout=12reentry=30quiesce_server=0server[node01]{address=192.168.70.12active=1weight=1}server[node02]{address=192.168.70.22active=1weight=1}server[node03]{address=192.168.70.32active=1weight=1}server[node04]{address=192.168.70.42active=1weight=1}server[node05]{address=192.168.70.52active=1weight=