zoukankan      html  css  js  c++  java
  • Nginx负载均衡基本使用

    Nginx负载均衡基本使用

    安装Nginx

    到官网下载Nginx:http://nginx.org/en/download.html

    安装Nginx之前需要安装一些依赖

    # gcc
    yum -y install gcc automake autoconf libtool make
    # g++
    yum install gcc gcc-c++
    # zlib,用于解压
    yum install tar
    

    右键复制链接,然后在centos中使用wget来下载,如果没有安装可以使用

    yum install wget
    

    命令来下载,下载完成以后使用

    wget http://nginx.org/download/nginx-1.18.0.tar.gz
    

    即可下载下来

    下载完成以后解压

    mkdir nginx
    cd nginx
    tar -zxvf nginx-1.18.0.tar.gz
    

    配置完成以后安装,使用命令编译和安装,一般情况下使用默认的配置即可,不加任何参数

    ./configure
    make
    make install
    

    安装完成以后,检查防火墙和端口是否已经开启。如果是云服务器,还需要检查云服务安全组是否开启对应端口,80端口是一定要开启的。

    检查防火墙是否开启

    firewall-cmd --state
    

    开启防火墙

    service firewalld start
    

    永久开启80端口

    firewall-cmd --zone=public --add-port=80/tcp --permanent
    

    重载防火墙,让设置生效

    firewall-cmd --reload
    

    查看所有开启的端口

    firewall-cmd --zone=public --list-ports
    

    配置负载均衡

    方式一,nginx.conf配置文件中配置:

    配置文件的目录在 /usr/local/nginx/conf下,nginx.conf便是配置文件,运行的目录是 /usr/local/nginx/sbin下,使用 sh 命令来运行。

    配置负载均衡的几种方式,最好查看一下官方文档,官方文档正确率最高---官方文档:https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/

    # 运行Nginx
    sh /usr/local/nginx/sbin/nginx
    

    pwd可以查看当前所在路径

    pwd
    

    关闭Nginx

    sh /usr/local/nginx/sbin/nginx -s stop
    

    重启Nginx,不推荐使用,推荐停止再开启

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

    查看Nginx服务是否正在运行

    ps aux | grep nginx
    

    使用vim编辑Nginx的配置文件

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

    在http下输入配置, 添加这个是使用ip_hash的机制来做为负载均衡的,默认为轮询方式。根据实际需要进行选择使用。

    配置负载均衡的几种方式---官方文档:https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/

    负载均衡方法 使用 作用
    默认 设置多个上游服务器即可 不需要会话长连接和session的情况下,可以使用默认的,轮询可以平均分配请求到每个服务器
    最少链接 minimum_conn; 哪台服务器连接最少就转发到活少的服务器上。
    会话持久 ip_hash; 如果需要连接到服务器就不分配到别的服务器,可以使用ip_hash,ip_hash用ip地址来分配服务器,类似java中的hashcode作用
    加权负载均衡 server [host] weight = 3 通过添加权重来设置,带权的服务器会分配到 权重/负载均衡服务器总数+权重 个请求
    http{
        ...
        # 设置上游服务器,这里的myservive可以自定义名称,不能使用下划线"_",可以使用减号“-”
        upstream myservice{
            # 负载均衡策略
       		ip_hash;
       		
       		# 例如 server www.baidu.com;
       		# server www.baidu.com weight = 3; 设置权重,权重越大,越优先处理请求。
       		# 可以指定转发的端口。
       		# 如果转发的带有本机,推荐使用localhost,不经过网卡127.0.0.1在IPV6中是::1。
       		server 服务1;
       		server 服务2;
       		server 服务n;
    	}
    	
    	server{
    	    # 需要监听的当前服务器的端口,
    	    listen 80;
    	    
    	    # 需要监听的请求域名或者ip
    	    server_name www.baidu.com;
    	    
    	    # 负载均衡到上游服务器中
    	    location / {
    	    
    	        # 名称是上游服务器的配置名,需要注意,如果有使用Cookie,服务器设置Cookie的域名使用的myservice,如果有自动获取域名,需要将这里的myservice修改为指定的域名。
    	        proxy_pass http://myservice;
    	    }
    	}
    	
    	server{
    	    ...
    	}
    }
    

    方式二,使用include引入外部文件:

    可以使用引入文件的形式,不需要频繁修改主配置文件:

    在 /usr/local/nginx/conf 文件夹下新建一个文件夹,如mytest

    mkdir mytest
    cd mytest
    

    创建配置文件 myservice.conf

    vim myservice.conf
    

    或者:

    touch myservice.conf
    vim myservice.conf
    

    配置文件中输入:

    upstream myservice{
        # 负载均衡策略
    	ip_hash;
       		
    	# 例如 server www.baidu.com;
       	# server www.baidu.com weight = 3; 设置权重,权重越大,越优先处理请求。
       	# 可以指定转发的端口,如 server www.baidu.com:8080 weight = 3;。
       	# 如果转发的带有本机,推荐使用localhost,不经过网卡。
       	# 127.0.0.1在IPV6中是::1。
       	server 服务1;
       	server 服务2;
       	server 服务n;
    }
    	
    server{
        # 需要监听的当前服务器的端口,
        listen 80;
        
        # 需要监听的请求域名或者ip
        server_name www.baidu.com;
        
        # 负载均衡到上游服务器中
        location / {
        
            # 名称是上游服务器的配置名
            proxy_pass http://myservice;
        }
    }
    

    在nginx.conf中引入该配置文件即可:

    http{
       ...
       
       include mytest/myservice.conf;
       
       server{
          ...
       }
       
       ...
    }
    

    重启Nginx服务即可实现负载均衡

    cd /usr/local/nginx/sbin
    sh nginx -s stop
    sh nginx
    

    配置80端口以后,直接访问Nginx所在的域名即可。

    初学者难免会遇到错误,欢迎指正,欢迎留言

  • 相关阅读:
    Rainmeter 雨滴桌面 主题分享
    行人检測之HOG特征(Histograms of Oriented Gradients)
    const和readonly差别
    ADB命令解析
    Java实现 蓝桥杯VIP 算法训练 接水问题
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
  • 原文地址:https://www.cnblogs.com/datom/p/14300545.html
Copyright © 2011-2022 走看看