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所在的域名即可。

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

  • 相关阅读:
    数据库的优化
    Java 10
    sleep()和yield()的区别
    mvc框架实现的流程,值得收藏
    MyEclipse项目出现红色!的原因
    The requested resource is not available的解决方案-转载博文
    web.xml详解(web-app_2_3.dtd)规范顺序
    EditText小写字母自动转换成大写(注:设置之后只能显示大写字母)
    Android GridView属性意义集合(转)
    Theme.AppCompat.Light无法找到问题(转)
  • 原文地址:https://www.cnblogs.com/datom/p/14300545.html
Copyright © 2011-2022 走看看