https://hub.docker.com/r/nuster/nuster/

https://github.com/jiangwenyuan/nuster


NuSTER 是一个基于 HAProxy 的高性能 HTTP 缓存服务器和 RESTful NoSQL 缓存服务器,既可以用作类似 Varnish 或者 Nginx 那样的 HTTP 缓存服务器,来缓存动态或者静态的 HTTP 资源,也可以用作 RESTful NoSQL 缓存服务器, 用 HTTP POST/GET/DELETE 来 添加 /取得 /删除 Key/Value。


# docker

docker run -d  --net=host  --name tcp  --restart=always  --ulimit  nofile=50000:50000  -v /data/docker/nginx/nuster/tcp.txt:/etc/nuster/nuster.cfg:ro  nuster/nuster:latest  nuster -f  /etc/nuster/nuster.cfg


- labs

docker run -d  --net=host  --name tcp  --restart=always  --ulimit  nofile=50000:50000  -v /data/docker/nginx/nuster/tcp.txt:/usr/share/file/sys.alias:ro  nuster/nuster:latest  nuster -f  /usr/share/file/sys.alias


docker pull nuster/nuster:latest

docker tag  nuster/nuster   tcp

docker run -d --net=host --name tcp --restart=always -v /usr/local/etc/tcp.txt:/usr/share/file/sys.alias:ro  tcp nuster -f  /usr/share/file/sys.alias

touch -d "2000-01-01 00:00:00" /usr/local/etc/tcp.txt


--net=host 


docker logs -f --tail="30" cdn

docker exec -it tcp /bin/bash


apt-get update -y;

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

apt-get install -y wget vim net-tools curl git cron zip unzip procps

apt-get dist-upgrade -y 

apt-get upgrade -y 

apt autoremove    

apt clean

-debian10升级11

sed -i 's/buster\/updates/bullseye-security/g' /etc/apt/sources.list

sed -i 's/buster/bullseye/g' /etc/apt/sources.list 

apt-get remove  -y procps wget vim net-tools

> /root/.bash_history


docker commit -m="update" -a="htmltoo.com" tcp  hub.htmltoo.com:5000/http:tcp

docker push hub.htmltoo.com:5000/http:tcp


global
    nuster cache on data-size 100m
    nuster nosql on data-size 200m
    master-worker
    maxconn    20000
    ulimit-n   50000
defaults
    mode tcp
    retries 5
    timeout client  30s
    timeout connect 30s
    timeout server  30s
listen WEB-STATUS
   bind *:8888
   mode http
   stats uri /
   stats refresh 30s
   stats realm welcome login\ Haproxy 
   stats auth ihunter:wdq54321
   stats hide-version
   stats admin if TRUE


vim  /data/docker/nginx/nuster/slb.cfg

global
    nuster manager on uri /_/nuster purge-method MYPURGE
    nuster cache on data-size 100m
    nuster nosql on data-size 100m
    master-worker # since v3
    daemon
    maxconn 100000
    #nbproc 4        # 进程数量(可以设置多个进程提高性能) 
defaults
    retries 3
    option redispatch  # 当serverId对应的服务器挂掉后,强制定向到其他健康的服务器  
    option abortonclose  # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    timeout client  30s
    timeout connect 30s
    timeout server  30s
listen WEB-STATUS
   bind 0.0.0.0:8088
   mode http
   stats uri /     # 访问的uri:ip:8088/
   stats refresh 20s  # 统计页面自动刷新时间
   stats hide-version  # 隐藏HAProxy的版本号
   #stats admin if TRUE  # 管理界面,如果认证成功了,可通过webui管理节点
frontend fe1
    bind *:811
    default_backend be1
backend be1
    nuster cache on
    nuster rule all
    server s1 base-nginx-1:80
frontend db-frontend
   bind *:3396
   mode tcp
   maxconn 100000  # 最大链接数
   timeout connect 60s  # 连接超时 
   timeout client  30000  # 客户端超时
   default_backend db-backend
backend db-backend
   balance roundrobin  # 负载均衡算法,   leastconn: 最小连接算法 
   mode tcp
   server db 127.0.0.1:6033
   #server db1 127.0.0.1:3306  check weight 1 maxconn 8000 check inter 2000 rise 2 fall 3
   #server db1 127.0.0.1:3306  check weight 1 maxconn 8000 check inter 2000 rise 2 fall 3
   #server db2 127.0.0.1:3306  check weight 1 maxconn 8000 check inter 2000 rise 2 fall 3
   #server db3 127.0.0.1:3306  check weight 1 maxconn 8000 check inter 2000 rise 2 fall 3


应用: basic-> 添加服务: nuster-cache    => 配置缓存

镜像: nuster/nuster:latest

卷:

/etc/localtime:/etc/localtime:ro

/data/file:/data/file

/data/docker/nginx/nuster/cache.cfg:/etc/nuster/nuster.cfg:ro


应用: basic-> 添加服务: nuster-slb    => 配置SLB

镜像: nuster/nuster:latest

卷:

/etc/localtime:/etc/localtime:ro

/data/file:/data/file

/data/docker/nginx/nuster/slb.cfg:/etc/nuster/nuster.cfg:ro

端口: 80-80


配置文件里有四个基本的sections: globaldefaultsfrontend and backend

  • global
    • 定义全局指令
    • 需要定义nuster cache on or nuster nosql on,否则cache和nosql无法使用
  • defaults
    • 定义frontendbackend的默认参数
    • 可以在frontend or backend section重新定义
  • frontend
    • 定义监听端口等等面向用户的设置
  • bankend
    • 定义后端服务器等等设置
    • 需要设置nuster cache on or nuster nosql on, 否则该backend没有nosql或者nosql功能
    • 需要设置nuster rule

可以定义多个frontend or backend . 如果定义了nuster cache|nosql off或者没有nuster cache|nosql on|off, nuster就是一个HAProxy。

具体参考/doc下的HAProxy文档, 或者在线HAProxy文档


准备一个配置文件: nuster.cfg

global
    nuster manager on uri /_/nuster purge-method MYPURGE
    nuster cache on data-size 100m
    nuster nosql on data-size 100m
    master-worker # since v3
    daemon
    maxconn 100000
    #nbproc 4        # 进程数量(可以设置多个进程提高性能) 
defaults
    retries 3
    option redispatch  # 当serverId对应的服务器挂掉后,强制定向到其他健康的服务器  
    option abortonclose  # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    timeout client  30s
    timeout connect 30s
    timeout server  30s
listen WEB-STATUS
   bind 0.0.0.0:8088
   mode http
   stats uri /     # 访问的uri:ip:8088/
   stats refresh 20s  # 统计页面自动刷新时间
   stats hide-version  # 隐藏HAProxy的版本号
   #stats admin if TRUE  # 管理界面,如果认证成功了,可通过webui管理节点

frontend fe
    bind *:8080
    #bind *:4433 ssl crt example.com.pem alpn h2,http/1.1
    use_backend be2 if { path_beg /_kv/ }
    default_backend be1
backend be1
    nuster cache on
    nuster rule img ttl 1d if { path_beg /img/ }
    nuster rule api ttl 30s if { path /api/some/api }
    server s1 127.0.0.1:8081
    server s2 127.0.0.1:8082
backend be2
    nuster nosql on
    nuster rule r1 ttl 3600

nuster监听8080端口,接受HTTP请求。 /_kv/开头的请求分配到backend be2, 可以发送HTTP POST/GET/DELETE到/_kv/any_key 来 添加/取得/删除 Key/Value. 其他的请求都被分配到backend be1, 并且会被转发到服务器s1 or s2. 其中/img/*请求会被缓存1天,而/api/some/api会被缓存30秒。


vi /data/docker/nginx/nuster/cache.cfg

global
    nuster manager on uri /_/nuster purge-method MYPURGE
    nuster cache on data-size 100m
    nuster nosql on data-size 100m
    master-worker # since v3
    daemon
    maxconn 100000
    #nbproc 4        # 进程数量(可以设置多个进程提高性能) 
defaults
    retries 3
    option redispatch  # 当serverId对应的服务器挂掉后,强制定向到其他健康的服务器  
    option abortonclose  # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    timeout client  30s
    timeout connect 30s
    timeout server  30s
listen WEB-STATUS
   bind 0.0.0.0:8088
   mode http
   stats uri /     # 访问的uri:ip:8088/
   stats refresh 20s  # 统计页面自动刷新时间
   stats hide-version  # 隐藏HAProxy的版本号
   #stats admin if TRUE  # 管理界面,如果认证成功了,可通过webui管理节点

frontend fe1
    bind *:801
    default_backend be1
backend be1
    nuster cache on
    nuster rule all
    server s1 10.42.206.239:80
frontend fe2
    bind *:802
    default_backend be2
backend be2
    nuster cache on
    nuster rule all
    server s2 10.42.180.216:80
frontend fe3
    bind *:803
    default_backend be3
backend be3
    nuster cache on
    nuster rule all
    server s3 10.42.131.91:80
frontend fe4
    bind *:804
    default_backend be4
backend be4
    nuster cache on
    nuster rule all
    server s4 10.42.28.130:80
frontend fe5
    bind *:805
    default_backend be5
backend be5
    nuster cache on
    nuster rule all
    server s5 10.42.39.215:80
frontend fe6
    bind *:806
    default_backend be6
backend be6
    nuster cache on
    nuster rule all
    server s6 10.42.72.101:80
frontend fe7
    bind *:807
    default_backend be7
backend be7
    nuster cache on
    nuster rule all
    server s7 10.42.175.45:80
frontend fe8
    bind *:808
    default_backend be8
backend be8
    nuster cache on
    nuster rule all
    server s8 10.42.212.88:80
frontend fe9
    bind *:809
    default_backend be9
backend be9
    nuster cache on
    nuster rule all
    server s9 10.42.209.165:80


/data/docker/nginx/nuster/slb.cfg

global
    nuster manager on uri /_/nuster purge-method MYPURGE
    nuster cache on data-size 100m
    nuster nosql on data-size 100m
    master-worker # since v3
    daemon
    maxconn 100000
    #nbproc 4        # 进程数量(可以设置多个进程提高性能) 
defaults
    retries 3
    option redispatch  # 当serverId对应的服务器挂掉后,强制定向到其他健康的服务器  
    option abortonclose  # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    timeout client  30s
    timeout connect 30s
    timeout server  30s
listen WEB-STATUS
   bind 0.0.0.0:8088
   mode http
   stats uri /     # 访问的uri:ip:8088/
   stats refresh 20s  # 统计页面自动刷新时间
   stats hide-version  # 隐藏HAProxy的版本号
   #stats admin if TRUE  # 管理界面,如果认证成功了,可通过webui管理节点
   
frontend web-nuster
   bind *:80
   mode http
   default_backend nginx
backend nginx
   balance roundrobin
   mode http
   server s01 10.42.148.14:801
   server s02 10.42.148.14:802
   server s03 10.42.148.14:803
   server s04 10.42.148.14:804
   server s05 10.42.148.14:805
   server s06 10.42.148.14:806
   server s07 10.42.148.14:807
   server s08 10.42.148.14:808
   server s09 10.42.148.14:809
   server s11 10.42.43.130:801
   server s12 10.42.43.130:802
   server s13 10.42.43.130:803
   server s14 10.42.43.130:804
   server s15 10.42.43.130:805
   server s16 10.42.43.130:806
   server s17 10.42.43.130:807
   server s18 10.42.43.130:808
   server s19 10.42.43.130:809
   server s21 10.42.207.223:801
   server s22 10.42.207.223:802
   server s23 10.42.207.223:803
   server s24 10.42.207.223:804
   server s25 10.42.207.223:805
   server s26 10.42.207.223:806
   server s27 10.42.207.223:807
   server s28 10.42.207.223:808
   server s29 10.42.207.223:809
   server s31 10.42.81.227:801
   server s32 10.42.81.227:802
   server s33 10.42.81.227:803
   server s34 10.42.81.227:804
   server s35 10.42.81.227:805
   server s36 10.42.81.227:806
   server s37 10.42.81.227:807
   server s38 10.42.81.227:808
   server s39 10.42.81.227:809
   server s41 10.42.161.94:801
   server s42 10.42.161.94:802
   server s43 10.42.161.94:803
   server s44 10.42.161.94:804
   server s45 10.42.161.94:805
   server s46 10.42.161.94:806
   server s47 10.42.161.94:807
   server s48 10.42.161.94:808
   server s49 10.42.161.94:809


vi /data/docker/other/nuster/labs.cfg

global
    nuster manager on uri /_/nuster purge-method MYPURGE
    nuster cache on data-size 100m
    nuster nosql on data-size 100m
    master-worker # since v3
    daemon
    maxconn 100000
    #nbproc 4        # 进程数量(可以设置多个进程提高性能) 
defaults
    retries 3
    option redispatch  # 当serverId对应的服务器挂掉后,强制定向到其他健康的服务器  
    option abortonclose  # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    timeout client  30s
    timeout connect 30s
    timeout server  30s
listen WEB-STATUS
   bind 0.0.0.0:8088
   mode http
   stats uri /     # 访问的uri:ip:8088/
   stats refresh 20s  # 统计页面自动刷新时间
   stats hide-version  # 隐藏HAProxy的版本号
   #stats admin if TRUE  # 管理界面,如果认证成功了,可通过webui管理节点

frontend fe1
    bind *:8080
    default_backend be1
backend be1
    nuster cache on
    nuster rule all
    server s1 10.42.233.165:80
frontend web-nuster
   bind *:80
   mode http
   default_backend nginx
backend nginx
   balance roundrobin
   mode http
   server s1 127.0.0.1:8080


vim  /data/docker/nginx/nuster/db.cfg

global
    nuster manager on uri /_/nuster purge-method MYPURGE
    nuster cache on data-size 100m
    nuster nosql on data-size 100m
    master-worker # since v3
    daemon
    maxconn 100000
    #nbproc 4        # 进程数量(可以设置多个进程提高性能) 
defaults
    retries 3
    option redispatch  # 当serverId对应的服务器挂掉后,强制定向到其他健康的服务器  
    option abortonclose  # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    timeout client  30s
    timeout connect 30s
    timeout server  30s
listen WEB-STATUS
   bind 0.0.0.0:8088
   mode http
   stats uri /     # 访问的uri:ip:8088/
   stats refresh 20s  # 统计页面自动刷新时间
   stats hide-version  # 隐藏HAProxy的版本号
   #stats admin if TRUE  # 管理界面,如果认证成功了,可通过webui管理节点
frontend db-frontend
   bind *:3396
   mode tcp
   maxconn 100000  # 最大链接数
   timeout connect 60s  # 连接超时 
   timeout client  30000  # 客户端超时
   default_backend db-backend
backend db-backend
   balance roundrobin  # 负载均衡算法,   leastconn: 最小连接算法 
   mode tcp
   server db1 127.0.0.1:3306  check weight 1 maxconn 2000  check inter 2000 rise 2 fall 3
   server db2 127.0.0.1:3306  check weight 1 maxconn 2000  check inter 2000 rise 2 fall 3
   server db3 127.0.0.1:3306  check weight 1 maxconn 2000  check inter 2000 rise 2 fall 3


案例:

TCP负载均衡:

frontend mysql-lb
   bind *:3306
   mode tcp
   default_backend mysql-cluster
backend mysql-cluster
   balance roundrobin
   mode tcp
   server s1 10.0.0.101:3306
   server s2 10.0.0.102:3306
   server s3 10.0.0.103:3306


http/https负载均衡:

frontend web-nuster
   bind *:80
   #bind *:443 ssl crt XXX.pem
   mode http
   default_backend nginx
backend nginx
   balance roundrobin
   mode http
   server s1 10.42.206.239:80
   server s2 10.42.180.216:80
   server s3 10.42.131.91:80
   server s4 10.42.28.130:80
   server s5 10.42.39.215:80
   #server s10 10.0.0.101:8443 ssl verify none


HTTP cache server:

global
    nuster cache on data-size 200m
frontend fe
    bind *:8080
    default_backend be
backend be
    nuster cache on
    nuster rule all
    server s1 127.0.0.1:8081


RESTful NoSQL cache server:

frontend fe
    bind *:8080
    default_backend be
backend be
    nuster nosql on
    nuster rule r1 ttl 3600


Example

global
    nuster manager on uri /_/nuster purge-method MYPURGE
    nuster cache on data-size 100m
    nuster nosql on data-size 100m
    master-worker # since v3
    daemon
    maxconn 100000
    #nbproc 4        # 进程数量(可以设置多个进程提高性能) 
defaults
    retries 3
    option redispatch  # 当serverId对应的服务器挂掉后,强制定向到其他健康的服务器  
    option abortonclose  # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    timeout client  30s
    timeout connect 30s
    timeout server  30s
listen WEB-STATUS
   bind 0.0.0.0:8088
   mode http
   stats uri /     # 访问的uri:ip:8088/
   stats refresh 20s  # 统计页面自动刷新时间
   stats hide-version  # 隐藏HAProxy的版本号
   #stats admin if TRUE  # 管理界面,如果认证成功了,可通过webui管理节点
    
frontend web1
    bind *:8080
    mode http
    acl pathPost path /search
    use_backend app1a if pathPost
    default_backend app1b
backend app1a
    balance roundrobin
    # mode must be http
    mode http
    # http-buffer-request must be enabled to cache post request
    option http-buffer-request
    acl pathPost path /search
    # enable cache for this proxy
    nuster cache
    # cache /search for 120 seconds. Only works when POST/PUT
    nuster rule rpost key method.scheme.host.uri.body ttl 120 if pathPost
    server s1 10.0.0.10:8080
backend app1b
    balance     roundrobin
    mode http
    nuster cache on
    # cache /a.jpg, not expire
    acl pathA path /a.jpg
    nuster rule r1 ttl 0 if pathA
    # cache /mypage, key contains cookie[userId], so it will be cached per user
    acl pathB path /mypage
    nuster rule r2 key method.scheme.host.path.delimiter.query.cookie_userId ttl 60 if pathB
    # cache /a.html if response's header[cache] is yes
    http-request set-var(txn.pathC) path
    acl pathC var(txn.pathC) -m str /a.html
    acl resHdrCache1 res.hdr(cache) yes
    nuster rule r3 if pathC resHdrCache1
    # cache /heavy for 100 seconds if be_conn greater than 10
    acl heavypage path /heavy
    acl tooFast be_conn ge 100
    nuster rule heavy ttl 100 if heavypage tooFast
    # cache all if response's header[asdf] is fdsa
    acl resHdrCache2 res.hdr(asdf)  fdsa
    nuster rule resCache ttl 0 if resHdrCache1
    server s1 10.0.0.10:8080
frontend web2
    bind *:8081
    mode http
    default_backend app2
backend app2
    balance     roundrobin
    mode http
    # disable cache on this proxy
    nuster cache off
    nuster rule all
    server s2 10.0.0.11:8080
listen web3
    bind *:8082
    mode http
    nuster cache
    nuster rule everything
    server s3 10.0.0.12:8080
frontend nosql_fe
    bind *:9090
    default_backend nosql_be
backend nosql_be
    nuster nosql on
    nuster rule r1 ttl 3600


=======源代安装===========

Centos7 yum install git2.x: https://abc.htmltoo.com/thread-45620.htm

mkdir /data

cd /data

git clone https://github.com/jiangwenyuan/nuster.git

cd nuster

#make TARGET=linux2628

make TARGET=linux-glibc

make install PREFIX=/usr/local/nuster

vi  /data/nginx.cfg

global
    nuster manager on uri /_/nuster purge-method MYPURGE
    nuster cache on data-size 100m
    nuster nosql on data-size 100m
    master-worker # since v3
    daemon
    maxconn 100000
    #nbproc 4        # 进程数量(可以设置多个进程提高性能) 
defaults
    retries 3
    option redispatch  # 当serverId对应的服务器挂掉后,强制定向到其他健康的服务器  
    option abortonclose  # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    timeout client  30s
    timeout connect 30s
    timeout server  30s
listen WEB-STATUS
   bind 0.0.0.0:8088
   mode http
   stats uri /     # 访问的uri:ip:8088/
   stats refresh 20s  # 统计页面自动刷新时间
   stats hide-version  # 隐藏HAProxy的版本号
   #stats admin if TRUE  # 管理界面,如果认证成功了,可通过webui管理节点

frontend web-nuster
   bind *:80
   mode http
   default_backend nginx
backend nginx
   balance roundrobin
   mode http
   server s01 127.0.0.1:8081
   server s02 127.0.0.1:8082
   server s03 127.0.0.1:8083
   server s04 127.0.0.1:8084
   server s05 127.0.0.1:8085
  
frontend fe1
    bind *:8081
    default_backend be1
backend be1
    nuster cache on
    nuster rule all
    server s1 24.cndo.org:811
frontend fe2
    bind *:8082
    default_backend be2
backend be2
    nuster cache on
    nuster rule all
    server s2 24.cndo.org:812
frontend fe3
    bind *:8083
    default_backend be3
backend be3
    nuster cache on
    nuster rule all
    server s3 24.cndo.org:813
	
frontend fe4
    bind *:8084
    default_backend be4
backend be4
    nuster cache on
    nuster rule all
    server s4 24.cndo.org:814
	
frontend fe5
    bind *:8085
    default_backend be5
backend be5
    nuster cache on
    nuster rule all
    server s5 24.cndo.org:815

# 启动

nohup /usr/local/nuster/sbin/nuster -f  /opt/nuster/conf/nginx.cfg  >> /opt/nuster/logs/nuster.log 2>&1 &  

pkill -9 nuster # 关闭所有进程


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回