HAProxy浅说

HAProxy浅说:
    HAProxy响应码:
        200:请求正常,响应正常,也就是正常响应码
     301:配置使用的重定向,以下都是有关于重定向的一些响应码,不做解释
     302:
     303:
     307:
     308:
     400:客户端错误,请求无效或是请求太大
     401:身份验证时的问题所向,如果通过有这个响应码
     403:请求没有权限,一般为ACL或者是系统的filter功能对请求流进行了流量匹配执行了拒绝
     408:请求超时
     500:服务端错误,当HAProxy遇到不可恢复的内部错误时,会响应此响应码,一般不会出现,因为,如果这么严重的错误就会变成404了
     502:服务端响应为空,响应无效,响应不完整或者rspdeny过滤的问题时会出现这个响应码
     503:没有服务器可用于处理请求,或者无法连接后端服务器产生的错误
     504:在服务器响应之前触发了请求超时
     HAProxy的配置
        配置文件的格式:
            配置文件分为五段
            globel:全局配置
            defaults:默认配置,这一段的配置可以用于其它几段的公有配置
            listen:用于代理监听的端口,也就是监听那一个端口,也可以加入一些其它配置
            frontend:前端配置,也就是代理配置
            backend:后端配置
        时间格式:
            通常使用毫秒来表示时间的相关配置
        配置试例:
            global
       daemon
       maxconn 256

   defaults
       mode http
       timeout connect 5000ms
       timeout client 50000ms
       timeout server 50000ms

   frontend http-in
       bind :80
       default_backend servers

   backend servers
       server server1 127.0.0.1:8000 maxconn 32
        以上的配置还可以写成如下的形式
            global
       daemon
       maxconn 256

   defaults
       mode http
       timeout connect 5000ms
       timeout client 50000ms
       timeout server 50000ms

   listen http-in
       bind *:80
       server server1 127.0.0.1:8000 maxconn 32
    全局配置指令(Global parameters)
        chroot:指定HAProxy的运行根目录,将HAProxy的权限降低,如有此目录下的权限,其它目录下HAProxy是没有权限的
            chroot /var/haproxy    //一说是变更程序的特定目录,那就与selinux有关了,修改其标签或是关闭
        deamon:运行为守护进程
        log:日志存储位置
            log 127.0.0.1 local2    //本地日志文件存放位置,这个local2可以在/etc/rsyslog.conf文件中做配置
            log <address> [len <length>] <facility> [max level [min level]]   //定义日志长度,日志级别等
        group:定义HAProxy的启用进程的组
        user:定义HAProxy的启用进程的用户
        maxconn:最大连接数
        maxconnrate:每秒最大连接数
        maxcompcpuusage:最大CPU使用率
        maxsessrate:每秒开启的最大会话数
        maxsslconn:ssl的最大连接数
        maxsslrate:每秒ssl最大连接数
        maxpipes:最大打开多少个管道文件
        spread-checks:对逻辑服务器或者物理服务器进行健康检测
    Proxies段指令
        defaults <name>:配置以下其它部分的公共配置段,也就是配置的默认配置
        frontend <name>:前端监听客户端的配置
        backend <name>:后端为前端提供服务的配置,也就是如何连接后端,有那些后端等
        listen <name>:这里可以定义一个完整的代理,它的前端与后端组合在了一起,但是只可以定义TCP流量,所以只能进行伪四层代理
    注:在配置文件中名字可以使用_-.:符号,当然也可以使用字母与数字
    Proxy部分关键字说明
        acl
            acl <aclname> <criterion> [flags] [operator] <value> …   
            acl acl的名字 acl定义的标准 [标记] [选项] 值… 
            acl invalid_src  src          0.0.0.0/7 224.0.0.0/3
            acl invalid_src  src_port     0:1023
            acl local_dst    hdr(host) -i localhost
            返回的数据类型:
                boolean:布尔型值
                integer:整数
                IPv4 or IPv6:IP地址
                string:字符串
                data block:数据块
            ACL可以匹配识别的数据类型
                boolean:布尔型
                integer or integer range:整数或者一个整数的范围
                IP or network:IP或者网段
                string:字符串
                hex block:十六进制块
            ACL的标记:
                -i:忽略匹配内容的大小写
                -f:从文件中读取所要的匹配内空
                -m:使用特定的模式匹配
                -n:禁止DNS解析
                -M:加载一个相当于-f指定的文件,内容为健–值型调用
                -u:强制ACL使用的唯一ID号
                –:强制结束标记,也就是给相关的字符串进行非标记符进行转意
            选项
                匹配整数时可用的运算符
                    eq,lt,le,gt,ge
                字符串匹配:
                    exact match     (-m str):提取的字符串必须完全匹配
substring match (-m sub):在内查找图片,提取字符串,进行ACL匹配
prefix match    (-m beg):对匹配字符串的开头进行比较,匹配ACL
suffix match    (-m end):对匹配字符串的尾部进行比较,匹配ACL
subdir match    (-m dir):匹配一个路径(uri)的其中一段,以/分割取其中的某些段
domain match    (-m dom):匹配一个url,以.分割,取其中的特定段
            ACL标准:
                关于IP与端口的标准:
                    dst:目标IP
                    dst_port:目标端口
                    src:源IP
                    src_prot:源端口
                关于PATH的,也就是URI的相关标准:
                path:string    //提取请求中的URL路径,该路径以/开头,并在?之前结束
                    path     : exact string match
path_beg : prefix match
path_dir : subdir match
path_dom : domain match
path_end : suffix match
path_len : length match
path_reg : regex match
path_sub : substring match
                关于URI的相关标准:
                    url     : exact string match
url_beg : prefix match
url_dir : subdir match
url_dom : domain match
url_end : suffix match
url_len : length match
url_reg : regex match
url_sub : substring match
                关于请求头部的标准:
                    hdr([<name>[,<occ>]])     : exact string match
hdr_beg([<name>[,<occ>]]) : prefix match
hdr_dir([<name>[,<occ>]]) : subdir match
hdr_dom([<name>[,<occ>]]) : domain match
hdr_end([<name>[,<occ>]]) : suffix match
hdr_len([<name>[,<occ>]]) : length match
hdr_reg([<name>[,<occ>]]) : regex match
hdr_sub([<name>[,<occ>]]) : substring match
                示例:
                    acl valid_method method GET HEAD    //定义一个acl,标准为method,方法为GET和HEAD
                    http-request deny if ! valid_method   //对此acl进行操作,可以使用非
        blance:算法
            roundrobin:动态轮询
            static-rr:静态轮询
            leastconn:最小连接
            first:连接一台服务器到其负载最大值,再连接下一台服务器
            source:对源IP进行绑定,类似于nginx的hash与ip_hash
            uri:对uri左半部分进行hash,并由服务器总权重相除以后派发至某个挑出的服务器上
            url_param:对用户请求的uri的<param>部分参数值做为hash计算,并由服务器总权重相除以后溾发至某个挑出的服务器;通常用于追踪用户,以确保来自同一个用户的请求始终发往同一个Backend Server上
            hdr(<name>):对于每个http请求指定的头部做hash,并由服务器总权重相除后派发至挑选的服务器上,没有有效值的会被轮询调度
            rdp-chookie(<name>):也就是chookie绑定,对应的用户只会由对应的服务器进行响就,也只有此一个服务器去响应,当然了,那些进行动静分离的不算,如果没有检查到chookie,那么会进行轮询对backend进行挑选
        hash_type:定义使用的hash算法类型
            map-bashed:除权法,也就是静态算法
            consistents:一致性哈希算法,这个是一个动态算法
        bind:对端口进行绑定
            bind *:80   //对80端口进行绑定
        block:如果条件匹配就阻止第七层请求
            acl test_name hdr_reg(Status Code) 200
            block if ! test_name
        default-backend <backend>:设定默认的backend,用于frontend中;
            use_backend     dynamic  if  url_dyn
            use_backend     static   if  url_css url_img extension_img
            default_backend dynamic
        default-server:为backend中的各server设定默认选项
            default-server inter 1000 weight 13
        mode:设定实例的运行模式与协议
            tcp:基于四层代理,可代理mysql,ssh,ssl,等协议
            http:仅当代理的协议为http时使用
            health:工作为健康状态的响应模式,当连接请求到达时回应OK后即断开连接
        cookie:在backend开启基于cookie的长连接
            cookie <name> [ rewrite | insert | prefix ] [ indirect ] [ nocache ]
              [ postonly ] [ preserve ] [ httponly ] [ secure ]
              [ domain <domain> ]
[ maxidle <idle> ] [ maxlife <life> ]
            cookie JSESSIONID prefix
            cookie SRV insert indirect nocache
            cookie SRV insert postonly indirect
            cookie SRV insert indirect nocache maxidle 30m maxlife 8h
        compression algo <algorithm>:启用压缩,设定压缩算法
            identity:适用于在开发时测试使用
            gzip:压缩为gzip
            deflate:类似于gzip
            
            compression algo gzip
            compression type text/html text/plain
        compression type <mime type>:
        compression offload:
        enable:将一个代理启动,默认为启动,所以此指令通常不使用
        disable:将一个代理关闭,默认为启动,在进行灰度发布时可以将一个代理设置为disable
        errorfile <code> <file>:将HAProxy的错误返回为指定文件
            errorfile 400 /etc/haproxy/errorfiles/400badreq.http
            errorfile 408 /dev/null  # workaround Chrome pre-connect bug
            errorfile 403 /etc/haproxy/errorfiles/403forbid.http
            errorfile 503 /etc/haproxy/errorfiles/503sorry.http
        errorloc302 <code><url>:将HAProxy的错误重定向到指定页面
        errorloc303 <code><url>:
        http-check expect [!] <match> <pattern>:在特定的内容或者状态码下进行http的健康检测
            status <string>:检测响应码确切的字符串
            rstatus <regex>:检测响应码的匹配字符串
            string <string>:检测响应内空的确切字符串
            rstring <regex>检测响应内容的匹配字符串

            http-check expect status 200    //响应状态码为200时进行检测
            http-check expect ! string SQL\ Error   //响应内容为非”SQL Error”进行检测
            http-check expect ! rstatus ^5    //这个是非以5开头的响应码
            http-check expect rstring <!–tag:[0-9a-f]</html>   //检测在html之前是否有正确的十六进制标签
        http-request:七层访问控制
            http-request { allow | deny | tarpit | auth [realm <realm>] | redirect <rule> |
              add-header <name> <fmt> | set-header <name> <fmt> |
              del-header <name> | set-nice <nice> | set-log-level <level> |
              replace-header <name> <match-regex> <replace-fmt> |
              replace-value <name> <match-regex> <replace-fmt> |
              set-tos <tos> | set-mark <mark> |
              add-acl(<file name>) <key fmt> |
              del-acl(<file name>) <key fmt> |
              del-map(<file name>) <key fmt> |
              set-map(<file name>) <key fmt> <value fmt>
             }
             [ { if | unless } <condition> ]
            
            http-request replace-header Cookie foo=([^;]
);(.) foo=\1;ip=%bi;\2
            http-request replace-value X-Forwarded-For ^192.168.(.
)$ 172.16.\1

acl nagios src 192.168.129.3
acl local_net src 192.168.0.0/16
acl auth_ok http_auth(L1)
http-request allow if nagios
http-request allow if local_net auth_ok
http-request auth realm Gimme if local_net auth_ok
http-request deny
            
            acl auth_ok http_auth_group(L1) G1
            http-request auth unless auth_ok
        http_ response:修改响应报文
            http-response { allow | deny | add-header <name> <fmt> | set-nice <nice> |
                set-header <name> <fmt> | del-header <name> |
                replace-header <name> <regex-match> <replace-fmt> |
                replace-value <name> <regex-match> <replace-fmt> |
                set-log-level <level> | set-mark <mark> | set-tos <tos> |
                add-acl(<file name>) <key fmt> |
                del-acl(<file name>) <key fmt> |
                del-map(<file name>) <key fmt> |
                set-map(<file name>) <key fmt> <value fmt>
              }
              [ { if | unless } <condition> ]
        log:日志配置
            log global   //调用全局配置中的日志存储
            log <address> [len <length>] <facility> [<level> [<minlevel>]]  //自定义日志
            no log   //不启用日志
            log global
            
            log 127.0.0.1:514 local0 notice        
            log 127.0.0.1:514 local0 notice notice 
            log ${LOCAL_SYSLOG}:514 local0 notice 
        maxconn <conns>:指定配置HAProxy前端的最大并发连接
        option forwardfor [ except <network> ] [ header <name> ] [ if-none ]:开启报文头部的X-Forwarded-For选项
            
            backend www
            mode http
            option forwardfor header X-Client
        redirect location <loc> [code <code>] <option> [{if | unless} <condition>]
        redirect prefix   <pfx> [code <code>] <option> [{if | unless} <condition>]
        redirect scheme   <sch> [code <code>] <option> [{if | unless} <condition>]
        reqadd:在请求报文头部添加信息
            reqadd  <string> [{if | unless} <cond>]
        repadd:在响应报文头部添加信息
        reqdel:在请求报文头部添加信息
        repdel:在响应报文头部删除信息
        server:在backend中申明一个服务器
            server <name> <address>[:[port]] [param*]
            
            param:
                maxconn:当前server最大连接数
                backlog <backlog>:连接达到最大数的后援队列长度
                backup:将此服务器定义为sorryserver
                check:地当前server进行健康检测
                    addr:对地址进行检测
                    port:对端口进行检测
                    inter <delay>:检测时的延迟
                    rise <count>:连续多少次成功才会标记服务可用,默认为2
                    fall <count>:连续多少次失败才会标记失败,默认为3
                cookie <value>:为当前server指定其cookie值,用于实现基于cookie的会话黏性;
                disabled:标记为不可用;
                redir <prefix>:将发往此server的所有GET和HEAD类的请求重定向至指定的URL;
                weight <weight>:权重,默认为1;
            server first  10.1.1.1:1080 cookie first  check inter 1000
server second 10.1.1.2:1080 cookie second check inter 1000
server transp ipv4@
server backup ${SRV_BACKUP}:1080 backup
server www1_dc1 ${LAN_DC1}.101:80
server www1_dc2 ${LAN_DC2}.101:80
stats enable:开启状态页
        stats admin { if | unless } <cond>:定义状态页可以由那此主机登陆
            stats admin if localhost
        stats auth <user>:<passwd>:认证时的账号和密码,可使用多次;
        stats uri <prefix>:自定义stats page uri
        stats refresh <delay>:设定自动刷新时间间隔;
        stats realm <string>:配置一个输入提示
            配置示例:
listen stats
bind :9099
stats enable
stats realm HAPorxy\ Stats\ Page
stats auth admin:admin
stats admin if TRUE
    HAProxy实现的动静分离,使用keepalived实现其高可用性,使用stats page对HAProxy进行管理
        拓扑图:
           HAProxy浅说 
        此环境配置分为四大步
            配置backend
            配置frondend
            配置keepalived
            配置全栈ssl
        配置backend
            配置node3:
                yum -y install httpd php php-mysql showmount   //安装相关包
                vim /etc/httpd/conf/httpd.conf
                    #DocumentRoot “/var/www/html”
                vim /etc/httpd/conf.d/vhost.conf
                    <Directory /data>
   Allowoverride none
   require all granted
</Directory>
Listen *:8080
                    DirectoryIndex index.php index.html
<Virtualhost *:80>
   Documentroot /data/static
</Virtualhost>
<Virtualhost *:8080>
   Documentroot /data/dynamic
</Virtualhost>
                mkdir /data/{static,dynamic} -p
                vim /data/static/index.html
                    <h1>Web1:172.18.250.38</h1>
                vim /data/dynamicl/index.php
                    <?php
echo “172.18.250.38”;
   phpinfo();
?>
                systemctl start httpd
            配置node4
                yum -y install httpd php php-mysql mariadb-server  //安装相关包
                vim /etc/httpd/conf/httpd.conf
                    #DocumentRoot “/var/www/html”
               vim /etc/httpd/conf.d/vhost.conf
                   <Directory /data>
   Allowoverride none
   Require all granted
</Directory>
Listen *:8080
DirectoryIndex index.php index.html
<Virtualhost *:80>
   Documentroot /data/static
</Virtualhost>
<Virtualhost *:8080>
   Documentroot /data/dynamic
</Virtualhost>
                mkdir /data/{static,dynamic} -p
                vim /data/static/index.html
                    <h1>Web2:172.18.251.103</h1>
                vim /data/dynamicl/index.php
                    <?php
echo “172.18.251.103”;
   phpinfo();
?>
                systemctl start httpd
        配置frondend:
            配置node1:
                yum -y install httpd haproxy
                vim /var/www/html/index.html
                    <h1>I’m sorry</h1>
                vim /etc/haproxy/haproxy.cfg
                    global
   log         127.0.0.1 local2

   chroot      /var/lib/haproxy
   pidfile     /var/run/haproxy.pid
   maxconn     4000
   user        haproxy
   group       haproxy
   daemon

   stats socket /var/lib/haproxy/stats

defaults
   mode                    http
   log                     global
   option                  httplog
   option                  dontlognull
   option http-server-close
   option forwardfor       except 127.0.0.0/8
   option                  redispatch
   retries                 3
   timeout http-request    10s
   timeout queue           1m
   timeout connect         10s
   timeout client          1m
   timeout server          1m
   timeout http-keep-alive 10s
   timeout check           10s
   maxconn                 3000

listen stats_web *:3303
       stats enable
       stats realm HAProxy\ Basic
       stats refresh 5s
       stats uri /admin?stats
       stats auth admin:admin
       stats admin if TRUE
frontend  main *:80
       acl dynamic_web path_end .php
       use_backend static if ! dynamic_web
       use_backend dynamic if dynamic_web

backend static
   balance     roundrobin
   server      static1 172.18.250.38:80 check 
   server      static2 172.18.251.103:80 check
       server          sorry_web1 127.0.0.1:8080 check backup 
backend dynamic
       balance         roundrobin
       server          dynamic1 172.18.250.38:8080 check
       server          dynamic2 172.18.250.38:8080 check
       server          sorry_web2 127.0.0.1:8080       check backup
                systemctl start haproxy
                vim /etc/httpd/conf/httpd.conf 
                    #Listen 80
                    Listen 8080
                配置LVS_RS脚本,如下,两个节点相同
                    #!/bin/bash
VIP=”172.18.35.105″
netmask=”255.255.255.255″
device=”enp0s3″
case $1 in 
start)
       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/lo/arp_announce
       echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
       ifconfig lo:0 $VIP netmask $netmask broadcast $VIM up
       route add -host $VIP dev lo:0
       ;;
stop)
       ifconfig lo:0 down
       route del -host $VIP dev lo:0
       ;;
*)
       echo “Usage $(basename $0) {start|stop}”
       ;;
esac
配置node2:
                yum -y install haproxy httpd
                vim /etc/haproxy/haproxy.cfg
                    global
   log         127.0.0.1 local2

   chroot      /var/lib/haproxy
   pidfile     /var/run/haproxy.pid
   maxconn     4000
   user        haproxy
   group       haproxy
   daemon

   stats socket /var/lib/haproxy/stats

defaults
   mode                    http
   log                     global
   option                  httplog
   option                  dontlognull
   option http-server-close
   option forwardfor       except 127.0.0.0/8
   option                  redispatch
   retries                 3
   timeout http-request    10s
   timeout queue           1m
   timeout connect         10s
   timeout client          1m
   timeout server          1m
   timeout http-keep-alive 10s
   timeout check           10s
   maxconn                 3000

listen stats_web *:3303
       stats enable
       stats realm HAProxy\ Basic
       stats auth admin:admin
       stats uri /admin?stats
       stats refresh 5s
       stats admin if TRUE
frontend  main *:80
       acl dynamic_web path_end .php
       use_backend dynamic if dynamic_web
       use_backend static if ! dynamic_web

backend static
   balance     roundrobin
   server      static1 172.18.250.38:80 check
   server      static2 172.18.251.103:80 check
       server          sorry_web1      127.0.0.1:8080  check backup
backend dynamic
   balance     roundrobin
   server      dynamic1 172.18.250.38:8080 check
   server      dynamic2 172.18.251.103:8080 check
       server          sorry_web1      127.0.0.1:8080  check backup
                service haproxy start
                vim /etc/httpd/conf/httpd.conf
                    #Listen 80
                    Listen 8080
                service httpd start
        配置keepalived:
            配置node6
                yum -y install keepalived
                vim /etc/keepalived/keepalived.conf
                    ! Configuration File for keepalived

global_defs {
  notification_email {
    sysadmin@firewall.loc
  }
  notification_email_from root@localhost.con
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id CentOS7-node5
  vrrp_mcast_group4 224.0.0.18
}

vrrp_instance VI_1 {
   state MASTER
   interface enp0s3
   virtual_router_id 51
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
               172.18.35.105
   }
}

virtual_server 172.18.35.105 80 {
   delay_loop 6
   lb_algo wrr
   lb_kind dr
   nat_mask 255.255.255.255
   protocol TCP

   real_server 172.18.252.96 80 {
       weight 1
   }
   real_server 172.18.250.37 80 {
       weight 1
   }
}
virtual_server 172.18.35.105 3303 {
   delay_loop 6
   lb_algo wrr
   lb_kind dr
   nat_mask 255.255.255.255
   protocol TCP

   real_server 172.18.252.96 3303 {
       weight 1
   }
   real_server 172.18.250.37 3303 {
       weight 1
   }
}
            配置node6:
                yum -y install keepalived
                vim /etc/keepalived/keepalived.conf
                    ! Configuration File for keepalived

global_defs {
  notification_email {
    acassen@firewall.loc
  }
  notification_email_from root@localhost.com
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id CentOS7-node6
  vrrp_mcast_group4 224.0.0.18
}

vrrp_instance VI_1 {
   state BACKUP
   interface enp0s3
   virtual_router_id 51
   priority 98
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       172.18.35.105
   }
}

virtual_server 172.18.35.105 80 {
   delay_loop 6
   lb_algo wrr
   lb_kind DR
   nat_mask 255.255.255.255
   protocol TCP

   real_server 172.18.252.96 80 {
       weight 1
   }
   real_server 172.18.250.37 80 {
       weight 1
   }
}
virtual_server 172.18.35.105 3303 {
   delay_loop 6
   lb_algo wrr
   lb_kind DR
   nat_mask 255.255.255.255
   protocol TCP

   real_server 172.18.252.96 3303 {
       weight 1
   }
   real_server 172.18.250.37 3303 {
       weight 1
   }

                       

原创文章,作者:gaomei,如若转载,请注明出处:http://www.178linux.com/76267

(0)
gaomeigaomei
上一篇 2017-05-18
下一篇 2017-05-18

相关推荐

  • shell与kernel的理解

    Shell 的英文释义是外壳,与kernel 内核名词遥相呼应,一外一内,一壳一核。内核就像瑞士银行的金库,存放着客户的黄金等众多的(硬件)资产,闲杂人等(包括客户)当然是严格禁止入内的,而作为客户要存取金库中的资产则需要通过专门的特定管理人员代为操作完成,并把存取(操作)的结果呈现给客户。在Linux操作系统中,shell的职能就类似于金库的操作人员,客户…

    Linux干货 2016-02-14
  • Linux文件类型及把剩下的颜色标识

    Linux文件类型及bash下的颜色标识 Linux一切皆文件 查看文件类型的命令: 例如:列出ls的文件类型                file  /bin/ls 例如:粗略的列出文件类型           &n…

    Linux干货 2016-10-16
  • 简单shell脚本习题

    习题 作业 简单shell脚本习题 习题1 答案 习题2 答案 习题3 答案 习题4 答案 习题5 答案 习题6 答案 习题1 编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本, CPU型号,内存大小,硬盘大小。 答案 #!/bin/bash IPADDR=$(…

    Linux干货 2017-04-10
  • 磁盘管理、文件管理、系统管理

    分区管理工具:fdisk,parted,sfdisk fdisk:MBR模式,对于一块硬盘来说,最多只能管理15个分区; # fdisk -l [-u] [device…]:查看 # fdisk device 子命令:管理功能 p:显示已有分区 n:新建分区 d:删除 w:写入磁盘并退出 q:放弃更改并退出 m:获取帮助 l:列出分区id t:调…

    Linux干货 2017-12-15
  • linux中的权限和ACL

    linux中权限详解和ACL

    2017-11-18
  • 链接分析算法之:主题敏感PageRank

      前面的讨论提到。PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别。例如,当搜索“苹果”时,一个数码爱好者可能是想要看 iphone 的信息,一个果农可能是想看苹果的价格走势和种植技巧,而一个小朋友可能在找苹果的简笔画。理想情况下,应该为每个用户维护一套专用向量,但面对海量用户这种方法显然不可行。所…

    Linux干货 2016-02-17