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: global, defaults, frontend and backend。
- global
- 定义全局指令
- 需要定义
nuster cache onornuster nosql on,否则cache和nosql无法使用
- defaults
- 定义
frontend,backend的默认参数 - 可以在
frontendorbackendsection重新定义
- 定义
- frontend
- 定义监听端口等等面向用户的设置
- bankend
- 定义后端服务器等等设置
- 需要设置
nuster cache onornuster 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 3600nuster监听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 # 关闭所有进程