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)
上一篇 2022年4月24日 上午10:00
下一篇 2022年4月24日 上午10:00


相关推荐

  • 鼠标右键没有git bash here,右键添加git bash here并增加图标

    鼠标右键没有git bash here,右键添加git bash here并增加图标突然发现自己鼠标右键没有 gitbashhere 或者安装之后就没有 gitbashhere 后面那种情况多半是没有默认装在 C 盘 我们装在其他盘的时候就需要自己去配置 gitgui 目前用不上 这里只讲 gitbashhere 网上一堆教程 说法不同大多不能用要么就很繁琐 反复测试下面方法最有效 1 win R 打开运行界面输入 regedit 并回车打开注册表 或者直接笔记本左下角搜索框搜索注册表 2 按照路径打开计算机 HKEY CLASSES ROOT Directory

    2026年3月19日
    5
  • 关于nginx的五大面试题_vue面试题大全

    关于nginx的五大面试题_vue面试题大全1、你近期使用过的Nginx的版本?生产环境使用Stableversion:最新稳定版注意各版本的区别:Nginx官网提供了三个类型的版本1、Mainlineversion:Mainline是Nginx目前主力在做的版本,可以说是开发版2、Stableversion:最新稳定版,生产环境上建议使用的版本3、Legacyversions:遗留的老版本的稳定版2、Nginx…

    2022年8月29日
    5
  • 扣子(Coze)案例:批量生成小红书心理学卡片

    扣子(Coze)案例:批量生成小红书心理学卡片

    2026年3月12日
    2
  • 细说php第四版笔记,细说PHP 学习笔记(二)

    细说php第四版笔记,细说PHP 学习笔记(二)一 课程内容 什么是 HTTP 协议 web 的工作原理 多种网站开发平台比较 LAMP 网站开发组合概述二 HTTP 协议 URL uniformResou 统一资源定位符 组成 协议 域名 主机 端口 附加信息 超文本传输协议 HTTP HyperTextTra 是互联网上应用最为广泛的一种网络协议 所有的 WWW 文件都必须遵守这个标准 设计 HTTP 最初

    2026年3月18日
    1
  • emWin实战教程V2.0_powershell实战指南

    emWin实战教程V2.0_powershell实战指南转 http://www.chuxue123.com/forum.php?mod=viewthread&tid=5363&extra=page%3D1   http://www.chuxue123.com/forum.php?mod=viewthread&tid=1504下面是自己的学习笔记1.emWIN与ucGUI关系,而大家所熟悉的ucGUI,其实就是emWin的一个版本

    2022年10月10日
    8
  • linux内核 lock free

    linux内核 lock free//同步问题:对共享数据的访问,需要同步,互斥。在中断,抢占,多CPU,多线程环境下尤其重要。 同步分为: 阻塞同步,非阻塞同步阻塞同步有许多实现方式了:mutex,semaphore.阻塞同步使用不当就可能造成死锁,活锁,优先级反转。非阻塞同步:(现在流行三种) waitfree 很难实现,思想是本线程有限步就完成,完全不用理其余线程。 lock

    2022年7月19日
    18

发表回复

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

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