linux-Centos-7-64位:5、 nginx代理+sticky模块实现基于cookie的负载均衡

nginx 可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息。

准备工作:

1、安装必备工具:

编译环境gcc g++ 开发库之类的需要提前装好

$ yum -y install gcc gcc-c++ autoconf automake

安装过程中如果出现如下图错误:

原因:

dns服务器没有配置正确

解决办法:

①、打开文件/etc/resolv.conf在其中添加:

 nameserver 8.8.8.8
 nameserver 8.8.4.4
 search localdomain

②、然后重启网卡:使用命令: service network restart

如果是在虚拟机配置,那要把路由设置成和主机一致

$ yum -y install zlib zlib-devel openssl openssl-devel pcre-devel

说明:

pcre: 用来作地址重写的功能。

zlib:nginx 的gzip模块,传输数据打包,省流量(但消耗资源)。

openssl:提供ssl加密协议。

也可以先在线下下载:

pcre:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

zlib:http://zlib.net/

openssl:http://www.openssl.org/source/

2、新建一个系统级用户组和匿名用户,以及下面编译时使用

$ sudo groupadd -r nginx

$ sudo useradd -s /sbin/nologin -g nginx -r nginx-user

查看用户组及其成员

groups nginx-user

Nginx编译安装:

1、下载Nginx:http://nginx.org/en/download.html

2、下载sticky:http://download.csdn.net/detail/u014799292/9506315

在 usr/local/src 目录下创建 nginx 文件夹

mkdir nginx

将下载好的 nginx-1.9.15.tar.gz 放到 /mnt/share资源目录并复制到 /usr/local/src/nginx 文件夹下并解压,并进入解压后的nginx-1.9.15文件夹下

nginx-sticky-module-1.1.tar.gz 的做法也一样

cp /mnt/share/nginx-1.9.15.tar.gz /usr/local/nginx/
tar -zxvf nginx-1.9.15.tar.gz
cd nginx-1.9.15/

./configure 参数配置信息详情,可以通过 –help 查询

$ ./configure \                    #nginx启动
--prefix=/usr/local/nginx \             # 设定安装目录,默认使用 /usr/local/nginx。
--sbin-path=/usr/local/nginx/nginx \    # 设置nginx的可执行文件的路径,默认为prefix/sbin/nginx.
--conf-path=/etc/nginx/nginx.conf \     # 设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
--error-log-path=/var/log/nginx/error.log \     # 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log.
--http-log-path=/var/log/nginx/access.log \     # 设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的access_log指令。默认情况下,文件名 为prefix/logs/access.log.
--pid-path=/var/run/nginx.pid \         # 设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid.
--lock-path=/var/run/nginx.lock \       # 设定lock文件(nginx.lock)目录
--http-client-body-temp-path=/var/cache/nginx/client_temp \ # 设置客户端请求临时文件路径
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \        # 设置http proxy临时文件路径
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \    # 设置http fastcgi临时文件路径
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \        # 设置路径存储http uwsgi临时文件路径
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \          # 设置路径存储http scgi临时文件路径
--user=nginx \      #  设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody。
--group=nginx \     # 设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
--with-http_ssl_module \        # 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
--with-http_realip_module \     # 允许ngx_http_realip_module模块(mod_rpaf)
--with-http_addition_module \   # ..模块(mod_layout)
--with-http_sub_module \        # ..模块
--with-http_dav_module \        # ..模块(mod_dav)
--with-http_flv_module \        # ..(mod_flvx)
--with-http_mp4_module \        # ..模块(mod_mp4)
--with-http_gunzip_module \     # ..模块(mod_gunzip)
--with-http_gzip_static_module \        # ..模块(mod_dflate)
--with-http_random_index_module \       # ..模块(mod_autoindex)
--with-http_secure_link_module \        # ..模块
--with-http_stub_status_module \        # ..模块(mod_status)通过web界面查看时Nginx需要开启status模块
--with-http_auth_request_module \       # 允许ngx_http_auth_request_module模块
--with-http_xslt_module         # 允许ngx_http_xslt_module模块
--with-mail \       # 允许POP3/IMAP4/SMTP代理模块
--with-mail_ssl_module \        # 允许ngx_mail_ssl_module模块
--with-file-aio \   # 允许文件AIO支持
--with-ipv6 \       # 允许IP6代理支持
--with-http_spdy_module \   # 允许ngx_http_spdy_module模块1.9.5开始要把把--with-http_spdy_module换成--with-http_v2_module,不然报错
--with-cc-opt=‘-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic‘  # 设置C编译器参数
--without-http_charset_module       # 不使用ngx_http_charset_module模块
--without-http_gzip_module          # 不使用ngx_..模块
--without-http_ssi_module           # 不使用ngx_..模块
--without-http_userid_module        # 不使用ngx_..模块
--without-http_access_module        # 不使用ngx_..模块
--without-http_auth_basic_module    # 不使用ngx_..模块
--without-http_autoindex_module     # 不使用ngx_..模块
--without-http_geo_module           # 不使用ngx_..模块
--without-http_map_module           # 不使用ngx_..模块
--without-http_referer_module       # 不使用ngx_..模块
--without-http_rewrite_module       # 不使用ngx_..模块
--without-http_proxy_module         # 不使用ngx_..模块
--without-http_fastcgi_module       # 不使用ngx_..模块
--without-http_memcached_module     # 不使用ngx_..模块
--without-http_limit_zone_module    # 不使用ngx_..模块
--without-http_empty_gif_module     # 不使用ngx_..模块
--without-http_browser_module       # 不使用ngx_..模块
--without-http_upstream_ip_hash_module      # 不使用ngx_..模块
--with-http_perl_module         # 允许ngx_..模块
--with-perl_modules_path=PATH   # 设置perl模块路径
--with-perl=PATH        # 设置perl库文件路径
--http-log-path=PATH    # 设置access log文件路径
--without-http          # 不使用HTTP server功能
--without-mail_pop3_module      # 不允许ngx_..模块
--without-mail_imap_module      # 不允许ngx_..模块
--without-mail_smtp_module      # 不允许ngx_..模块
--with-google_perftools_module      # 允许ngx_..模块(调试用)
--with-cpp_test_module  # 允许ngx_..模块
--add-module=PATH       # 允许使用外部模块,以及路径
--with-cc=PATH          # 设置C编译器路径
--with-cpp=PATH         # 设置C预处理路径
--with-ld-opt=OPTIONS   # 设置连接文件参数
--with-cpu-opt=CPU      # 为指定CPU优化,可选参数有:
          pentium, pentiumpro, pentium3, pentium4,
          athlon, opteron, sparc32, sparc64, ppc64
--without-pcre          # 不使用pcre库文件
--with-pcre=DIR         # 设定PCRE库路径
--with-pcre-opt=OPTIONS # 设置PCRE运行参数
--with-md5=DIR          # 设定md5库文件路径
--with-md5-opt=OPTIONS  # 设置md5运行参数
--with-md5-asm          # 使用md5源文件编译
--with-sha1=DIR         # 设定sha1库文件路径
--with-sha1-opt=OPTIONS # 设置sha1运行参数
--with-sha1-asm         # 使用sha1源文件编译
--with-zlib=DIR         # 设定zlib库文件路径
--with-zlib-opt=OPTIONS # 设置zlib运行参数
--with-zlib-asm=CPU     # 使zlib对特定的CPU进行优化,可选参数:
          pentium, pentiumpro
--with-openssl=DIR      # 设定OpenSSL库文件路径
--with-openssl-opt=OPTIONS  # 设置OpenSSL运行参数
--with-debug            # 允许调试日志
--builddir=DIR          # 设定程序编译目录
--with-rtsig_module     # 允许rtsig模块
--with-select_module    # 允许select模块(一种轮询模式,不推荐用在高载环境)
--without-select_module # 不使用select模块
--with-poll_module      # 允许poll模块(一种轮询模式,不推荐用在高载环境)
--without-poll_module   # 不使用poll模块

nginx编译时不是功能加的越多越好,应该尽可能少编译模块,不用的最好不要加入。

编译好的nginx可通过 /usr/local/nginx/sbin/nginx -V 查看编译时的参数(具体路径更具实际情况而定)

现将下列参数加入 #文件夹要自己创建

./configure
--add-module=/usr/local/src/nginx/nginx-sticky-module-1.1 \
--with-http_ssl_module --with-http_stub_status_module --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid  --with-openssl=/usr/local/src/openssl/openssl-1.0.1s/ \

随后执行

make && make install

启动 nginx ,进入 /usr/local/nginx/sbin 目录 运行 并查看是否启动

./nginx
ps -ef | grep nginx

启动成功

重启nginx

cd /usr/local/nginx/sbin
./nginx -s reload

判断配置文件是否正确

cd  /usr/local/nginx/sbin
./nginx -t

关闭

  查询nginx主进程号

  ps -ef | grep nginx

  从容停止 kill -QUIT 主进程号

  快速停止 kill -TERM 主进程号

  强制停止 kill -9 nginx

  若nginx.conf配置了pid文件路径,如果没有,则在logs目录下

  kill -信号类型 ‘/usr/local/nginx/logs/nginx.pid’

升级

  1、先用新程序替换旧程序文件

  2、kill -USR2 旧版程序的主进程号或者进程文件名

    此时旧的nginx主进程会把自己的进程文件改名为.oldbin,然后执行新版nginx,此时新旧版本同时运行

  3、kill -WINCH 旧版本主进程号

  4、不重载配置启动新/旧工作进程

    kill -HUP 旧/新版本主进程号

    从容关闭旧/新进程

    kill -QUIT 旧/新进程号

    快速关闭旧/新进程

    kill -TERM 旧/新进程号

时间: 2024-08-07 17:01:15

linux-Centos-7-64位:5、 nginx代理+sticky模块实现基于cookie的负载均衡的相关文章

使用nginx sticky实现基于cookie的负载均衡

在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接.使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端是CDN,或者说一个局域网的客户同时访问服务器,导致出现服务器分配不均衡,以及不能保证每次访问都粘滞在同一台服务器.如果基于cookie会是一种什么情形,想想看, 每台电脑都会有不同的cookie,在保持长连接的同时还保证了服务器的压力均衡,nginx sticky值得推荐. 如果浏览器不支持coo

使用nginx sticky实现基于cookie的负载均衡【转】

在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接.使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端是CDN,或者说一个局域网的客户同时访问服务器,导致出现服务器分配不均衡,以及不能保证每次访问都粘滞在同一台服务器.如果基于cookie会是一种什么情形,想想看, 每台电脑都会有不同的cookie,在保持长连接的同时还保证了服务器的压力均衡,nginx sticky值得推荐. 如果浏览器不支持coo

使用nginx的ngx_upstream_jdomain模块实现k8s容器的负载均衡

使用背景最近一直在准备k8s上线事宜,目前已经在测试环境中全面部署并通过压力测试环境检验.离正式上线基本只剩下时间问题.我们目前测试环境中的容器负载均衡大量使用到了nginx,就是借助了ngx_upstream_jdomain模块,从而放弃了k8s官方的ingress. 在这里简单说下k8s的ingress.k8s官方的ingress controller其实也是通过nginx来实现的,但是Ingress本身依赖于service,它通过查询service的映射,来找到service后端的pod的

Linux CentOS搭建JDK+Mysql+Tomcat+Nginx负载均衡环境      

本文使用了Tomcat+Nginx环境,主要起到负载均衡的作用,使用Tomcat处理jsp后台程序,使用Nginx处理静态页面. 准备工作(下载软件版本,请自行百度下载) 安装包放至:/usr/local/src 安装地址:/usr/local/软件名 1.apache-tomcat-6.0.48 2.mysql-5.5.54 3.nginx-1.6.3 4.cmake-2.8.8 5.pcre-8.40 6.jdk-8u11-linux-x64 7.openssl-1.1.0d(https使用

在CentOS .65 64位安装OpenMeetings .3.0.1

OpenMeetings是一个多语言可定制的视频会议和协作系统.它支持音频.视频,能让你查看每个与会者的桌面.OpenMeetings还包含一个白板,通过白板可以导入各种格式的图片和涂鸦. 其特色功能是白板功能,可以演示doc,ppt,pdf,jpg,txt等众多格式文件. 下面我们进入安装过程. 注意: OpenMeetings需要OpenOffice或者LibreOffice的支持 所以安装系统的时候把桌面何JDK安装上 这里我安装系统的时候已经将开发包,桌面,办公套件(office),My

Window7 64位下Nginx配置https

一.安装Nginx 官方下载地址:http://nginx.org/en/download.html 直接下载1.7.1.zip的链接:http://nginx.org/download/nginx-1.7.1.zip 二.安装Openssl 官方下载的没弄明白怎么用,不过还是留下链接以备之后使用:http://www.openssl.org/source/ 感觉比较好用的:链接:http://pan.baidu.com/s/1kT9OcPT 密码:zg6p 三.生成密钥 安装完成Openssl

(win8 64位)Python安装新模块(使用easy_install)

使用Python尽心开发几乎无法不使用外部的库.模块.因此我们需要--方便快捷的为Python添加模块. 网上大部分的攻略指向easy_install,但是都没有完整地给出一个操作流程. 笔者的环境为win8 64位 + Python2.7 因此这里也默认读者已经安装好了Python2.7. 首先是安装easy_install.不确定是否安装过的同学先进行卸载: 卸载: 1.进入控制面板,添加/删除程序的页面,查看是否有easy_install.(用安装包.exe或.msi安装的可以以该方法卸载

windows(32位 64位)下python安装mysqldb模块

windows(32位 64位)下python安装mysqldb模块 www.111cn.net 编辑:mengchu9 来源:转载 本文章来给各位使用在此windows系统中的python来安装一个mysqldb模块教程,有需要了解学习的朋友可参考参考. 1.exe下载地址:http://www.codegood.com/archives/129 分为32位和64位,下载对应的exe即可 2.下载完后,双击exe安装即可 3.检查是否安装成功:如果安装成功,将没有任何提示,如下  代码如下 复

Nginx + Keepalived(主备模式)实现负载均衡高可用浅析

概述 目前关于负载均衡和高可用的架构方案能找到相当多且详尽的资料,此篇是自己学习相关内容的一个总结,防止将来遗忘再次重新查找资料,也避免踩相同的坑. 此次配置的负载均衡与高可用架构:Nginx + Keepalived(主备模式),Nginx 使用反向代理实现七层负载均衡. 众所周知,Nginx 是一款自由的.开源的.高性能HTTP服务器和反向代理服务器,也是一个IMAP.POP3.SMTP代理服务器. 也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行HTTP服务处理,也可以