nginx 负载均衡安装及升级步骤

nginx 负载均衡安装及升级步骤nginx 负载均衡安装及升级步骤

大家好,又见面了,我是你们的朋友全栈君。

在两台机器上实现负载均衡及热部署,使用过程中,最大的坑是对依赖包的引入,nginx类似于python,需要各种各样的包,否则在配置nginx.conf文件时会报错。再者nginx版本更新很快,所以有问题尽快百度,别瞎捉摸
先在1.1.1.1服务器上为例安装nginx

  1. 使用非root用户安装,比如 guest
  2. 安装目录暂时设定为:/home/guest/nginxServer
  3. 使用guest用户登录
  4. cd /home/guest
  5. mkdir -p nginxServer/tar
  6. mkdir -p nginxServer/tool
  7. 需要的依赖包:

mogno-c-driver-0.3.1.tar.gz

nginx-1.9.3.tar.gz

nginx-gridfs-0.8.tar.gz

openssl-1.0.1e.tar.gz

zlib-1.2.8.tar.gz

这些依赖包请自行到网上下载。至于版本本人只知道nginx1.9以上能够支持socket通讯,1.8不行,其他的还不知道有什么影响。此外nginx1.9还不支持socket服务打印日志,要nginx14才行。还有,因为我需要使用mongodb数据库,所以需要引入mongo的依赖。

把这些依赖包放到/home/nginx/nginxServer/tar目录下。


  1. cd /home/nginx/nginxServer/tar
    解压tar包:

tar -xxvf	mogno-c-driver-0.3.1.tar.gz
tar -xxvf	nginx-1.9.3.tar.gz
tar -xxvf	nginx-gridfs-0.8.tar.gz
tar -xxvf	openssl-1.0.1e.tar.gz
tar -xxvf	zlib-1.2.8.tar.gz

  1. 把解压后的mongo-driver中的src目录cp到nginx-gridfs目录中的mongo-c-driver目录
  2. 安装nginx 注意:–前需要空格

cd /home/guest/nginxServer/tar/nginx-1.9.3

./configure --prefix=/home/guest/nginxServer/tool --with-pcre=/home/guest/nginxServer/tar/pcre-8.3.6 --with-openssl=/home/guest/nginxServer/tar/openssl-1.0.1e --with-zlib=/home/guest/nginxServer/tar/zlib-1.2.8 --with-http_stub_status_module --add-module=/home/guest/nginxServer/tar/nginx-gridfs-0.8 --with-stream

可以看出上面加入了很多模块,有‘=‘的是需要外面引入的依赖,不带的是此nginx版本自带的,但也要声明引入。
11. 10执行完后,执行


 make & make install 

如果没有报太多错,并且,在/home/guest/nginxServer/tool 目录下有四个目录 conf html logs sbin 说明安装成功
如果出现权限问题,在开通对应目录的权限即可。

  1. 修改启动端口,启动nginx服务
    检查nginx是否能启动成功,首先修改监听端口:

vim /home/guest/nginxServer/tool/conf/nginx.conf

这里我使用系统目前没有使用到的端口2555为例,当然了nginx有默认的端口,好像是2333,为防止已经被使用或之前已经安装了nginx,所以我们就改一个吧!修改位置如下:


server{
	listen	2555;
	server_name	localhost;
	....

保存后,启动nginx,命令如下:


#启动前检查配置是否正确
/home/guest/nginxServer/tool/sbin/nginx -t
#启动nginx
/home/guest/nginxServer/tool/sbin/nginx
  1. 下面添加服务,修改nginx配置如下(这里介绍以访问socket服务):

#修改nginx.conf
vim /home/guest/nginxServer/tool/conf/nginx.conf
增加配置如下,可在任意行加入:
stream{
	upstream xxweb_app{
		server 1.1.1.1:8080 weight=1;
		server 1.1.1.2:8080 weight=1;
	}
	server{
		listen 2444;
		proxy_pass xxweb_app;#这个xxweb_app要与上面的upstream xxweb_app保持一致,类似于方法名调用。
	}
}

保存后,重启nginx


#启动前检查配置是否正确
/home/guest/nginxServer/tool/sbin/nginx -t
#启动nginx
/home/guest/nginxServer/tool/sbin/nginx -s reload

  1. 观察nginx日志。监控一段时间:

tail -f /home.guest/nginxServer/tool/logs/access.log

可以在浏览器上访问服务,至于服务的url,nginx只是改变了ip和端口,url上其他的参数还是跟你之前访问url的内容一样。我这里使用的是tomcat服务,访问webservices接口,所以是


http://1.1.1.1:2444/tomcat1/servicetest?wsdl

流量器上多点几次,可以在nginx日志上看到会访问我们设置两个服务器,实现了服务站均衡。
15. 如果要实现nginx容灾,可以在1.1.1.2上在安装一个nginx,那么重复上面的步骤,实现外部服务可以调用我们这两个nginx服务,如果其中一个台挂了,另外一个也可以正常使用。
16. 如果要不停服务的更新服务,可以修改服务权重,然后重启,nginx的重启是无间断的,步骤如下:


#修改nginx.conf
vim /home/guest/nginxServer/tool/conf/nginx.conf
增加配置如下,可在任意行加入:
stream{
	upstream xxweb_app{
		server 1.1.1.1:8080 down;#修改的内容,别把权重改为0,会报错的
		server 1.1.1.2:8080 weight=1;
	}
	server{
		listen 2444;
		proxy_pass xxweb_app;#这个xxweb_app要与上面的upstream xxweb_app保持一致,类似于方法名调用。
	}
}

保存后,重启nginx


#启动前检查配置是否正确
/home/guest/nginxServer/tool/sbin/nginx -t
#启动nginx
/home/guest/nginxServer/tool/sbin/nginx -s reload

到这里,服务的请求都走1.1.1.2:8080这个服务了,这时候我们就可以更新1.1.1.1的服务了,注意要观察1.1.1.1的服务等其彻底关闭后再更新,放置有请求还在处理。
17. 服务更新好后,在把1.1.1.1:8080的服务权重改回来,并把1.1.1.2:8080的权重设为down,然后再重启,再更新1.1.1.2的服务,这样就实现了无间断更新服务的目的。
18. 下面介绍下访问http服务的配置:


upstream xyweb_app{
	server 1.1.1.1:8080 weight=1;
	server 1.1.1.2:8080 weight=1;
}
server{
	listen	9000;
	server_name	hostname;#这个服务名是服务器的域名,要在hosts文件中配置
	charset	utf-8;
	access_log	logs/access.log	main;
	location /{
		proxy_pass	http://xxweb_app;#与上面的xyweb_app保持一致
	}
}

  1. 最后介绍下,nginx的并发量配置
    也是在nginx.conf中配置,新启一行配置如下:

	#进程数 与机器核数对应,查看机器核数命令如下,这里是进程数 :cat /proc/cupinfo |grep "processor"|wc -l
	worker_processes 32;
	#单进程处理线程数 与命令 ulimit -n 的结果保持一致
	worker_rlimit_nofile	10240;

通常生成的机器配置很好的,可看出上面的处理线程数可达到1024032,打个半折有1024016个并发数,20万级别了,可处理的并发量还是很高的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105961.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nginx配置跨域访问,无法生效_页面跨域访问

    nginx配置跨域访问,无法生效_页面跨域访问由于浏览器同源策略的存在使得一个源中加载来自其它源中资源的行为受到了限制。即会出现跨域请求禁止。通俗一点说就是如果存在协议、域名、端口或者子域名不同服务端,或一者为IP地址,一者为域名地址(在跨域问题上,域仅仅是通过"url的首部"来识别而不会去尝试判断相同的IP地址对应着两个域或者两个域是否同属同一个IP),之中任意服务端旗下的客户端发起请求其它服务端资源的访问行动都是跨域的,而浏览器为了安全…

    2022年10月1日
    3
  • 数据库常见面试题(附答案)

    数据库常见面试题(附答案)1.事务四大特性原子性,要么执行,要么不执行隔离性,所有操作全部执行完以前,其它会话不能看到过程一致性,事务前后,数据总额一致持久性,一旦事务提交,对数据的改变就是永久的2.数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别脏读:事务B读取事务A还没有提交的数据不可重复读:两次事务读的数据不一致幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看

    2022年5月2日
    75
  • eclipse中启动Tomcat,8080端口被占用

    eclipse中启动Tomcat,8080端口被占用eclipse中启动Tomcat,8080端口被占用一、造成这样的原因很可能是你多起开启了Tomcat,并且没有终止。二、解决的方法:1.重启eclipse,或者重启电脑。2.更改端口号(默认8080)2.1需要更改的文件在你的本地、Tomcat\conf\server.xml。用工具(notepad++、Dreamweaver,记事本都可以、主要是方便定位)打开这个文件。2.2把…

    2025年7月21日
    1
  • hackbar功能简介

    hackbar功能简介SQL:提供三种数据库的sql查询语句,以及一些方便联合查询的语句XSS:提供xss攻击语句string.fromcharcode():将根据UNICODE值来输出xss语句htmlcharactor:将XSS语句转化为HTML字符实体(以&开头)alert(xss)statement:构建一条xss测…

    2022年5月18日
    73
  • vmware虚拟机版本不兼容_vm虚拟机与device不兼容怎么处理

    vmware虚拟机版本不兼容_vm虚拟机与device不兼容怎么处理引言:现在的windows操作系统对旧版本的软件兼容性非常差,很多老软件无法在win10下运行,因此我们需要建立虚拟机来运行老版软件。可是我们通过虚拟机安装XP系统时,有时候会出现546错误。经过本人网上搜索,发现这种问题还不在少数。正文:网上有一些大神啊,就开始支招了:“一定是你的安装包不对,换一个安装程序就可以了”、“VM重启几次就好了”。但是。。。。。这种解决方案通常是解决不了问题。瞎支招的…

    2022年8月16日
    11
  • mfcgetdlgitem_mfc queue

    mfcgetdlgitem_mfc queueGetDlgItem 根据一个对话窗或一个控件的ID,返回一个指向这个对话窗或控件的对象的指针

    2025年6月11日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号