tengine dyups模块动态更新upstream

目标

测试tengine 动态upstream的功能,为后续动态升级提供服务支持
该功能实时修改内存数据,无需reload

环境

  • centos 7 mini版
  • java 1.8 运行两个测试程序分别监听7079和7080端口
  • tengine2.1.2 最新版本已经去除动态upstream功能

安装步骤

安装基础环境

jemalloc-4.4.0.tar.bz2

 wget https://github.com/jemalloc/jemalloc/releases/download/4.4.0/jemalloc-4.4.0.tar.bz2
yum install bzip2
tar xjf jemalloc-4.4.0.tar.bz2
cd jemalloc-4.4.0
./configure
make && make install
echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
ldconfig
yum install gcc openssl-devel gd-devel pcre-devel libxml2-devel libxslt-devel GeoIP-devel perl-devel lua-devel -y

tengine安装

wget http://tengine.taobao.org/download/tengine-2.1.2.tar.gz
tar -zxvf tengine-2.1.2.tar.gz 
cd tengine-2.1.2
./configure --prefix=/root/web/nginx/tengine --enable-mods-static=all --with-http_upstream_check_module --with-http_v2_module --with-http_dyups_module --with-http_dyups_lua_api --with-http_sysguard_module

make && make install

tengine 配置

nginx.conf

user  nobody;
worker_processes  2;
error_log  logs/error.log  debug;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on;
    dyups_upstream_conf  vhost/upstream.conf;
    include vhost/upstream.conf;
    server {
        listen   80;
        location / {
            proxy_pass http://java;
        }
    }
    server {
        listen 8081;
        location / {
            dyups_interface;
        }
    }
}

在nginx.conf同级目录下创建vhost/upstream.conf文件

upstream java1 {
    server 127.0.0.1:7079;
}

upstream java2 {
    server 127.0.0.1:7080;
}

upstream java {
    server 127.0.0.1:7079;
    server 127.0.0.1:7080;
}

启动nginx

./sbin/nginx

配置文件修改后重载

./sbin/nginx -s reload

upstream测试

查看upstream list

curl 127.0.0.1:8081/list

res

java2
java
java1

查看upstream 明细

curl 127.0.0.1:8081/detail

res

java2
server 127.0.0.1:7080

java
server 127.0.0.1:7079
server 127.0.0.1:7080

java1
server 127.0.0.1:8088

修改指定upstream

curl -d "server 127.0.0.1:7079;" 127.0.0.1:8081/upstream/java1

res

success

查看修改后的效果

curl 127.0.0.1:8081/upstream/java1

res

server 127.0.0.1:7079

你可能感兴趣的:(tengine dyups模块动态更新upstream)