自定义hash
worker_processes 2;
events {
worker_connections 100000; #设置单个worker连接数
}
error_log /redis_2004/logs/error.log;
http {
#default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream swoole_server {
# ip_hash;
hash $key; # 用户id
server 192.168.200.140:9001;
server 192.168.200.140:9002;
server 192.168.169.140:9003;
server 192.168.169.140:9004;
}
server {
if ( $request_uri ~* ^\/.*uid=(\d+).* ) {
set $key $1;
}
location /swoole {
proxy_pass http://swoole_server;
}
}
}
平滑启动
1.安装upsync模块
wget https://github.com/weibocom/nginx-upsync-module/archive/v2.1.0.tar.gz
tar -zxvf v2.1.0.tar.gz
./configure --add-module=/redis_2004/file/nginx-upsync-module-2.1.0
make
2.将新的nginx替换老的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx2
rm -rf /usr/local/nginx/sbin/nginx
cp /redis_2004/file/nginx-1.17.4/objs/nginx /usr/local/nginx/sbin/
make upgrade
动态负载均衡
1.解压consul包
mv /redis_2004/17/consul /usr/local/bin
2.启动consul
consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -node=ali -bind=192.168.169.150 -ui -client=0.0.0.0
3.创建servers_test.conf文件
4.nginx配置
worker_processes 2;
worker_cpu_affinity auto; #自动绑定cpu跟进程的关系
events {
worker_connections 100000; #设置单个worker连接数
}
error_log /redis_2004/logs/error.log;
http {
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream swo_http_up {
server 192.168.200.140:9001;
upsync 127.0.0.1:8500/v1/kv/upstreams/swoole_test upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off;
upsync_dump_path /redis_2004/17/servers_test.conf;
include /redis_2004/17/servers_test.conf;
}
server {
listen 80;
server_name localhost;
location /swoole {
proxy_pass http://swo_http_up;
}
location / {
autoindex on;
root /redis_2004/16;
}
}
}
5.添加节点
curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}' http://127.0.0.1:8500/v1/kv/upstreams/swoole_test/192.168.200.140:9001
consul操作
删除
curl -X DELETE http://127.0.0.1:8500/
查看
curl http://127.0.0.1:8500/v1/kv/?recurse