设为首页 收藏本站
云服务器等爆品抢先购,低至4.2元/月
查看: 1082|回复: 0

[经验分享] LVS高性能集群

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-18 09:37:22 | 显示全部楼层 |阅读模式
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 {
        12700287@qq.com
   }
   notification_email_from admin@sxjy.com
   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="admin@xjy.com"
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
   

1
<br>



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-259600-1-1.html 上篇帖子: LVS介绍及工作原理图解 下篇帖子: lvs使用和管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表