143 lines
5.3 KiB
Plaintext
143 lines
5.3 KiB
Plaintext
# 安装consul
|
||
mkdir /data/consul
|
||
cd /data/consul
|
||
wget https://releases.hashicorp.com/consul/1.18.1/consul_1.18.1_linux_amd64.zip
|
||
|
||
** 注意解压后只有一个consul执行文件
|
||
unzip consul_1.18.1_linux_amd64.zip
|
||
|
||
|
||
# 启动consul
|
||
nohup /data/consul/consul agent -server -data-dir=/tmp/consul -bootstrap -ui -advertise=172.31.37.68 -client=172.31.37.68 > /dev/null 2>&1 &
|
||
|
||
|
||
|
||
# 安装nginx
|
||
mkdir /data
|
||
mkdir /data/nginx
|
||
cd /data/nginx
|
||
wget http://nginx.org/download/nginx-1.26.0.tar.gz
|
||
tar -zxvf nginx-1.26.0.tar.gz
|
||
|
||
yum -y install pcre-devel
|
||
yum install -y zlib-devel
|
||
|
||
cd /data/nginx/nginx-1.26.0
|
||
./configure --prefix=/data/nginx
|
||
|
||
安装:make
|
||
第一次安装:make install
|
||
|
||
日志:/data/nginx/logs
|
||
|
||
# 通过nginx-upsync-module和nginx_upstream_check_module模块进行编译
|
||
mkdir /data/nginx/modules
|
||
cd /data/nginx/modules
|
||
# 这里是Github的资源,不能用wget下载,具体是:
|
||
nginx-upsync-module需要下载release里面的最新版本:v2.1.3 【wget https://github.com/weibocom/nginx-upsync-module/archive/refs/tags/v2.1.3.tar.gz】
|
||
nginx_upstream_check_module需要下载整个项目的源码,主要用到靠近当前版本的补丁,使用patch命令进行补丁升级
|
||
|
||
|
||
cd /data/nginx/nginx-1.26.0
|
||
patch -p1 < /data/nginx/modules/nginx_upstream_check_module-master/check_1.20.1+.patch
|
||
./configure --prefix=/data/nginx --add-module=/data/nginx/modules/nginx_upstream_check_module-master --add-module=/data/nginx/modules/nginx-upsync-module-2.1.3
|
||
make
|
||
make install
|
||
|
||
|
||
# 下载upsync模块并且将其解压
|
||
wget -c https://github.com/weibocom/nginx-upsync-module/archive/master.zip
|
||
unzip nginx-upsync-module-master.zip
|
||
|
||
# 下载nginx
|
||
wget -c http://nginx.org/download/nginx-1.9.9.tar.gz
|
||
|
||
# 解压到当前目录
|
||
tar -zxvf nginx-1.9.9.tar.gz
|
||
|
||
# 配置一个nginx的用户以及用户组,-s /sbin/nologin nginx代表该用户是无法登录到主机的
|
||
groupadd nginx
|
||
useradd -g nginx -s /sbin/nologin nginx
|
||
|
||
# 这两个文件夹会在编译nginx时指定
|
||
mkdir -p /var/tmp/nginx/client/
|
||
mkdir -p /usr/local/nginx
|
||
|
||
# 进入到nginx的解压后文件夹的目录下
|
||
cd nginx-1.9.9
|
||
|
||
# 编译 nginx ,--prefix 代表nginx安装的目录。其中指定了用户和用户组,以及上面创建的文件夹并且添加了upsync模块,由于upsync解压在nginx同级目录下,所以这里使用..来指定到它
|
||
./configure --prefix=/data/nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre --add-module=/data/nginx/modules/nginx-upsync-module-2.1.3
|
||
make && make install
|
||
|
||
## 进入到刚刚nginx安装的目录,也就是/data/nginx目录中,进入conf目录中编辑conf目录的文件内容
|
||
|
||
upstream myserver {
|
||
server 127.0.0.1:11111;# 这个固定的,不用理
|
||
# springbootserver : key的值,upsync_timeout 超时时间3秒,upsync_interval 间隔时间 ,upsync_type 类型consul,strong_dependency 增强依赖
|
||
upsync 192.168.254.134:8500/v1/kv/upstreams/springbootserver upsync_timeout=3000ms upsync_interval=500ms upsync_type=consul strong_dependency=off;
|
||
# 将拉取下来的配置文件放在以下配置的目录中
|
||
upsync_dump_path /usr/local/nginx-1.9.9/conf/upsync_dump.conf;
|
||
|
||
}
|
||
# 将server中的location指定为刚刚创建的upstream(上游服务器)
|
||
location / {
|
||
proxy_pass http://myserver;
|
||
index index.html index.htm;
|
||
}
|
||
|
||
# /data/nginx/conf/nginx.conf部分片段
|
||
http {
|
||
include mime.types;
|
||
default_type application/octet-stream;
|
||
sendfile on;
|
||
keepalive_timeout 65;
|
||
|
||
upstream mixtest {
|
||
# 这里是consul的leader节点的HTTP端点
|
||
upsync 172.31.37.68:8500/v1/kv/upstreams/mixtest upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off;
|
||
# consul访问不了的时候的备用配置
|
||
upsync_dump_path /data/nginx/app.conf;
|
||
# 这里是为了兼容Nginx的语法检查
|
||
include /data/nginx/app.conf;
|
||
# 下面三个配置是健康检查的配置
|
||
check interval=1000 rise=2 fall=2 timeout=3000 type=http default_down=false;
|
||
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
|
||
check_http_expect_alive http_2xx http_3xx;
|
||
}
|
||
|
||
server {
|
||
listen 80;
|
||
server_name localhost;
|
||
location / {
|
||
proxy_pass http://app;
|
||
}
|
||
# 健康检查 - 查看负载均衡的列表
|
||
location /upstream_list {
|
||
upstream_show;
|
||
}
|
||
# 健康检查 - 查看负载均衡的状态
|
||
location /upstream_status {
|
||
check_status;
|
||
access_log off;
|
||
}
|
||
}
|
||
}
|
||
|
||
# /data/nginx/app.conf
|
||
server 127.0.0.1:9000 weight=1 fail_timeout=10 max_fails=3;
|
||
server 127.0.0.1:9001 weight=1 fail_timeout=10 max_fails=3;
|
||
|
||
# 进入到sbin目录下,启动nginx
|
||
./nginx
|
||
|
||
|
||
nohup ./app -p 10300 >/dev/null 2>&1 &
|
||
nohup ./app -p 10301 >/dev/null 2>&1 &
|
||
|
||
|
||
10301
|
||
|
||
curl -X PUT -d '{"weight":1, "max_fails":2, "fail_timeout":10}' http://172.31.37.68:8500/v1/kv/upstreams/app/127.0.0.1:10300
|
||
curl -X PUT -d '{"weight":1, "max_fails":2, "fail_timeout":10}' http://172.31.37.68:8500/v1/kv/upstreams/app/127.0.0.1:10301
|