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-develyum install -y openssl openssl-develpatch -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