标签:nload 账号 add 超时 def 必须 技术 节点 buffer
你们公司的会话保持(session共享)怎么做的?
# 开发做会话保持,将用户登录信息存储在redis,MySQL,文件共享存储...中
1.记录用户的登录状态(logined=1)
2.通过用户对应的user_id跟cookie结合,记录用户的登录状态(明确知道是哪个用户登录的)
3.不安全,如果知道别人的user_id,或者尝试别人的id
4.通过session的加密,来保护cookie
# 开发没有做会话保持,我们通过运维的方式做会话保持,nginx的upstream模块中的ip_hash调度算法,保证用户的请求一直发送到同一台机器
# 不过这么做有弊端...负载不均衡,所以我们公司,先让运维做会话保持,后面开发会写
# 什么是cookie?
cookie是后端服务器,传给浏览器的一段字符串,作用是用来记录用户登录的状态,和数据库中的user id结合,可
以保证知道是哪一个用户登录的。仅存储在浏览器。
# 什么是session?
session是后端服务器,传给浏览器的一段字符串,作用也是用来记录用户的登录状态(通过加密的方式保护
cookie,防止其他用户通过user id随意登录别人账号),存储在服务器[redis,mysql,file,mongodb,es,memcache...]
在Nginx官方模块提供的模块中,没有对负载均衡后端节点的健康检查模块,但可以使用第三方模块。
nginx_upstream_check_module
来检测后端服务的健康状态。
第三方模块项目地址:TP
# 模块写法
例如:
[root@lb01 conf.d]# cat proxy_web.conf
upstream web {
server 172.16.1.7:80 max_fails=2 fail_timeout=10s;
server 172.16.1.8:80 max_fails=2 fail_timeout=10s;
check interval=3000 rise=2 fall=3 timeout=1000 type=tcp;
#interval 检测间隔时间,单位为毫秒
#rise 表示请求2次正常,标记此后端的状态为up
#fall 表示请求3次失败,标记此后端的状态为down
#type 类型为tcp
#timeout 超时时间,单位为毫秒
}
server {
listen 80;
server_name web.drz.com;
location / {
proxy_pass http://web;
include proxy_params;
}
location /up { # 负载均衡状态
check_status; # 和nginx状态模块写法很像
}
}
##### 具体操作如下
# 1.安装依赖包
[root@lb01 ~]# yum install -y openssl-devel pcre-devel openssl-devel patch
# 2.下载官方的nginx包,和下载负载均衡健康检查的包
[root@lb01 ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz
[root@lb01 ~]# wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip
# 3.解压
[root@lb01 ~]# tar xf nginx-1.14.2.tar.gz
[root@lb02 ~]# unzip master.zip
# 4.进入nginx目录,打补丁(nginx的版本是1.14补丁就选择1.14的,p1代表在nginx目录,p0是不在nginx目录)
[root@lb02 ~]# cd nginx-1.14.2/
[root@lb02 nginx-1.14.2]# patch -p1 <../nginx_upstream_check_module-master/check_1.14.0+.patch
# 4.1进入目录生成
[root@lb01 ~]# cd nginx-1.14.2/
[root@lb02 nginx-1.14.2]# ./configure --prefix=/appinx-1.14.2 --user=www --group=www --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --add-module=/rootinx_upstream_check_module-master --with-cc-opt=‘-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC‘ --with-ld-opt=‘-Wl,-z,relro -Wl,-z,now -pie‘
# 5.编译和安装
[root@lb01 ~]# make && make install
# 6.做软连接
[root@lb01 ~]# ln -s /app/nginx-1.14.2/ /app/nginx
# 7.添加环境变量
[root@lb01 ~]# vim /etc/profile.d/nginx.sh
export PATH="/app/nginx/sbin:$PATH"
# 8.重新加载环境变量
[root@lb01 ~]# source /etc/profile.d/nginx.sh
# 9.创建用户
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
# 10.修改nginx的配置文件
user www;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
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 0;
keepalive_timeout 65;
#gzip on;
include /app/nginx/conf.d/*;
}
# 11.创建虚拟主机配置文件存放目录
[root@web01 ~]# mkdir /app/nginx/conf.d
# 12.配置文件添加模块
upstream qwe {
server 172.16.1.7;
server 172.16.1.8;
check interval=3000 rise=2 fall=3 timeout=1000 type=tcp;
}
server {
listen 80;
server_name www.wp.com admin.com;
location / {
proxy_pass http://qwe;
proxy_set_header Host $http_host;
}
location /up {
check_status;
}
}
# 13.检查语法
[root@web01 ~]# nginx -t
# 14.重现加载配置文件
[root@web01 ~]# nginx -s reload
## 最后访问网站
就比如增加nginx_upstream_check_module
模块
## 在你源码安装完之后
# 1.安装依赖包
[root@lb01 ~]# yum install -y patch openssl-devel
# 2.下载负载均衡健康检查的包
[root@lb01 ~]# wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip
# 3.解压
[root@lb01 ~]# tar xf nginx-1.14.2.tar.gz
[root@lb02 ~]# unzip master.zip
# 4.进入nginx目录,打补丁(nginx的版本是1.14补丁就选择1.14的,p1代表在nginx目录,p0是不在nginx目录)
[root@lb02 ~]# cd nginx-1.14.2/
[root@lb02 nginx-1.14.2]# patch -p1 <../nginx_upstream_check_module-master/check_1.14.0+.patch
# 4.1进入目录生成(一般在这需要什么模块就添加什么模块)
[root@lb01 ~]# cd nginx-1.14.2/
[root@lb01 ~]# ./configure --prefix=/app/nginx-1.14.2_new --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt=‘-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC‘ --with-ld-opt=‘-Wl,-z,relro -Wl,-z,now -pie‘ --user=www --group=www
# 5.编译和安装
[root@lb01 ~]# make && make install
# 6.查看
[root@lb01 ~]# cd /app/
[root@lb01 /app]# ll
total 0
lrwxrwxrwx 1 root root 18 May 29 01:13 nginx -> /app/nginx-1.14.2/
drwxr-xr-x 12 root root 165 May 29 01:25 nginx-1.14.2
drwxr-xr-x 6 root root 54 May 29 01:59 nginx-1.14.2_new
# 7.拷贝nginx配置文件到新的
[root@lb01 ~]# \cp /app/nginx/conf/nginx.conf /app/nginx-1.14.2_new/conf/
# 创建conf.d
[root@lb01 ~]# mkdir /app/nginx-1.14.2_new/conf.d/
[root@lb01 ~]# \cp /app/nginx/conf.d/* /app/nginx-1.14.2_new/conf.d/
# 8.拷贝pid到新的nginx
[root@lb01 ~]# cp /app/nginx/logs/nginx.pid /app/nginx-1.14.2_new/logs/
# 9.拷贝站点目录
[root@lb01 ~]# \cp -a /app/nginx/html/* /app/nginx-1.14.2_new/html/
# 10.给配置文件加上nginx_upstream_check_module模块
[root@lb01 ~]# vim /app/nginx-1.14.2_new/conf.d/php_lb.conf
upstream qwe {
server 172.16.1.7;
server 172.16.1.8;
check interval=3000 rise=2 fall=3 timeout=1000 type=tcp;
}
server {
listen 80;
server_name www.wp.com admin.com;
location / {
proxy_pass http://qwe;
proxy_set_header Host $http_host;
}
location /up {
check_status;
}
}
# 检查语法
[root@lb01 ~]# nginx -t
# 11.在其他虚拟机上写1秒访问一次的脚本
[root@web01 ~]# vim a.sh
#!/bin/bash
while true;do
status_code=`curl -I -m 10 -o /dev/l -s -w %{http_code} http://www.qwe.com`
if [ $status_code -eq 200 ];then
echo "$(date +%F-%T)_访问成功" >> /tmp/111.log
else
echo "$(date +%F-%T)_访问失败" >> /tmp/111.log
fi
sleep 1
done
# 12.执行并查看脚本
[root@web01 ~]# sh a.sh
[root@web01 ~]# tailf /tmp/111.log
2020-05-28-18:36:53_访问成功
2020-05-28-18:36:54_访问成功
。。。
# 13.删除老连接并创建新链接
[root@lb01 ~]# rm -rf /app/nginx && ln -s /app/nginx-1.14.2_new/ /app/nginx
### 最好reload下或者[root@lb01 /app]# nginx -s stop && nginx
### web01如果没有失败那就是添加完成了
状态模块也ok
必须要把负载均衡的健康模块带上和相对应的版本
# 1.查看nginx现有的模块(生成语句./configure)
[root@web01 suibian]# nginx -V
--prefix=/app/nginx-1.14.2_new --user=www --group=www --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --add-module=/root/nginx_upstream_check_module-master --with-cc-opt=‘-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC‘ --with-ld-opt=‘-Wl,-z,relro -Wl,-z,now -pie‘
# 2.下载新版本源码包
[root@lb01 ~]# wget http://nginx.org/download/nginx-1.16.1.tar.gz
# 3.解压
[root@lb01 ~]# tar xf nginx-1.16.1.tar.gz
# 4.进入目录并生成,给负载均衡健康模块打补丁。
[root@lb01 ~]# cd nginx-1.16.1/
[root@lb01 ~/nginx-1.16.1]# patch -p1 <../nginx_upstream_check_module-master/check_1.16.1+.patch
[root@lb01 ~/nginx-1.16.1]# ./configure --prefix=/app/nginx-1.16.1 --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt=‘-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC‘ --with-ld-opt=‘-Wl,-z,relro -Wl,-z,now -pie‘ --add-module=/source/nginx_upstream_check_module-master
# 5.编译和安装
[root@lb01 ~]# make && make install
# 6.查看
[root@lb01 ~]# ll /app/
total 0
lrwxrwxrwx 1 root root 22 May 29 02:24 nginx -> /app/nginx-1.14.2_new/
drwxr-xr-x 12 root root 165 May 29 01:25 nginx-1.14.2
drwxr-xr-x 12 root root 165 May 29 02:27 nginx-1.14.2_new
drwxr-xr-x 6 root root 54 May 29 04:37 nginx-1.16.1
# 7.拷贝配置文件
[root@lb01 ~]# \cp /app/nginx/conf/nginx.conf /app/nginx-1.16.1/conf/
# 创建conf.目录
[root@lb01 ~]# mkdir /app/nginx-1.16.1/conf.d
[root@lb01 ~]# cp /app/nginx/conf.d/* /app/nginx-1.16.1/conf.d/
# 8.拷贝pid
[root@lb01 ~]# cp /app/nginx/logs/nginx.pid /app/nginx-1.16.1/logs/
# 9.拷贝站点目录
[root@lb01 ~]# \cp -a /app/nginx/html/* /app/nginx-1.16.1/html/
# 10.执行并查看脚本 ## 这是写脚本的机子上
[root@web01 ~]# sh a.sh
[root@web01 ~]# tailf /tmp/111.log
2020-05-28-18:36:53_访问成功
2020-05-28-18:36:54_访问成功
....
# 11.删除以前的软链接并生成新版本的软链接
[root@lb01 ~]# rm -rf /app/nginx && ln -s /app/nginx-1.16.1/ /app/nginx
# 12.重新加载配置文件,或者启动马上重启(但是有一个失败的,不妨碍吧)
[root@lb01 ~]# nginx -s reload
[root@lb01 ~]# nginx -s stop && nginx
标签:nload 账号 add 超时 def 必须 技术 节点 buffer
原文地址:https://www.cnblogs.com/jkz1/p/13028077.html