Nginx负载均衡详解_nginx负载均衡配置详解

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

http {
# upstream模块:server_group_name 自定义服务组名
upstream server_group_name {
# server指令指定后端服务器的IP地址和端口
server localhost:8080;
server 192.168.xxx.xxx:8081 down;
server 192.168.xxx.xxx:8082 max_fails=3 fail_timeout=20s;
server 192.168.xxx.xxx:8083;
}

	# server模块
server {
    listen       80;
    server_name  localhost;

    location / {
     		# proxy\_pass:代理转发,将单体服务http://127.0.0.1:80,改为服务组名
     		proxy_pass http://server_group_name/;
     		# proxy\_redirect default;
    }
}

}


## 二、Nginx负载均衡实战


浏览效果:在浏览器访问:http://192.168.xxx.xxx/test.html时,由于配置的负载均衡会将请求平均分发到两台服务器中,访问时会出现不同界面。。


### 1、准备工作


这里准备两台tomcat服务器,一台服务器的端口为8080,另一台服务器的端口也为8080吧;


在这两台tomcat服务器的webapps目录中的 ROOT文件夹中创建一个 test.html文件,用于测试。



添加 html文件并加入内容

echo “

This is 8080 Port

” > /usr/local/tomcat8080/webapps/ROOT/test.html
echo “

This is 8080 Port -------

” > /usr/local/tomcat8080/webapps/ROOT/test.html


启动两个tomcat服务。



#启动tomcat8080
#启动tomcat8080:
/usr/local/tomcat8080/bin/startup.sh
#关闭tomcat8080:
#/usr/local/tomcat8080/bin/shutdown.sh


浏览器直接访问tomcat服务。


![在这里插入图片描述](https://img-blog.csdnimg.cn/175d1b55ec9b45aea93116915df43627.png)


### 2、Nginx负载均衡配置


**第一步:修改Nginx的配置文件**



> 
> vim /usr/local/nginx/conf/nginx.conf
> 
> 
> 


配置内容如下,以轮询策略为例:



worker_processes 1;

events {
worker_connections 1024;
}

http {
# upstream模块:自定义服务组名
upstream my_tomcat_server {
server 192.168.xxx.1xx:8080;
server 192.168.xxx.2xx:8080;
}

server {
	 listen       80;
     server_name  192.168.xxx.xxx;  # 指定虚拟主机的IP,或者外网域名

	 location / {
		  root   html;
      	  index  index.html index.htm; 
		  # proxy\_pass:代理转发,指定我们配置负载均衡的服务名my\_tomcat\_server
		  proxy_pass http://my_tomcat_server; 
		  # 增加下面内容
      	  proxy_set_header   Host             $host;
          proxy_set_header   X-Real-IP        $remote\_addr;
          proxy_set_header   X-Forwarded-For  $proxy\_add\_x\_forwarded\_for;
	 }
}

}


`注意:如果遇到 nginx 配置了https upstream,然后访问跳转失败,直接报404。`


解决方法:在nginx的配置文件中添加下面内容。



    # 增加下面内容
    proxy_set_header        Host                    $host;
    proxy_set_header        X-Real-IP               $remote\_addr;
    proxy_set_header        X-Forwarded-For         $proxy\_add\_x\_forwarded\_for;

**第二步:重启Nginx**


修改 nginx完之后,保存退出,重启Nginx。



> 
> /usr/local/nginx/sbin/nginx -s reload
> 
> 
> 



先执行停止命令再执行启动命令

[root@centos7 sbin]# /usr/local/nginx/sbin/nginx -s quit
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx


**第三步:浏览器访问OK**


在浏览器访问:http://192.168.xxx.xxx/test.html时,由于配置的负载均衡会将请求平均分发到到这两台服务器中,所以,访问时会出现不同界面。


![在这里插入图片描述](https://img-blog.csdnimg.cn/18f04ff8610846d2b7462cbd316c240c.png)


**第四步:关闭服务**



#关闭Nginx
/usr/local/nginx/sbin/nginx -s quit
#关闭tomcat
/usr/local/tomcat8080/bin/shutdown.sh


## 三、Nginx负载均衡分配策略介绍


### 1、轮询[默认]


轮询方式是Nginx负载默认的方式。



> 
> 该策略会使得每个请求按时间顺序逐一分配到不同的后端服务器,如果其中某个后端服务器 down 掉,该策略能自动从轮询列表中剔除该服务。
> 
> 
> 


轮询方式是将所有请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。



# upstream模块:自定义服务组名
upstream my_tomcat_server {
	 server localhost:8080; # 服务器的ip:port
	 server 192.168.xxx.xxx:8081;
}

### 2、权重(weight)



> 
> 该策略会指定每个服务的权重比例,权重越高被分配的客户端(请求)也就越多,weight 和访问比率成正比。主要用于后端服务器性能不均的情况。
> 
> 
> 


* weight指定轮询权值,默认值为1。通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能。


不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。



upstream my_tomcat_server {
	 server localhost:8080  weight=2;
	 server 192.168.xxx.xxx weight=5; # 权重设置为5,5>2,所以请求时会多跳转到这个服务
}

### 3、ip\_hash(哈希)



> 
> 该策略会按照每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器。有效解决了动态网页存在的session共享问题。
> 
> 
> 


源地址哈希法:根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。


`注意:`ip\_hash和 weight也可以配合使用。



upstream my_tomcat_server {
	ip_hash;
	server localhost:8080;
	server 192.168.xxx.xxx; 
}

ip_hash和 weight也可以配合使用

upstream my_tomcat_server {
	ip_hash;
	server localhost:8080  weight=1;
	server 192.168.xxx.xxx weight=2;
}

### 4、最少连接(least\_conn)



> 
> 该策略会将请求分配到连接数最少的服务上。
> 
> 
> 


为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**

![](https://img-blog.csdnimg.cn/img_convert/5b1783b73a654af35de683686a3d1aaa.png)

本份面试集锦涵盖了

*   **174 道运维工程师面试题**
*   **128道k8s面试题**
*   **108道shell脚本面试题**
*   **200道Linux面试题**
*   **51道docker面试题**
*   **35道Jenkis面试题**
*   **78道MongoDB面试题**
*   **17道ansible面试题**
*   **60道dubbo面试题**
*   **53道kafka面试**
*   **18道mysql面试题**
*   **40道nginx面试题**
*   **77道redis面试题**
*   **28道zookeeper**

**总计 1000+ 道面试题, 内容 又全含金量又高**

*   **174道运维工程师面试题**

> 1、什么是运维?

> 2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

> 3、现在给你三百台服务器,你怎么对他们进行管理?

> 4、简述raid0 raid1raid5二种工作模式的工作原理及特点

> 5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

> 6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

> 7、Tomcat和Resin有什么区别,工作中你怎么选择?

> 8、什么是中间件?什么是jdk?

> 9、讲述一下Tomcat8005、8009、8080三个端口的含义?

> 10、什么叫CDN?

> 11、什么叫网站灰度发布?

> 12、简述DNS进行域名解析的过程?

> 13、RabbitMQ是什么东西?

> 14、讲一下Keepalived的工作原理?

> 15、讲述一下LVS三种模式的工作过程?

> 16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

> 17、如何重置mysql root密码?

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.youkuaiyun.com/topics/618635766)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

> 12、简述DNS进行域名解析的过程?

> 13、RabbitMQ是什么东西?

> 14、讲一下Keepalived的工作原理?

> 15、讲述一下LVS三种模式的工作过程?

> 16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

> 17、如何重置mysql root密码?

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.youkuaiyun.com/topics/618635766)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值