热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LBCluster之二:LVS安装配置及实例

一、LVS安装、配置1、查看内核是否支持ipvs[root@localhost~]#grep-iipvsbootconfig-2.6.32-573.el6.x86_64

一、LVS安装、配置

1、查看内核是否支持ipvs

[root@localhost ~]# grep -i 'ipvs' /boot/config-2.6.32-573.el6.x86_64 
# IPVS transport protocol load balancing support
# IPVS scheduler
# IPVS application helper
[root@localhost ~]# grep -i 'ipvs' -A 10 /boot/config-2.6.32-573.el6.x86_64 
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y

#
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
--
# IPVS application helper
#
CONFIG_IP_VS_FTP=m
CONFIG_IP_VS_PE_SIP=m

#
# IP: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_CONNTRACK_IPV4=m
# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set

[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

注意:2.4.26,2.6.4及以后的kernel版本内核已经默认支持IPVS


2、安装ipvsadm

[root@localhost ~]# yum install -y ipvsadm[root@localhost ~]# rpm -ql ipvsadm/etc/rc.d/init.d/ipvsadm/etc/sysconfig/ipvsadm-config/sbin/ipvsadm/sbin/ipvsadm-restore/sbin/ipvsadm-save/usr/share/doc/ipvsadm-1.26/usr/share/doc/ipvsadm-1.26/README/usr/share/man/man8/ipvsadm-restore.8.gz/usr/share/man/man8/ipvsadm-save.8.gz/usr/share/man/man8/ipvsadm.8.gz

3、ipvsadm命令的用法

管理集群服务:创建、修改、删除

管理集群服务的RS:添加、修改、移除

查看:统计数据、速率 


1)管理集群服务

创建或修改ipvsadm -A|E -t|u|f service-address [-s scheduler]

   -A:添加

   -E:修改

   -t: 承载的应用层协议为基于TCP协议提供服务的协议;其server-address的格式为“VIP:PORT”例如:“192.168.100.30:80”

   -f: 承载的应用层协议为基于TCP或UDP协议提供服务的协议,但此类报文经过iptables/netfilter打标记,即防火墙标记:其server-address的格式为“FWM”;例如:“10”

   -s: scheduler 指明调度算法;默认为WLC

[root@localhost ~]# ipvsadm -A -t 172.16.100.30:80[root@localhost ~]# ipvsadm -lIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  172.16.100.30:http wlc[root@localhost ~]#

删除ipvsadm -D -t|u|f service-address

查看ipvsadm -l|L

[root@localhost ~]# ipvsadm -D -t  172.16.100.30:80  [root@localhost ~]# ipvsadm -lIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn[root@localhost ~]#

2)管理集群上的RS

添加或修改:ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]

            -r server-address: 指明RS,server-address格式一般为“IP[:PORT]”;注意:只有支持端口映射的LVS类型才应该此处显式定义端口;例如:-r 192.168.100.10:8080

            [-g|i|m]: 指明lvs类型;省略时默认为dr类型

                       -g: gateway,意为dr类型

                        -i:ipip,意为tun类型

                        -m: masquerade,意为nat类型

          [-w weight]:当前RS的权重

                       注意:仅对于支持加权调度的scheduler才有意义

[root@localhost ~]# ipvsadm -a -t 192.168.100.30:80 -r 172.16.100.10 -m -w 2[root@localhost ~]# ipvsadm -a -t 192.168.100.30:80 -r 192.168.100.20 -m -w 5[root@localhost ~]# ipvsadm -lIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.100.30:http wlc  -> 172.16.100.10:http           Masq    2      0          0           -> 192.168.100.10:http          Masq    2      0          0           -> 192.168.100.20:http          Masq    5      0          0         [root@localhost ~]#

删除ipvsadm -d -t|u|f service-address -r server-address

清空所有集群服务的定义ipvsadm -C

保存集群服务及RS的定义

    ipvsadm -S > /etc/sysconfig/ipvsadm

    ipvsadm-save > /etc/sysconfig/ipvsadm

    service ipvsadm save

[root@localhost ~]# cat /etc/sysconfig/ipvsadmcat: /etc/sysconfig/ipvsadm: No such file or directory[root@localhost ~]# ipvsadm -S-A -t 192.168.100.30:http -s wlc-a -t 192.168.100.30:http -r 172.16.100.10:http -m -w 2-a -t 192.168.100.30:http -r 192.168.100.10:http -m -w 2-a -t 192.168.100.30:http -r 192.168.100.20:http -m -w 5[root@localhost ~]# cat /etc/sysconfig/ipvsadmcat: /etc/sysconfig/ipvsadm: No such file or directory[root@localhost ~]# service ipvsadm saveipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ][root@localhost ~]# cat /etc/sysconfig/ipvsadm-A -t 192.168.100.30:80 -s wlc-a -t 192.168.100.30:80 -r 172.16.100.10:80 -m -w 2-a -t 192.168.100.30:80 -r 192.168.100.10:80 -m -w 2-a -t 192.168.100.30:80 -r 192.168.100.20:80 -m -w 5[root@localhost ~]#

恢复集群服务及RS的定义

     ipvsadm -R

     ipvsadm-restore

     service ipvsadm restart

[root@localhost ~]# ipvsadm -C                [root@localhost ~]# ipvsadm -lIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn[root@localhost ~]# cat /etc/sysconfig/ipvsadm-A -t 192.168.100.30:80 -s wlc-a -t 192.168.100.30:80 -r 172.16.100.10:80 -m -w 2-a -t 192.168.100.30:80 -r 192.168.100.10:80 -m -w 2-a -t 192.168.100.30:80 -r 192.168.100.20:80 -m -w 5[root@localhost ~]# ipvsadm -R < /etc/sysconfig/ipvsadm[root@localhost ~]# ipvsadm -lIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.100.30:http wlc  -> 172.16.100.10:http           Masq    2      0          0           -> 192.168.100.10:http          Masq    2      0          0           -> 192.168.100.20:http          Masq    5      0          0         [root@localhost ~]#

3)查看规则

         ipvsadm -l|L [options]

         -c: 列出当前所有connection

    --stats: 列出统计数据  

    --rates: 列出速率

-n|--numeric: 数字格式显示IP及端口,不作反解

     --exact:精确值

[root@localhost ~]# ipvsadm -l -c IPVS connection entriespro expire state       source             virtual            destination[root@localhost ~]# curl http://192.168.100.30curl: (7) couldn't connect to host[root@localhost ~]# curl http://192.168.100.30curl: (7) couldn't connect to host[root@localhost ~]# ipvsadm -l -c             IPVS connection entriespro expire state       source             virtual            destinationTCP 00:08  CLOSE       192.168.100.30:50227 192.168.100.30:http 192.168.100.10:httpTCP 00:07  CLOSE       192.168.100.30:50226 192.168.100.30:http 192.168.100.20:http[root@localhost ~]# ipvsadm -l --statsIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes  -> RemoteAddress:PortTCP  192.168.100.30:http                 3        3        3      180      120  -> 172.16.100.10:http                  0        0        0        0        0  -> 192.168.100.10:http                 1        1        1       60       40  -> 192.168.100.20:http                 2        2        2      120       80    [root@localhost ~]# ipvsadm -l --rateIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS  -> RemoteAddress:PortTCP  192.168.100.30:http                 0        0        0        0        0  -> 172.16.100.10:http                  0        0        0        0        0  -> 192.168.100.10:http                 0        0        0        0        0  -> 192.168.100.20:http                 0        0        0        0        0

4)清空计数器

       ipvsadm -Z [-t|u|f service-address]


二、实战案例

LVS-nat类型Director实现httpd集群负载均衡

1)实验环境:

OS:CentOS6.7

CIP:192.168.100.8  (windows)

VIP:192.168.100.30 (Director eth0)

DIP:192.168.200.30  (Director eth1)

R1IP:192.168.200.10 (gw 192.168.200.30)

R2IP:192.168.200.20 (gw 192.168.200.30)


2)配置Director

[root@localhost ~]# ipvsadm -A -t 192.168.100.30:80 [root@localhost ~]# ipvsadm -lnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.100.30:80 wlc[root@localhost ~]# [root@localhost ~]# ipvsadm -a -t 192.168.200.30:80 -r 192.168.200.20 -m -w 2[root@localhost ~]# ipvsadm -a -t 192.168.200.30:80 -r 192.168.200.10 -m -w 1  [root@localhost ~]# ipvsadm -lnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.100.30:80 wlc  -> 192.168.200.10:80            Masq    1      0          0           -> 192.168.200.20:80            Masq    2      0          0         [root@localhost ~]# ipvsadm saveTry `ipvsadm -h' or 'ipvsadm --help' for more information.[root@localhost ~]# service ipvsadm save ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ][root@localhost ~]# cat /etc/sysconfig/ipvsadm-A -t 192.168.100.30:80 -s wlc-a -t 192.168.100.30:80 -r 192.168.200.10:80 -m -w 1-a -t 192.168.100.30:80 -r 192.168.200.20:80 -m -w 2

3)打开NAT转发功能

[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward             0[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward  #临时更改[root@localhost ~]# sed -i 's/net.ipv4.ip_forward =0/net.ipv4.ip_forward =1/' /etc/sysctl.conf      #永久更改[root@localhost ~]# sysctl -pnet.ipv4.ip_forward = 1net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.default.accept_source_route = 0kernel.sysrq = 0kernel.core_uses_pid = 1net.ipv4.tcp_synCOOKIEs = 1kernel.msgmnb = 65536kernel.msgmax = 65536kernel.shmmax = 68719476736kernel.shmall = 4294967296

4)测试

wKiom1YhtcuxpgiXAAB6_6r9K9M021.jpgwKioL1Yhtf3TvYCWAAB5-itR3Fo625.jpg

[root@localhost ~]# ab -n 10000 -c 1000 http://192.168.100.30/index.html [root@localhost ~]# ipvsadm -ln --stats                                  IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes  -> RemoteAddress:PortTCP  192.168.100.30:80               99630   630560   500972 45219839 55454909  -> 192.168.200.10:80               52544   315921   262136 21901574 29182095  -> 192.168.200.20:80               47086   314639   238836 23318265 26272814  [root@localhost ~]# ipvsadm -E -t 192.168.100.30 -s wrrZero port specified for non-persistent service[root@localhost ~]# ipvsadm -E -t 192.168.100.30:80 -s wrr[root@localhost ~]# ipvsadm -lnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.100.30:80 wrr  -> 192.168.200.10:80            Masq    1      0          0           -> 192.168.200.20:80            Masq    2      0          0         [root@localhost ~]# ipvsadm -Z[root@localhost ~]# ipvsadm -ln --statsIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes  -> RemoteAddress:PortTCP  192.168.100.30:80                   0        0        0        0        0  -> 192.168.200.10:80                   0        0        0        0        0  -> 192.168.200.20:80                   0        0        0        0        0[root@localhost ~]# ab -n 50000 -c 1500 http://192.168.100.30/index.html  This is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 192.168.100.30 (be patient)socket: Too many open files (24)[root@localhost ~]# ab -n 50000 -c 1000 http://192.168.100.30/index.html[root@localhost ~]# ipvsadm -ln --statsIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes  -> RemoteAddress:PortTCP  192.168.100.30:80               52728   340723   261325 24910676 28530623  -> 192.168.200.10:80               17576   105021    85682  7356740  9383766  -> 192.168.200.20:80               35152   235702   175643 17553936 19146857


抓包工具:

         tcpdump -i eth0 -nn [src|dst] host IP  and [src|dst] tcp|dcp 80

[root@localhost ~]# tcpdump -i eth0 -nn host 192.168.200.10 and tcp port 80tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes21:40:57.293619 IP 192.168.100.99.55270 > 192.168.200.10.80: Flags [S], seq 2884297711, win 32768, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 021:40:57.293801 IP 192.168.200.10.80 > 192.168.100.99.55270: Flags [S.], seq 1386513891, ack 2884297712, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 6], length 021:40:57.296749 IP 192.168.100.99.55270 > 192.168.200.10.80: Flags [.], ack 1, win 8192, length 0


LVS-dr类型Director实现httpd集群负载均衡

1)实验环境:

OS:CentOS6.7

CIP:192.168.200.8  (windows)

VIP:192.168.200.90 (Director eth0)

DIP:192.168.200.30  (Director eth0:0)

R1IP:192.168.200.10 (lo:0 192.168.200.90 broadcast 192.168.200.90 netmask 255.255.255.255)

R2IP:192.168.200.20 (lo:0 192.168.200.90 broadcast 192.168.200.90 netmask 255.255.255.255)


2)配置R1,R2不响应VIP的ARP请求及接收、从lo接口响应VIP 

[root@localhost conf]# cat  /proc/sys/net/ipv4/conf/all/arp_announce 0[root@localhost conf]# cat >> /etc/sysctl.conf <net.ipv4.conf.all.arp_ignore = 1>net.ipv4.conf.lo.arp_ignore = 1>net.ipv4.conf.all.arp_announce = 2>net.ipv4.conf.lo.arp_announce = 2             > EOF[root@xxj ~]# sysctl -pnet.ipv4.ip_forward = 0net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.default.accept_source_route = 0kernel.sysrq = 0kernel.core_uses_pid = 1net.ipv4.tcp_synCOOKIEs = 1kernel.msgmnb = 65536kernel.msgmax = 65536kernel.shmmax = 68719476736kernel.shmall = 4294967296net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2[root@xxj ~]# cat /proc/sys/net/ipv4/conf/lo/arp_announce2[root@localhost conf]# cat /proc/sys/net/ipv4/conf/lo/arp_ignore1[root@xxj ~]# route add -host 192.168.200.90 dev lo:0[root@xxj ~]# route -nKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.200.90  0.0.0.0         255.255.255.255 UH    0      0        0 lo0.0.0.0         192.168.100.1   0.0.0.0         UG    0      0        0 eth0

wKioL1YkzcKBMuvNAACeUxj_q7o377.jpgwKiom1YkzZqwjS60AACGuN-113Q771.jpg

配置过程总结

     Director:

(1) VIP配置在物理接口的别名上

     ifconfig INTERFACE:ALIAS $vip broadcast $vip netmask 255.255.255.255

        (2) 配置路由信息

     route add -host $vip dev INTEFACE:ALIAS


     RS:

(1) 先修改内核参数

     echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

             echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

     echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

     echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

       (2) VIP配置在lo的别名上

             ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up       (3) 配置路由信息

     route add -host $vip dev lo:0

       (4)配置ipvsadm


       (5)测试


DR类型director脚本示例:

#!/bin/bash#vip=172.16.100.7rip=('172.16.100.8' '172.16.100.9')weight=('1' '2')port=80scheduler=rripvstype='-g'case $1 instart)iptables -F -t filteripvsadm -Cifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 uproute add -host $vip dev eth0:0echo 1 > /proc/sys/net/ipv4/ip_forward      # 脚本中为什么还用临时生效的方法更改,有时间再修改了ipvsadm -A -t $vip:$port -s $scheduler[ $? -eq 0 ] && echo "ipvs service $vip:$port added."  || exit 2for i in `seq 0 $[${#rip[@]}-1]`; doipvsadm -a -t $vip:$port -r ${rip[$i]} $ipvstype -w ${weight[$i]}[ $? -eq 0 ] && echo "RS ${rip[$i]} added."donetouch /var/lock/subsys/ipvs;;stop)echo 0 > /proc/sys/net/ipv4/ip_forwardipvsadm -Cifconfig eth0:0 downrm -f /var/lock/subsys/ipvsecho "ipvs stopped.";;status)if [ -f /var/lock/subsys/ipvs ]; thenecho "ipvs is running."ipvsadm -L -nelseecho "ipvs is stopped."fi;;*)echo "Usage: `basename $0` {start|stop|status}"exit 3;;esac


DR类型RS脚本示例:

#!/bin/bash#vip=172.16.100.7interface="lo:0"case $1 instart)echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announceecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceifconfig $interface $vip broadcast $vip netmask 255.255.255.255 uproute add -host $vip dev $interface;;stop)echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/all/arp_announceecho 0 > /proc/sys/net/ipv4/conf/lo/arp_announceifconfig $interface down;;status)if ifconfig lo:0 |grep $vip &> /dev/null; thenecho "ipvs is running."elseecho "ipvs is stopped."fi;;*)echo "Usage: `basename $0` {start|stop|status}"exit 1esa

本文出自 “xiexiaojun” 博客,请务必保留此出处http://xiexiaojun.blog.51cto.com/2305291/1703611


推荐阅读
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • Telnet的使用(Telnet远程连接Linux)
    一、环境描述:客户端:Win10操作系统 ... [详细]
  • 网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linu ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
author-avatar
mobiledu2502876027
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有