LVS高性能集群

LVS高性能集群  ====负载均衡硬件设备

1、什么是LVS?
  linux virtual service,linux虚拟服务,使用多台服务器一起工作来提高服务的访问和处理性能
 
2、lvs的工作模式
  (1)nat:通过地址转换访问服务
  (2)tun:通过IP隧道访问服务
  (3)dr:直接调度访问服务  ====直接路由调度

1.轮寻    
2.加权,根据硬件的好坏来设置权值  
3.最小连接
4. 加权最小连接
5. 基于地址的最小连接调度
6. 目标
7. 源    
   
3、调度算法
  rr:轮询调度
 wrr:加权轮询调度
  lc:最小连接数调度
 wlc:加权最小连接调度
  dh:目标地址散列算法,以目标地址为关键字来查找一个静态的hash表来选择RS
  sh:源地址散列算法,以源地址为关键字来查找一个静态的hash表来选择RS
lblc:基于地址的最小连接数调度
 
4、LVS的NAT模式配置
 (1)客户端配置
    ip地址
    网关
   
 (2)防火墙配置
    ip地址
    启用路由转发
    配置NAT
   
 (3)Director服务器配置
   配置ip地址
    配置网关
    配置调度表
   
 (4)RS服务器配置
    配置ip地址
    配置网关
    启动相应服务
socket===把套接字放在一个文件然后用文件来连接
cookie ===保存用户的信息
session===保持客户机与服务器状态

(5)lvs的持久性连接
    PCC(persistent client connecttions)方式:将来自于同一个客户端对所有端口的请求,
    始终定向到上次选择的RS,缺点是不能实现不同的服务请求访问不同的RS。
    # ipvsadm -A -t 10.0.5.150:0 -s rr -p 600
    # ipvsadm -a -t 10.0.5.150:0 -r 10.0.5.151 -m
    # ipvsadm -a -t 10.0.5.150:0 -r 10.0.5.152 -m
   
    PPC(persistent port connecttions)方式:将来自于同一个客户端对同一个集群服务的请求
    ,始终定向到上次选定的RS
    # ipvsadm -A -t 10.0.5.150:80 -s rr -p 600
    # ipvsadm -a -t 10.0.5.150:80 -r 10.0.5.151:80 -m
    # ipvsadm -a -t 10.0.5.150:80 -r 10.0.5.152:80 -m
   
    PNMPP(persistent Netfilter Marked Packet Persistence):持久防火墙标记连接,
    根据iptables的标记规则,将相关的服务标记为同一类别的请求
    # iptables -t mangle -A PREROUTING -d 10.0.5.150 -p tcp --dport 80
      -j MARK --set-mark 10 (0-->99)
    # iptables -t mangle -A PREROUTING -d 10.0.5.150 -p tcp --dport 443
      -j MARK --set-mark 10 (0-->99)
     
    # iptables -t mangle -A PREROUTING -d 10.0.5.150 -p tcp --dport 21
      -j MARK --set-mark 20 (0-->99)
    # iptables -t mangle -A PREROUTING -d 10.0.5.150 -p tcp --dport 20
      -j MARK --set-mark 20 (0-->99)
 
    # ipvsadm -A -f 10 -s wrr -p 600
      # ipvsadm -A -f 20 -s wrr -p 600
    # ipvsadm -a -f 10 -r 10.0.5.151 -m -w 2
    # ipvsadm -a -f 10 -r 10.0.5.152 -m -w 3
    # ipvsadm -a -f 20 -r 10.0.5.153 -m -w 2
    # ipvsadm -a -f 20 -r 10.0.5.154 -m -w 3
         
   -w====权值
   nat模式的缺点
只能承载流量小
结构上看调度服务器

5、LVS的DR模式

RS真实服务器回应:以调度服务器地址为原地址向防火墙回应

调度服务器目标IP不改,目标MAC地址改变

(1)客户端配置
     ip地址
     网关
     
  (2)防火墙配置
     ip地址
     启用路由转发
     配置NAT

service httpd stop  
     
  (3)调度服务器配置
     ip地址
     配置调度表
     配置网关

地址改下
 service httpd stop  vim /etc/sysctl.
     
  (4)真实服务器配置
     ip地址
     禁用真实服务器的arp广播和回应
 1.    # vim /etc/sysctl.conf
     net.ipv4.conf.lo.arp_ignore = 1
     net.ipv4.conf.lo.arp_announce = 2
     net.ipv4.conf.all.arp_ignore = 1
     net.ipv4.conf.all.arp_announce = 2
     
 2.    # rpm -ivh arptables_jf*
     # arptables -A IN -d 172.16.10.10 -j DROP
     # ifconfig lo:0 172.16.10.10 netmask 255.255.255.0 broadcast 172.16.10.10

开启路由转发  vim /etc/sysctl.conf
     
     添加网关 172.16.20.1

RS服务器虚拟IP可以在环回接口或者子接口配置

验证:

DR 模式优缺点
调度服务器单点负照===?
真实服务器坏了 调度服务器不能得到回应
优点:回包流量不经过前端服务器
缺点:由于修改二层封装,无法跨网段访问

6、keepalived+lvs实现高可用、高性能集群
  (1)安装keepalived

# ./configure --prefix=/usr/local/keepalived --enable-snmp --enable-profile --with-kernel-version=2.6 --sysconfdir=/etc
    # make && make install
   
(2)配置keepalived
    # cd /etc/keepalived
    # vim keepalived.conf
global_defs {
  notification_email {
       [email protected]
  }
  notification_email_from [email protected]
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id lvs-s1
}

vrrp_instance VI_1 {
   state MASTER   ==========
   interface eth0
   virtual_router_id 30
   priority 100   ===============
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass aixocm
   }
   virtual_ipaddress {
       172.16.10.10/24 dev eth0
   }
}
virtual_server 172.16.10.10 80 {
   delay_loop 3
   lb_algo wrr
   lb_kind DR
   nat_mask 255.255.255.0
   persistence_timeout 60
   protocol TCP

real_server 172.16.20.20 80 {
       weight 2
       TCP_CHECK {
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
           connect_port 80
       }
   }

real_server 172.16.20.30 80 {
       weight 3
       TCP_CHECK {
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
           connect_port 80
       }
   }
}

# vim /etc/sysconfig/keepalived
 KEEPALIVED_OPTIONS="-D -f /etc/keepalived/keepalived.conf"

7、heartbeat+ldirector+lvs实现高可用集群
 (1)安装软件
   # yum install PyXML resource-agents ipvsadm perl-MailTools perl-Net-SSLeay perl-libwww-perl perl-TimeDate perl-MailTools perl-Net* perl-IO-Socket* perl-Socket* cifs-utils PyXML nfs-utils
   
   # yum install cluster-glue cluster-glue-libs
   
   # rpm -ivh heartbeat-3.0.4-1.el6.x86_64.rpm heartbeat-devel-3.0.4-1.el6.x86_64.rpm heartbeat-libs-3.0.4-1.el6.x86_64.rpm ldirectord-3.9.2-2.fc17.1.x86_64.rpm

(2)配置heartbeat
   # vim authkeys   \\主备服务器之间进行通信的密钥配置文件
     auth 3
     3 md5 aixocm!
   
   # chmod 600 authkeys

# vim ha.cf     \\主配置文件文件
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
ucast eth1 192.168.10.2  另外一台IP
auto_failback on
node Kenasel   ======= uname -n
node server2
ping 10.0.2.253
respawn hacluster /usr/lib64/heartbeat/ipfail    =====32位就LIB
apiauth ipfail gid=haclient uid=hacluster
deadping 30
#apiauth ipfail uid=hacluster
#apiauth default gid=haclient
conn_logd_time 60
compression bz2
compression_threshold 2

(3)配置haresource资源配置文件
    # vim haresources
Kenasel IPaddr::10.0.5.200/16/eth0:0 ldirectord::/etc/ha.d/ldirectord.cf

ldirectord脚本放在/etc/ha.d/resource.d

(4)配置ldirectord进行lvs调度
    # vim ldirectord.cf
checktimeout=3
checkinterval=1
autoreload=yes
logfile="/var/log/ldirectord.log"
logfile="local0"
emailalert="[email protected]"
emailalertfreq=3600
emailalertstatus=all
quiescent=no

virtual=10.0.5.200:80
       real=10.0.5.10:80 gate 2
       real=10.0.5.11:80 gate 3
       service=http
       scheduler=wrr
       persistent=300
       netmask=255.255.255.255
       protocol=tcp
       checktype=negotiate
       checkport=80
       request="test.html"
       receive="ok!"
 
 备份服务器只需改下ucast
 8、heartbeat+iscsi+mysql实现高可用

资源迁移 IP 服务 磁盘
磁盘共享方式

(1)安装iscsi服务器端软件
  # yum install scsi-target-utils
 
  (2)设置配置文件进行iscsi共享
  # vim /etc/tgt/targets.conf
  <target iqn.2015-07-30.sxjy.com:mysql>
       backing-store /dev/sdb1
       incominguser admin aixocm
       initiator-address 10.0.5.100
       initiator-address 10.0.5.101
       write-cache on
       MaxConnections 2
  </target>
 #service tgtd start
# tgt-admin -show

lun===逻辑单元号

(3)客户端挂载设置
  安装客户端软件
  # yum install iscsi-initiator-utils
 
  配置客户端认证
  # vim /etc/iscsi/iscsid.conf
  node.session.auth.authmethod = CHAP
  node.session.auth.username = admin   === 扫描使用
  node.session.auth.password = aixocm
  node.session.auth.username_in = admin  ====挂载使用
  node.session.auth.password_in = aixocm
 
   /var/lib/ssicsi  ===数据都保存在这,报错把这删掉重新挂载
   
   # service iscsi start
   # service iscsid start
   资源迁移时时间要同步
   
   rdate -s 10.0.2.253
   
   
   扫描服务器的iscsi共享
  # iscsiadm -m discovery -t sendtargets -p 10.0.2.220
 
  挂载iscsi共享磁盘
   # iscsiadm -m node -T iqn.2015-07-30.sxjy.com:mysql -p 10.0.2.220 -l
 
  卸载iscsi共享磁盘
  # iscsiadm -m node -T iqn.2015-07-30.sxjy.com:mysql -p 10.0.2.220 -u
 
   
   
   # vim haresources
Kenasel IPaddr::10.0.5.200/16/eth0:0 filesystem::/database/mydata::ext4 mysqld
   
   ===filesystem,mysqld都为脚本

9、heartbeat+DRBD+mysql实现高可用
  (1)安装DRBD
    # yum install kernel kernel-devel flex
     # ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-utils --with-km --with-udev --with-xen --with-pacemaker --with-heartbeat --with-bashcompletion --with-distro=redhat --with-initdir=/etc/init.d
     
    # make && make install
   
    # modprobe drbd
   
    lsmod | grep brbd
     (2)配置DRBD
   
   
   # vim global_common.conf
global {
       usage-count yes;
}

common {
       handlers {
               pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
               pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
               local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
       }

startup {
       }

options {
       }

disk {
               on-io-error detach;
       }

net {
               protocol C;
               after-sb-0pri disconnect;
               after-sb-1pri disconnect;
               after-sb-2pri disconnect;
               rr-conflict disconnect;
               cram-hmac-alg sha1;
               shared-secret "aixocm";
       }
       
       
        syncer {
               rate 50M;
       }
}
# vim r0.res
resource r0 {
       on server1
       {
               device /dev/drbd0;
               disk /dev/sdb1;
               address 10.0.5.100:7788;
               meta-disk internal;
       }

on server2
       {
               device /dev/drbd0;
               disk /dev/sdb1;
               address 10.0.5.101:7788;
               meta-disk internal;
       }
}

(3)创建DRBD资源
  # drbdadm create-md r0   两边都要做
  # service drbd start    \\主从服务器同时启动
 # cat /proc/drbd        \\查看DRBD状态
 
  (4)将其中一台提升为主设备
  # drbdsetup /dev/drbd0 primary --o
 
  (5)格式化drbd设备
  # mkfs.ext4 /dev/drbd0  一台操作就行
 
  (6)挂载设备到需要的特定目录
  # mount /dev/drbd0 /database/mydata
   
   (7)配置heartbeat的haresource文件
  server1 IPaddr::10.0.5.200/32/eth0:0 drbddisk::r0 Filesystem::/dev/drbd0::/database/mydata::ext4 mysqld
 
  (8)drbd的升级和降级处理
  # umount /dev/drbd0  从服务器不能挂载 所以降级前卸载
  # drbdadm secondary r0  \\降级
 
  # drbdadm primary r0
  # mount /dev/drbd0 /database/mydata

				
时间: 2024-10-16 06:14:11

LVS高性能集群的相关文章

LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置

原文地址:LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置 作者:gron 原文链接:http://www.linuxidc.com/Linux/2012-07/65547.htm 架构图 先进行优化 vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 65536 4194304 net.c

LVS+Keepalived+Squid+Nginx+MySQL主从高性能集群架构部署方案

方案一,在tomcat的workers.properties里面配置相关条件 worker.tomcat.lbfactor=50 worker.tomcat.cachesize=10 worker.tomcat.cache_timeout=600 worker.tomcat.socket_keepalive=1 worker.tomcat.socket_timeout=300 Linux内核优化: vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容net.

keepalived+lvs实现调度、高可用、高性能集群

6.keepalived+lvs实现调度.高可用.高性能集群 Keepalived的作用是: 检 测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服 务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务 器       (1)安装keepalived     # ./configure --prefix=/usr

高性能集群软件Keepalived之基础知识篇

一.Keepalived介绍 Keepalived是Linux下一个轻量级的高可用解决方案,它与HeartBeat.RoseHA实现的功能类似,都可以实现服务或者网络的高可用,但是又有差别:HeartBeat是一个专业的.功能完善的高可用软件,它提供了HA软件所需的基本功能,比如心跳检测和资源接管,监测集群中的系统服务,在群集节点间转移共享IP地址的所有者等,HeartBeat功能强大,但是部署和使用相对比较麻烦:与HeartBeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功

lvs+keepalived集群架构服务

lvs+keepalived集群架构服务 一,LVS功能详解 1.1 LVS(Linux Virtual Server)介绍 LVS是Linux Virtual Server 的简写(也叫做IPVS),意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以在UNIX/LINUX平台下实现负载均衡集群功能. 1.2 企业网站LVS集群架构图 1.3 IPVS软件工作层次图 从上图我们看出,LVS负载均衡调度技术是在Linux内核中实现的,因此,被称之为Linux虚拟服务器(Linux Virt

LVS 服务器集群三种实现模式配置

LVS (Linux Virtual Server) Linux 服务器集群 LVS服务器集群中基于IP的负载均衡技术,有3种实现模式:VS/NET模式,VS/TUN模式(IP隧道模式),VS/DR模式(直接路由模式) 一,[VS/NET 模式] 1,配置Linux Director(前端负载调度器)IP,并打开IP数据包转发功能 1 2 3 ifconfig eth0 192.168.1.2 broacast 192.168.1.255 netmask 255.255.255.0 up ifc

部署Hadoop高性能集群

部署Hadoop高性能集群 服务器概述 1)Hadoop是什么 Hadoop是Lucene创始人Doug Cutting,根据Google的相关内容山寨出来的分布式文件系统和对海量数据进行分析计算的基础框架系统,其中包含MapReduce程序,hdfs系统等. Hadoop包括两大核心,分布式存储系统和分布式计算系统. 2)分布式存储 为什么数据需要存储在分布式的系统中哪,难道单一的计算机存储不了吗,难道现在的几个TB的硬盘装不下这些数据吗?事实上,确实装不下.比如,很多的电信通话记彔就存储在很

RHEL6 搭建 keepalived + lvs/DR 集群

搭建 keepalived + lvs/DR  集群 使用Keepalived为LVS调度器提供高可用功能,防止调度器单点故障,为用户提供Web服务: LVS1调度器真实IP地址为192.168.4.50 LVS2调度器真实IP地址为192.168.4.55 服务器VIP地址设置为192.168.4.252 真实Web服务器地址分别为192.168.4.51.192.168.4.52 实验拓扑图: 实验步骤: 实验准备: 配置yum源 # service iptables stop       

lvs+keepalived+nginx+tomcat高可用高性能集群部署

2台前端 keepalived+lvs,热备的方式,保证一台lvs前端能正常访问就行,如果一台down,另外一台热备升级到master主机 master: 192.168.1.210 ubuntu 12.0.4 salve: 192.168.1.211 ubuntu 12.0.4 后端2台web服务器通过lvs的算法轮询被访问 web1: 192.168.1.204 centos 5.10 nginx+tomcat web2: 192.168.1.206 centos 5.10 nginx+to