zhangxinba 发表于 2019-1-3 14:07:00

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 stopvim /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
logfacilitylocal0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport694
ucast eth1 192.168.10.2另外一台IP
auto_failback on
nodeKenasel   ======= uname -n
nodeserver2
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
compressionbz2
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
   
      backing-store /dev/sdb1
      incominguser admin aixocm
      initiator-address 10.0.5.100
      initiator-address 10.0.5.101
      write-cache on
      MaxConnections 2
   
#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]
查看完整版本: LVS高性能集群