记录一次nginx+upstream+upsync+consul配置

1.Nginx安装

1.下载解压

wget http://nginx.org/download/nginx-1.23.4.tar.gz
​
tar zxvf nginx-1.23.4.tar.gz
​
cd nginx-1.23.4

2.下载相关第三方模块

upstream健康检查模块
wget https://github.com/xiaokai-wang/nginx_upstream_check_module/archive/refs/heads/master.zip

解压到nginx-1.23.4目录

upsync(TCP版本)
wget https://github.com/xiaokai-wang/nginx-stream-upsync-module/archive/refs/heads/master.zip

解压到nginx-1.23.4目录

upsync(HTTP版本)
wget https://github.com/weibocom/nginx-upsync-module/archive/refs/heads/master.zip

解压到nginx-1.23.4目录

upsync模块合并
wget https://github.com/CallMeFoxie/nginx-upsync/archive/refs/heads/master.zip

下载并解压合并包,并将对应版本剪切至对应位置

3.nginx编译

sudo yum install pcre-devel
yum install -y openssl openssl-devel
patch -p1 < nginx_upstream_check_module-master/check_1.16.1+.patch
./configure --prefix=/usr/local/nginx --with-stream --with-http_ssl_module --add-module=/home/nginx/nginx-1.23.4/nginx_upstream_check_module-master --add-module=/home/nginx/nginx-1.23.4/nginx-upsync-master
make && make install

4.检查模块是否安装成功

/usr/local/nginx/sbin/nginx -V

nginx version: nginx/1.23.4
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
configure arguments: --prefix=/usr/local/nginx --with-stream --add-module=/home/nginx/nginx-1.23.4/nginx_upstream_check_module-master --add-module=/home/nginx/nginx-1.23.4/nginx-upsync-master

--with-stream --add-module=/home/nginx/nginx-1.23.4/nginx_upstream_check_module-master --add-module=/home/nginx/nginx-1.23.4/nginx-upsync-master说明安装成功

2.下载安装Consul

wget https://releases.hashicorp.com/consul/1.16.1/consul_1.16.1_linux_amd64.zip
unzip consul_1.16.1_linux_amd64.zip

#指定解压后的运行文件路径以及访问ip

nohup /home/consul/consul agent -server -data-dir=/tmp/consul -bootstrap -ui -advertise=192.168.88.14 -client=192.168.88.14 > /dev/null 2>&1 &

下载完成后打开http://192.168.88.14:8500/ui/dc1/kv

设置对应配置,以及使用配置的相关API地址:KV Store - HTTP API | Consul | HashiCorp Developer

3.Nginx配置

1.nginx配置

/usr/local/nginx/conf/nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}

#TCP请求转发
include /usr/local/nginx/tcp.d/*.conf;
http {
	upstream backend {
        # 这里是consul的leader节点的HTTP端点
       upsync 192.168.88.14:8500/v1/kv/upstreams/app/ upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off;
       # consul访问不了的时候的备用配置
       upsync_dump_path /usr/local/nginx/conf/app.conf;
       # 这里是为了兼容Nginx的语法检查
       include /usr/local/nginx/conf/app.conf;
       check interval=5000 rise=2 fall=3 timeout=3000;
    }
}

/usr/local/nginx/conf/app.conf

server 192.168.88.239:8085 weight=1 max_fails=2 fail_timeout=10s;
server 192.168.88.15:8085 weight=1 max_fails=2 fail_timeout=10s;

2.tcp转发配置

/usr/local/nginx/tcp.d/stream.conf

stream {
    # 添加socket转发的代理
    upstream socket_proxy {
        #hash $remote_addr consistent;
        # 转发的目的地址和端口
		upsync 192.168.88.14:8500/v1/kv/tcp/app/ upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off;
		# consul访问不了的时候的备用配置
        upsync_dump_path /usr/local/nginx/tcp.d/tcp.conf;
        # 这里是为了兼容Nginx的语法检查
        include /usr/local/nginx/tcp.d/tcp.conf;
		server 192.168.88.155:5006 weight=5 max_fails=3 fail_timeout=30s;
    }

    # 提供转发的服务,即访问localhost:5050,会跳转至代理socket_proxy指定的转发地址
    server {
       listen 5008;
       proxy_connect_timeout 1s;
       proxy_timeout 3s;
       proxy_pass socket_proxy;
    }
}

4.启动nginx

启动:/usr/local/nginx/sbin/nginx

停止:/usr/local/nginx/sbin/nginx -s stop

重新加载配置: /usr/local/nginx/sbin/nginx -s reload

查看nginx进程:ps aux|grep nginx

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值